catharsis
Version:
A JavaScript parser for Google Closure Compiler and JSDoc type expressions.
73 lines (61 loc) • 1.26 kB
JavaScript
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'],
};