123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- const _ = require('lodash');
- // JSON schema types
- const ARRAY = 'array';
- const BOOLEAN = 'boolean';
- const OBJECT = 'object';
- const STRING = 'string';
- const BOOLEAN_SCHEMA = {
- type: BOOLEAN
- };
- const STRING_SCHEMA = {
- type: STRING
- };
- const TYPES = require('./types');
- const TYPE_NAMES = _.values(TYPES);
- module.exports = {
- type: OBJECT,
- additionalProperties: false,
- properties: {
- type: {
- type: STRING,
- enum: TYPE_NAMES
- },
- // field type
- key: { '$ref': '#' },
- value: { '$ref': '#' },
- // function type
- params: {
- type: ARRAY,
- items: { '$ref': '#' }
- },
- 'new': { '$ref': '#' },
- 'this': { '$ref': '#' },
- result: {'$ref': '#' },
- // name expression
- name: STRING_SCHEMA,
- // record type
- fields: {
- type: ARRAY,
- items: { '$ref': '#' }
- },
- // type application
- expression: { '$ref': '#' },
- applications: {
- type: ARRAY,
- minItems: 1,
- maxItems: 2,
- items: { '$ref': '#' }
- },
- // type union
- elements: {
- type: ARRAY,
- minItems: 1,
- items: { '$ref': '#' }
- },
- optional: BOOLEAN_SCHEMA,
- nullable: BOOLEAN_SCHEMA,
- repeatable: BOOLEAN_SCHEMA,
- reservedWord: BOOLEAN_SCHEMA
- },
- required: ['type']
- };
|