UNPKG

@baqhub/sdk

Version:

The official JavaScript SDK for the BAQ federated app platform.

101 lines (100 loc) 4.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RSchema = void 0; const tslib_1 = require("tslib"); const IO = tslib_1.__importStar(require("../../helpers/io.js")); const recordLink_js_1 = require("../links/recordLink.js"); // // Runtime model. // const RObjectSchema = IO.recursion("ObjectSchema", () => IO.dualObject({ type: IO.literal("object"), properties: IO.record(IO.string, IO.intersection([ IO.partialObject({ optional: IO.boolean, removed: IO.boolean, }), exports.RSchema, ])), }, { strict: IO.boolean })); const RArraySchema = IO.recursion("ArraySchema", () => IO.dualObject({ type: IO.literal("array"), items: exports.RSchema, }, { minItems: IO.number, maxItems: IO.number, distinctItems: IO.boolean, })); const RRefSchema = IO.recursion("RefSchema", () => IO.object({ type: IO.literal("ref"), ref: IO.string })); const RRefNameSchema = IO.recursion("RefNameSchema", () => IO.object({ type: IO.literal("ref_name") })); const RSelfSchema = IO.recursion("SelfSchema", () => IO.object({ type: IO.literal("self") })); const RSchemaSchema = IO.recursion("SchemaSchema", () => IO.object({ type: IO.literal("schema") })); const RNeverSchema = IO.recursion("NeverSchema", () => IO.object({ type: IO.literal("never") })); const RUnionSchema = IO.recursion("UnionSchema", () => IO.dualObject({ type: IO.literal("union"), schemas: IO.readonlyArray(exports.RSchema) }, { strict: IO.boolean })); const RIntersectionSchema = IO.recursion("IntersectionSchema", () => IO.object({ type: IO.literal("intersection"), schemas: IO.readonlyArray(exports.RSchema), })); const RMapSchema = IO.recursion("MapSchema", () => IO.object({ type: IO.literal("map"), values: exports.RSchema })); const RBooleanSchema = IO.recursion("BooleanSchema", () => IO.dualObject({ type: IO.literal("boolean") }, { enum: IO.readonlyArray(IO.boolean) })); const RStringSchema = IO.recursion("StringSchema", () => IO.dualObject({ type: IO.literal("string") }, { enum: IO.readonlyArray(IO.string), minLength: IO.number, maxLength: IO.number, })); const RIntSchema = IO.recursion("IntSchema", () => IO.dualObject({ type: IO.literal("int") }, { enum: IO.readonlyArray(IO.number), min: IO.number, max: IO.number, })); const RNumberSchema = IO.recursion("NumberSchema", () => IO.dualObject({ type: IO.literal("number") }, { enum: IO.readonlyArray(IO.number), min: IO.number, max: IO.number, })); const RTagLinkSchema = IO.recursion("TagLink", () => IO.dualObject({ type: IO.literal("tag_link") }, { enum: IO.readonlyArray(IO.string), sortProperty: IO.boolean, minLength: IO.number, maxLength: IO.number, })); const RBlobLinkSchema = IO.recursion("BlobLink", () => IO.dualObject({ type: IO.literal("blob_link") }, { maxSize: IO.number, contentTypes: IO.readonlyArray(IO.string) })); const RPermissionType = IO.union([ IO.literal("read"), IO.literal("write"), IO.literal("notify"), ]); const REntityLinkSchema = IO.recursion("EntityLink", () => IO.dualObject({ type: IO.literal("entity_link") }, { minPermissions: IO.readonlyArray(RPermissionType) })); const RRecordLinkSchema = IO.recursion("RecordLink", () => IO.dualObject({ type: IO.literal("record_link") }, { existential: IO.boolean, recordTypes: IO.readonlyArray(recordLink_js_1.AnyRecordLink.io()), })); const RVersionLinkSchema = IO.recursion("VersionLink", () => IO.dualObject({ type: IO.literal("version_link") }, { recordTypes: IO.readonlyArray(recordLink_js_1.AnyRecordLink.io()) })); exports.RSchema = IO.recursion("Schema", () => IO.intersection([ IO.union([ RObjectSchema, RArraySchema, RRefSchema, RRefNameSchema, RSelfSchema, RSchemaSchema, RNeverSchema, RUnionSchema, RIntersectionSchema, RMapSchema, RBooleanSchema, RStringSchema, RIntSchema, RNumberSchema, RTagLinkSchema, RBlobLinkSchema, REntityLinkSchema, RRecordLinkSchema, RVersionLinkSchema, ]), IO.partialObject({ definitions: IO.record(IO.string, exports.RSchema), default: IO.unknown, description: IO.string, }), ]));