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.
		
		
		
		
		
			
		
			
				
					118 lines
				
				2.8 KiB
			
		
		
			
		
	
	
					118 lines
				
				2.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								const shared = (root) => {
							 | 
						||
| 
								 | 
							
								    const sch = {
							 | 
						||
| 
								 | 
							
								        nullable: { type: "boolean" },
							 | 
						||
| 
								 | 
							
								        metadata: {
							 | 
						||
| 
								 | 
							
								            optionalProperties: {
							 | 
						||
| 
								 | 
							
								                union: { elements: { ref: "schema" } },
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            additionalProperties: true,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    if (root)
							 | 
						||
| 
								 | 
							
								        sch.definitions = { values: { ref: "schema" } };
							 | 
						||
| 
								 | 
							
								    return sch;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								const emptyForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const refForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        ref: { type: "string" },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const typeForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        type: {
							 | 
						||
| 
								 | 
							
								            enum: [
							 | 
						||
| 
								 | 
							
								                "boolean",
							 | 
						||
| 
								 | 
							
								                "timestamp",
							 | 
						||
| 
								 | 
							
								                "string",
							 | 
						||
| 
								 | 
							
								                "float32",
							 | 
						||
| 
								 | 
							
								                "float64",
							 | 
						||
| 
								 | 
							
								                "int8",
							 | 
						||
| 
								 | 
							
								                "uint8",
							 | 
						||
| 
								 | 
							
								                "int16",
							 | 
						||
| 
								 | 
							
								                "uint16",
							 | 
						||
| 
								 | 
							
								                "int32",
							 | 
						||
| 
								 | 
							
								                "uint32",
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const enumForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        enum: { elements: { type: "string" } },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const elementsForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        elements: { ref: "schema" },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const propertiesForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        properties: { values: { ref: "schema" } },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: {
							 | 
						||
| 
								 | 
							
								        optionalProperties: { values: { ref: "schema" } },
							 | 
						||
| 
								 | 
							
								        additionalProperties: { type: "boolean" },
							 | 
						||
| 
								 | 
							
								        ...shared(root),
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const optionalPropertiesForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        optionalProperties: { values: { ref: "schema" } },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: {
							 | 
						||
| 
								 | 
							
								        additionalProperties: { type: "boolean" },
							 | 
						||
| 
								 | 
							
								        ...shared(root),
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const discriminatorForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        discriminator: { type: "string" },
							 | 
						||
| 
								 | 
							
								        mapping: {
							 | 
						||
| 
								 | 
							
								            values: {
							 | 
						||
| 
								 | 
							
								                metadata: {
							 | 
						||
| 
								 | 
							
								                    union: [propertiesForm(false), optionalPropertiesForm(false)],
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const valuesForm = (root) => ({
							 | 
						||
| 
								 | 
							
								    properties: {
							 | 
						||
| 
								 | 
							
								        values: { ref: "schema" },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    optionalProperties: shared(root),
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const schema = (root) => ({
							 | 
						||
| 
								 | 
							
								    metadata: {
							 | 
						||
| 
								 | 
							
								        union: [
							 | 
						||
| 
								 | 
							
								            emptyForm,
							 | 
						||
| 
								 | 
							
								            refForm,
							 | 
						||
| 
								 | 
							
								            typeForm,
							 | 
						||
| 
								 | 
							
								            enumForm,
							 | 
						||
| 
								 | 
							
								            elementsForm,
							 | 
						||
| 
								 | 
							
								            propertiesForm,
							 | 
						||
| 
								 | 
							
								            optionalPropertiesForm,
							 | 
						||
| 
								 | 
							
								            discriminatorForm,
							 | 
						||
| 
								 | 
							
								            valuesForm,
							 | 
						||
| 
								 | 
							
								        ].map((s) => s(root)),
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const jtdMetaSchema = {
							 | 
						||
| 
								 | 
							
								    definitions: {
							 | 
						||
| 
								 | 
							
								        schema: schema(false),
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    ...schema(true),
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.default = jtdMetaSchema;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=jtd-schema.js.map
							 |