mirror of
https://github.com/Unleash/unleash.git
synced 2024-11-01 19:07:38 +01:00
6afc0a6954
* Wip: fix openapi spec
* Feat: add openapi enforcer for enforcing the generated schema
* Chore: Allow the example keyword in params
* Feat: add validator tests and fix some errors
* Use @apidevtools/swagger-parser for schema validation
* Wip: refactor tests for updated schema name
* Feat: update request params creation method
* Feat: add query params to state
* Refactor: move mapping test into separate function
* Refactor: rename request-parameters -> query-parameters
* Refactor: expose only finished query parameters
* Wip: fixup param types
* Refactor: remove unused types
* Chore: rename and cleanup
* Chore: cleanup
* Fix: Update snapshot
* Fix: use ?? Instead of paramToBool to get defaults
* Wip: generate query param object type from openapi params list
* Wip: use generated types for export query params
* Revert "Fix: use ?? Instead of paramToBool to get defaults"
This reverts commit 842567500b
.
Because we accept bools, strings, and numbers, this is the only way to
do it.
* Chore: update and pin json-schema-to-ts
* Fix: use `&` to merge types
* Update snapshot
* Chore: rename export-parameters-schema -> export-query-parameters
When it ends in `schema`, the tests expect it to be included in the
openapi index file.
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
// module to create typescript types from query param lists. Based on
|
|
// input in this GitHub issue:
|
|
// https://github.com/ThomasAribart/json-schema-to-ts/issues/82
|
|
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
|
|
|
|
import { O, L, A } from 'ts-toolbelt';
|
|
|
|
type OpenApiParam = {
|
|
readonly name: string;
|
|
readonly schema: JSONSchema;
|
|
// Parameter types:
|
|
// https://swagger.io/docs/specification/describing-parameters/#types
|
|
readonly in: 'query' | 'path' | 'header' | 'cookie';
|
|
};
|
|
|
|
type RecurseOnParams<
|
|
P extends readonly OpenApiParam[],
|
|
R extends O.Object = {},
|
|
> = {
|
|
continue: RecurseOnParams<
|
|
L.Tail<P>,
|
|
L.Head<P>['in'] extends 'query'
|
|
? R & {
|
|
[key in L.Head<P>['name']]: FromSchema<L.Head<P>['schema']>;
|
|
}
|
|
: R
|
|
>;
|
|
stop: A.Compute<R>;
|
|
}[P extends readonly [OpenApiParam, ...OpenApiParam[]] ? 'continue' : 'stop'];
|
|
|
|
export type FromQueryParams<P extends readonly OpenApiParam[]> =
|
|
RecurseOnParams<P>;
|