UNPKG

@jsonjoy.com/json-random

Version:

Random JSON generation, structured JSON by schema generation, no dependencies.

46 lines (45 loc) 1.7 kB
import type { Token } from '../string'; export type Template = TemplateShorthand | TemplateNode | TemplateRecursiveReference; export type TemplateNode = LiteralTemplate | NumberTemplate | IntegerTemplate | Int64Template | FloatTemplate | StringTemplate | BooleanTemplate | BinTemplate | NullTemplate | ArrayTemplate | ObjectTemplate | MapTemplate | OrTemplate; export type TemplateShorthand = 'num' | 'int' | 'int64' | 'float' | 'str' | 'bool' | 'bin' | 'nil' | 'arr' | 'obj' | 'map'; export type TemplateRecursiveReference = () => Template; export type LiteralTemplate = ['lit', value: unknown]; export type NumberTemplate = [type: 'num', min?: number, max?: number]; export type IntegerTemplate = [type: 'int', min?: number, max?: number]; export type Int64Template = [type: 'int64', min?: bigint, max?: bigint]; export type FloatTemplate = [type: 'float', min?: number, max?: number]; export type StringTemplate = [type: 'str', token?: Token]; export type BooleanTemplate = [type: 'bool', value?: boolean]; export type BinTemplate = [ type: 'bin', min?: number, max?: number, omin?: number, omax?: number ]; export type NullTemplate = [type: 'nil']; export type ArrayTemplate = [ type: 'arr', min?: number, max?: number, template?: Template, head?: Template[], tail?: Template[] ]; export type ObjectTemplate = [ type: 'obj', fields?: ObjectTemplateField[] ]; export type ObjectTemplateField = [ key: Token | null, value?: Template, optionality?: number ]; export type MapTemplate = [ type: 'map', key?: Token | null, value?: Template, min?: number, max?: number ]; export type OrTemplate = ['or', ...Template[]];