UNPKG

@baqhub/sdk

Version:

The official JavaScript SDK for the BAQ federated app platform.

108 lines (107 loc) 2.6 kB
import * as IO from "../../helpers/io.js"; import { AnyRecordLink } from "../links/recordLink.js"; export type ObjectPropertySchema = Schema & { optional?: boolean; removed?: boolean; }; interface ObjectSchema { type: "object"; properties: { [K: string]: ObjectPropertySchema; }; strict?: boolean; } interface ArraySchema { type: "array"; items: Schema; minItems?: number; maxItems?: number; distinctItems?: boolean; } interface RefSchema { type: "ref"; ref: string; } interface RefNameSchema { type: "ref_name"; } interface SelfSchema { type: "self"; } interface SchemaSchema { type: "schema"; } interface NeverSchema { type: "never"; } interface UnionSchema { type: "union"; schemas: ReadonlyArray<Schema>; strict?: boolean; } interface IntersectionSchema { type: "intersection"; schemas: ReadonlyArray<Schema>; } interface MapSchema { type: "map"; values: Schema; } interface BooleanSchema { type: "boolean"; enum?: ReadonlyArray<boolean>; } interface StringSchema { type: "string"; enum?: ReadonlyArray<string>; minLength?: number; maxLength?: number; } interface IntSchema { type: "int"; enum?: ReadonlyArray<number>; min?: number; max?: number; } interface NumberSchema { type: "number"; enum?: ReadonlyArray<number>; min?: number; max?: number; } interface TagLinkSchema { type: "tag_link"; enum?: ReadonlyArray<string>; sortProperty?: boolean; minLength?: number; maxLength?: number; } interface BlobLinkSchema { type: "blob_link"; maxSize?: number; contentTypes?: ReadonlyArray<string>; } type PermissionType = "read" | "write" | "notify"; interface EntityLinkSchema { type: "entity_link"; minPermissions?: ReadonlyArray<PermissionType>; } interface RecordLinkSchema { type: "record_link"; existential?: boolean; recordTypes?: ReadonlyArray<AnyRecordLink>; } interface VersionLinkSchema { type: "version_link"; recordTypes?: ReadonlyArray<AnyRecordLink>; } type SchemaType = ObjectSchema | ArraySchema | RefSchema | RefNameSchema | SelfSchema | SchemaSchema | NeverSchema | UnionSchema | IntersectionSchema | MapSchema | BooleanSchema | StringSchema | IntSchema | NumberSchema | TagLinkSchema | BlobLinkSchema | EntityLinkSchema | RecordLinkSchema | VersionLinkSchema; export type Schema = SchemaType & { definitions?: { [K: string]: Schema; }; default?: unknown; description?: string; }; export declare const RSchema: IO.Type<Schema>; export {};