concise
Version:
A tool belt for concise schemas
51 lines (39 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _mergeSchemas = _interopRequireDefault(require("./mergeSchemas"));
var _preprocessSchema = _interopRequireDefault(require("./preprocessSchema"));
var _authorizer = _interopRequireDefault(require("./authorizer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class Concise {
constructor() {
this.schema = {
models: {}
};
}
async input(processor, options = {}) {
const schema = await processor(options);
this.addSchema(schema);
return this.schema;
}
addSchema(schema) {
// TODO: validate?
this.schema = (0, _mergeSchemas.default)(this.schema, schema);
}
getSchema() {
return this.schema;
}
async output(processor, options = {}) {
const preprocessedSchema = (0, _preprocessSchema.default)(this.schema);
const authorizer = new _authorizer.default(preprocessedSchema.authRules);
const utils = {
preprocessedSchema,
authorizer
};
return processor(this.schema, options, utils);
}
}
var _default = Concise;
exports.default = _default;