mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add tooling/docs for auto-generating API hooks.
This commit is contained in:
parent
b7439cbd17
commit
de284c2bf6
@ -16,6 +16,22 @@ Then, run `npm start` to start the development server. Launch the Qt UI with
|
|||||||
`--new-map --dev` to connect the webview to the development server, or navigate
|
`--new-map --dev` to connect the webview to the development server, or navigate
|
||||||
to http://localhost:3000 in your browser.
|
to http://localhost:3000 in your browser.
|
||||||
|
|
||||||
|
## Regenerating the API stubs
|
||||||
|
|
||||||
|
The backend uses FastAPI which exposes `/openapi.json`. This is consumed by
|
||||||
|
`@rtk-query/codegen-openapi` to automatically generate the API stubs in
|
||||||
|
`src/api/liberationApi.ts`.
|
||||||
|
|
||||||
|
If you make a change to the API surface the typescript API will need to be
|
||||||
|
regenerated. To do this, first launch Liberation (to start the backend) and run
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
npm run regenerate-api
|
||||||
|
```
|
||||||
|
|
||||||
|
See https://redux-toolkit.js.org/rtk-query/usage/code-generation for more
|
||||||
|
information.
|
||||||
|
|
||||||
## Available Scripts
|
## Available Scripts
|
||||||
|
|
||||||
In the project directory, you can run:
|
In the project directory, you can run:
|
||||||
|
|||||||
12
client/openapi-config.ts
Normal file
12
client/openapi-config.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { ConfigFile } from "@rtk-query/codegen-openapi";
|
||||||
|
|
||||||
|
const config: ConfigFile = {
|
||||||
|
schemaFile: "http://[::1]:5000/openapi.json",
|
||||||
|
apiFile: "./src/api/baseApi.ts",
|
||||||
|
apiImport: "baseApi",
|
||||||
|
outputFile: "./src/api/liberationApi.ts",
|
||||||
|
exportName: "liberationApi",
|
||||||
|
hooks: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
1126
client/package-lock.json
generated
1126
client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -31,6 +31,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
"build": "react-scripts build && generate-license-file --input package.json --output build/NOTICE",
|
"build": "react-scripts build && generate-license-file --input package.json --output build/NOTICE",
|
||||||
|
"regenerate-api": "rtk-query-codegen-openapi ./openapi-config.ts",
|
||||||
"prepare": "eslint src && license-checker --onlyAllow \"MIT;Apache-2.0;CC0-1.0;BSD-3-Clause;ISC;Custom: https://github.com/tmcw/jsonlint;BSD-2-Clause;Hippocratic-2.1;BSD*;WTFPL\" --excludePrivatePackages --production",
|
"prepare": "eslint src && license-checker --onlyAllow \"MIT;Apache-2.0;CC0-1.0;BSD-3-Clause;ISC;Custom: https://github.com/tmcw/jsonlint;BSD-2-Clause;Hippocratic-2.1;BSD*;WTFPL\" --excludePrivatePackages --production",
|
||||||
"test": "react-scripts test",
|
"test": "react-scripts test",
|
||||||
"eject": "react-scripts eject",
|
"eject": "react-scripts eject",
|
||||||
@ -55,6 +56,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@rtk-query/codegen-openapi": "^1.0.0-alpha.1",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^3.2.0",
|
"@trivago/prettier-plugin-sort-imports": "^3.2.0",
|
||||||
"@types/leaflet": "^1.7.9",
|
"@types/leaflet": "^1.7.9",
|
||||||
"@types/redux-logger": "^3.0.9",
|
"@types/redux-logger": "^3.0.9",
|
||||||
@ -64,6 +66,7 @@
|
|||||||
"generate-license-file": "^1.3.0",
|
"generate-license-file": "^1.3.0",
|
||||||
"license-checker": "^25.0.1",
|
"license-checker": "^25.0.1",
|
||||||
"react-scripts": "5.0.0",
|
"react-scripts": "5.0.0",
|
||||||
|
"ts-node": "^10.7.0",
|
||||||
"wait-on": "^6.0.1"
|
"wait-on": "^6.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
7
client/src/api/baseApi.ts
Normal file
7
client/src/api/baseApi.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { HTTP_URL } from "./backend";
|
||||||
|
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
||||||
|
|
||||||
|
export const baseApi = createApi({
|
||||||
|
baseQuery: fetchBaseQuery({ baseUrl: HTTP_URL }),
|
||||||
|
endpoints: () => ({}),
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user