@baqhub/sdk
Version:
The official JavaScript SDK for the BAQ federated app platform.
108 lines (107 loc) • 2.6 kB
TypeScript
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 {};