UNPKG

concise

Version:

A tool belt for concise schemas

45 lines (36 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _timm = require("timm"); const mergeSchemas = (a, b) => { let out = a; // Non-model specs are merged from `b` out = (0, _timm.merge)(out, (0, _timm.omit)(b, ['models'])); // Merge models let models = out.models; Object.keys(b.models).forEach(modelName => { let model = models[modelName]; const bModel = b.models[modelName]; // Models from b that didn't exist in a if (!model) { models = (0, _timm.set)(models, modelName, bModel); return; } // Preexisting models const { description, includes, fields, relations } = bModel; model = (0, _timm.merge)(model, { description, includes: includes ? (0, _timm.merge)(model.includes || {}, includes) : undefined, fields: fields ? (0, _timm.merge)(model.fields || {}, fields) : undefined, relations: relations ? (0, _timm.merge)(model.relations || {}, relations) : undefined }); models = (0, _timm.set)(models, modelName, model); }); out = (0, _timm.set)(out, 'models', models); return out; }; var _default = mergeSchemas; exports.default = _default;