UNPKG

jsonbinpack

Version:

A space-efficient schema-driven binary JSON serialization format based on JSON Schema

82 lines (81 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RULES = void 0; var assert_1 = require("assert"); var lodash_1 = require("lodash"); exports.RULES = [ { id: 'type-union-anyof', condition: function (schema) { return Array.isArray(schema.type); }, transform: function (schema) { assert_1.strict(Array.isArray(schema.type)); return { anyOf: schema.type.map(function (type) { return Object.assign({}, schema, { type: type }); }) }; } }, { id: 'boolean-as-enum', condition: function (schema) { return schema.type === 'boolean'; }, transform: function (schema) { return Object.assign({}, lodash_1.omit(schema, ['type']), { enum: [false, true] }); } }, { id: 'null-as-const', condition: function (schema) { return schema.type === 'null'; }, transform: function (schema) { return Object.assign({}, lodash_1.omit(schema, ['type']), { const: null }); } }, { id: 'const-as-enum', condition: function (schema) { return typeof schema.const !== 'undefined'; }, transform: function (schema) { assert_1.strict(typeof schema.const !== 'undefined'); return Object.assign({}, lodash_1.omit(schema, ['const']), { enum: [schema.const] }); } }, { id: 'exclusive-minimum-to-minimum', condition: function (schema) { return typeof schema.exclusiveMinimum !== 'undefined'; }, transform: function (schema) { var _a, _b; var minimum = Math.max(((_a = schema.exclusiveMinimum) !== null && _a !== void 0 ? _a : -Infinity) + 1, (_b = schema.minimum) !== null && _b !== void 0 ? _b : -Infinity); Reflect.deleteProperty(schema, 'exclusiveMinimum'); return Object.assign(schema, { minimum: minimum }); } }, { id: 'exclusive-maximum-to-maximum', condition: function (schema) { return typeof schema.exclusiveMaximum !== 'undefined'; }, transform: function (schema) { var _a, _b; var maximum = Math.max(((_a = schema.exclusiveMaximum) !== null && _a !== void 0 ? _a : Infinity) - 1, (_b = schema.maximum) !== null && _b !== void 0 ? _b : Infinity); Reflect.deleteProperty(schema, 'exclusiveMaximum'); return Object.assign(schema, { maximum: maximum }); } } ];