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
JavaScript
;
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;