UNPKG

ts-to-mongo-schema

Version:

Using the Typescript Compiler API, this program parses through Typescript, to generate a JSON Schema that conforms to MongoDB's bson format. Useful when generating large schemas, and being unable to use a javascript or typescript library like Moongoose.

37 lines (36 loc) 1.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var extractProperties_1 = __importDefault(require("../extractProperties")); var typescript_1 = require("typescript"); function mergeProps(_a) { var node = _a.node, imports = _a.imports, ids = _a.ids, paths = _a.paths, props = _a.props, resolveCustomGenerics = _a.resolveCustomGenerics, extension = _a.extension; var mergedProps = { bsonType: "object", properties: {}, required: [], }; node.forEachChild(function (n) { if ((0, typescript_1.isIdentifier)(n)) return; var extracted = (0, extractProperties_1.default)({ imports: imports, ids: ids, node: n, paths: paths, props: props, resolveCustomGenerics: resolveCustomGenerics, extension: extension, }); for (var _i = 0, _a = Object.entries(extracted); _i < _a.length; _i++) { var _b = _a[_i], key = _b[0], value = _b[1]; if (value.required) mergedProps.required.push(key); mergedProps.properties[key] = value.value; } }); return mergedProps; } exports.default = mergeProps;