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.

38 lines (37 loc) 1.95 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var ts_morph_1 = require("ts-morph"); var findSubNode_1 = __importDefault(require("../searchNodeFunc/findSubNode")); var typescript_1 = require("typescript"); var findParentTypeNode_1 = __importDefault(require("../searchNodeFunc/findParentTypeNode")); var categorizeNodes_1 = __importDefault(require("../categorizeNodes")); var initalizeNewFile = function (_a) { var configPath = _a.configPath, filePath = _a.filePath, identifier = _a.identifier; var project = new ts_morph_1.Project({ tsConfigFilePath: configPath, }); var file = project.getSourceFileOrThrow(filePath); var node = file.compilerNode; var statements = node.statements; var nodes = []; for (var _i = 0, statements_1 = statements; _i < statements_1.length; _i++) { var statement = statements_1[_i]; nodes = __spreadArray(__spreadArray([], nodes, true), (0, findSubNode_1.default)(statement, function (node) { return !(0, typescript_1.isExportSpecifier)(node.parent); }), true); } var _b = (0, categorizeNodes_1.default)(nodes), imports = _b.imports, identifiers = _b.identifiers; var idParent = (0, findParentTypeNode_1.default)(identifiers[identifier].parent); return { idParent: idParent, imports: imports, identifiers: identifiers }; }; exports.default = initalizeNewFile;