json-schema-toolbox
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

json-schema-toolbox

json schema utils

##Usage

import jsonToolbox from 'json-schema-toolbox';

//...

const schema = jsonToolbox.objectSchema({id: jsonToolbox.stringSchema, title: jsonToolbox.stringSchema})

##Definitions

export interface IJsonSchema {
    type: string;
    id?: string;
    properties?: {[k:string]: IJsonSchema};
    items?: IJsonSchema;
    default?: string[];
    required?: string[] | boolean;
}

export function schemaDefault (schema: IJsonSchema, defaultValue: any): IJsonSchema;
export function schemaRequired (schema: IJsonSchema, required: any): IJsonSchema;
export function enumSchema (enumValues: string[], defaultValue?: string): IJsonSchema;

export const stringSchema: IJsonSchema;
export const dateSchema: IJsonSchema;
export const emptyStringSchema: IJsonSchema;
export const numberSchema: IJsonSchema;
export const booleanSchema: IJsonSchema;
export const trueSchema: IJsonSchema;
export const falseSchema: IJsonSchema;

export function objectSchema(properties?: IJsonSchema[]): IJsonSchema;
export function arraySchema(itemSchema: IJsonSchema, defaultValue?): IJsonSchema;
export function requiredSchema(schema: IJsonSchema): IJsonSchema;
export function omitId(schema: IJsonSchema): IJsonSchema;
export function withId(schema: IJsonSchema, id: string): IJsonSchema;

export function fillDefaults<T = any>(schema: IJsonSchema): (obj: any) => T;
export function fillDefaults<T = any>(schema: IJsonSchema, obj: any): T;
export function fillDefaultsArray<T = any>(schema: IJsonSchema): (obj: any) => T[];
export function fillDefaultsArray<T = any>(schema: IJsonSchema, obj: any): T[];

export function normalizeToSave<T = any>(schema: IJsonSchema): (obj: any) => T;
export function normalizeToSave<T = any>(schema: IJsonSchema, obj: any): T;

Package Sidebar

Install

npm i json-schema-toolbox

Weekly Downloads

1

Version

1.0.4

License

MIT

Unpacked Size

44.1 kB

Total Files

25

Last publish

Collaborators

  • paullasarev