mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			986 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			986 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { OpenAPIV3 } from 'openapi-types';
 | |
| 
 | |
| export type ParameterType = OpenAPIV3.NonArraySchemaObjectType;
 | |
| 
 | |
| export type ParameterDetails<U> = Readonly<{
 | |
|     description: string;
 | |
|     type: ParameterType;
 | |
|     required?: boolean;
 | |
|     default?: U;
 | |
|     enum?: Readonly<[U, ...U[]]>;
 | |
|     example?: U;
 | |
| }>;
 | |
| 
 | |
| export type Parameters = {
 | |
|     [parameterName: string]: ParameterDetails<unknown>;
 | |
| };
 | |
| 
 | |
| const toParamObject = (
 | |
|     name: string,
 | |
|     details: ParameterDetails<unknown>,
 | |
| ): OpenAPIV3.ParameterObject => ({
 | |
|     name,
 | |
|     example: details.example,
 | |
|     description: details.description,
 | |
|     required: details.required,
 | |
|     schema: {
 | |
|         type: details.type,
 | |
|         enum: details.enum as unknown as any[],
 | |
|         default: details.default,
 | |
|     },
 | |
|     in: 'query',
 | |
| });
 | |
| 
 | |
| export const createQueryParameters = (params: {
 | |
|     [parameterName: string]: ParameterDetails<unknown>;
 | |
| }): OpenAPIV3.ParameterObject[] =>
 | |
|     Object.entries(params).map(([name, deets]) => toParamObject(name, deets));
 |