You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							174 lines
						
					
					
						
							4.7 KiB
						
					
					
				
			
		
		
	
	
							174 lines
						
					
					
						
							4.7 KiB
						
					
					
				| import { Options as AjvOptions } from "ajv"
 | |
| declare namespace build {
 | |
|   interface BaseSchema {
 | |
|     /**
 | |
|      * Schema title
 | |
|      */
 | |
|     title?: string;
 | |
|     /**
 | |
|      * Schema description
 | |
|      */
 | |
|     description?: string;
 | |
|     /**
 | |
|      * A comment to be added to the schema
 | |
|      */
 | |
|     $comment?: string;
 | |
|     /**
 | |
|      * Default value to be assigned when no value is given in the document
 | |
|      */
 | |
|     default?: any;
 | |
|     /**
 | |
|      * A list of example values that match this schema
 | |
|      */
 | |
|     examples?: any[];
 | |
|     /**
 | |
|      * Additional schema definition to reference from within the schema
 | |
|      */
 | |
|     definitions?: Record<string, Schema>
 | |
|     /**
 | |
|      * A set of schemas of which at least one must match
 | |
|      */
 | |
|     anyOf?: Partial<Schema>[];
 | |
|     /**
 | |
|      * A set of schemas which must all match
 | |
|      */
 | |
|     allOf?: Partial<Schema>[];
 | |
|     /**
 | |
|      * A conditional schema to check, controls schemas defined in `then` and `else`
 | |
|      */
 | |
|     if?: Partial<Schema>;
 | |
|     /**
 | |
|      * A schema to apply if the conditional schema from `if` passes
 | |
|      */
 | |
|     then?: Partial<Schema>;
 | |
|     /**
 | |
|      * A schema to apply if the conditional schema from `if` fails
 | |
|      */
 | |
|     else?: Partial<Schema>;
 | |
|     /**
 | |
|      * Open API 3.0 spec states that any value that can be null must be declared `nullable`
 | |
|      * @default false
 | |
|      */
 | |
|     nullable?: boolean;
 | |
|   }
 | |
| 
 | |
|   export interface RefSchema {
 | |
|     /**
 | |
|      * A json-pointer to a schema to use as a reference
 | |
|      */
 | |
|     $ref: string;
 | |
|   }
 | |
|   
 | |
|   export interface AnySchema extends BaseSchema {
 | |
|   }
 | |
| 
 | |
|   export interface StringSchema extends BaseSchema {
 | |
|     type: "string";
 | |
|     format?: string;
 | |
|   }
 | |
| 
 | |
|   export interface IntegerSchema extends BaseSchema {
 | |
|     type: "integer";
 | |
|   }
 | |
| 
 | |
|   export interface NumberSchema extends BaseSchema {
 | |
|     type: "number";
 | |
|   }
 | |
| 
 | |
|   export interface NullSchema extends BaseSchema {
 | |
|     type: "null";
 | |
|   }
 | |
| 
 | |
|   export interface BooleanSchema extends BaseSchema {
 | |
|     type: "boolean";
 | |
|   }
 | |
| 
 | |
|   export interface ArraySchema extends BaseSchema {
 | |
|     type: "array";
 | |
|     /**
 | |
|      * The schema for the items in the array
 | |
|      */
 | |
|     items: Schema | {}
 | |
|   }
 | |
| 
 | |
|   export interface TupleSchema extends BaseSchema {
 | |
|     type: "array";
 | |
|     /**
 | |
|      * The schemas for the items in the tuple
 | |
|      */
 | |
|     items: Schema[];
 | |
|   }
 | |
| 
 | |
|   type ObjectProperties = Record<string, Partial<Schema>> & {
 | |
|     anyOf?: ObjectProperties[];
 | |
|     allOf?: ObjectProperties[];
 | |
|     if?: ObjectProperties;
 | |
|     then?: ObjectProperties;
 | |
|     else?: ObjectProperties;
 | |
|   }
 | |
| 
 | |
|   export interface ObjectSchema extends BaseSchema {
 | |
|     type: "object";
 | |
|     /**
 | |
|      * Describe the properties of the object
 | |
|      */
 | |
|     properties?: ObjectProperties;
 | |
|     /**
 | |
|      * The required properties of the object
 | |
|      */
 | |
|     required?: string[];
 | |
|     /**
 | |
|      * Describe properties that have keys following a given pattern
 | |
|      */
 | |
|     patternProperties?: ObjectProperties;
 | |
|     /**
 | |
|      * Specifies whether additional properties on the object are allowed, and optionally what schema they should
 | |
|      * adhere to
 | |
|      * @default false
 | |
|      */
 | |
|     additionalProperties?: Schema | boolean;
 | |
|   }
 | |
| 
 | |
|   export type Schema =
 | |
|     | RefSchema
 | |
|     | StringSchema
 | |
|     | IntegerSchema
 | |
|     | NumberSchema
 | |
|     | NullSchema
 | |
|     | BooleanSchema
 | |
|     | ArraySchema
 | |
|     | TupleSchema
 | |
|     | ObjectSchema;
 | |
| 
 | |
|   export interface Options {
 | |
|     /**
 | |
|      * Optionally add an external definition to reference from your schema
 | |
|      */
 | |
|     schema?: Record<string, Schema>
 | |
|     /**
 | |
|      * Configure Ajv, which is used to evaluate conditional schemas and combined (anyOf) schemas
 | |
|      */
 | |
|     ajv?: AjvOptions
 | |
|     /**
 | |
|      * Optionally configure how the integer will be rounded
 | |
|      */
 | |
|     rounding?: 'ceil' | 'floor' | 'round'
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Build a stringify function using a schema of the documents that should be stringified
 | |
|  * @param schema The schema used to stringify values
 | |
|  * @param options The options to use (optional)
 | |
|  */
 | |
| declare function build(schema: build.AnySchema, options?: build.Options): (doc: any) => any;
 | |
| declare function build(schema: build.StringSchema, options?: build.Options): (doc: string) => string;
 | |
| declare function build(schema: build.IntegerSchema | build.NumberSchema, options?: build.Options): (doc: number) => string;
 | |
| declare function build(schema: build.NullSchema, options?: build.Options): (doc: null) => "null";
 | |
| declare function build(schema: build.BooleanSchema, options?: build.Options): (doc: boolean) => string;
 | |
| declare function build(schema: build.ArraySchema | build.TupleSchema, options?: build.Options): (doc: any[]) => string;
 | |
| declare function build(schema: build.ObjectSchema, options?: build.Options): (doc: object) => string;
 | |
| declare function build(schema: build.Schema, options?: build.Options): (doc: object | any[] | string | number | boolean | null) => string;
 | |
| 
 | |
| export = build;
 |