UNPKG

stackpress

Version:

Incept is a content management framework.

74 lines (73 loc) 3.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = generate; const ts_morph_1 = require("ts-morph"); const Registry_js_1 = __importDefault(require("../../schema/Registry.js")); const config_js_1 = __importDefault(require("./config.js")); const package_js_1 = __importDefault(require("./package.js")); function generate(props) { const { cli, schema, project } = props; const registry = new Registry_js_1.default(schema); (0, config_js_1.default)(project, schema, registry, cli.server); (0, package_js_1.default)(project, schema, cli.server); for (const model of registry.model.values()) { const filepath = `${model.name}/index.ts`; const source = project.getSourceFile(filepath) || project.createSourceFile(filepath, '', { overwrite: true }); source.addImportDeclaration({ moduleSpecifier: './config.js', defaultImport: 'config' }); source.addExportDeclaration({ namedExports: ['config'] }); } for (const fieldset of registry.fieldset.values()) { const filepath = `${fieldset.name}/index.ts`; const source = project.getSourceFile(filepath) || project.createSourceFile(filepath, '', { overwrite: true }); source.addImportDeclaration({ moduleSpecifier: './config.js', defaultImport: 'config' }); source.addExportDeclaration({ namedExports: ['config'] }); } const source = project.getSourceFile('index.ts') || project.createSourceFile('index.ts', '', { overwrite: true }); source.addImportDeclaration({ moduleSpecifier: './config.js', defaultImport: 'registry', namedImports: ['config'] }); for (const model of registry.model.values()) { source.addImportDeclaration({ moduleSpecifier: `./${model.name}/index.js`, defaultImport: `* as model${model.title}` }); } for (const fieldset of registry.fieldset.values()) { source.addImportDeclaration({ moduleSpecifier: `./${fieldset.name}/index.js`, defaultImport: `* as fieldset${fieldset.title}` }); } source.addExportDeclaration({ namedExports: ['config', 'registry'] }); source.addVariableStatement({ isExported: true, declarationKind: ts_morph_1.VariableDeclarationKind.Const, declarations: [{ name: 'model', initializer: `{ ${Array.from(registry.model.values()).map(model => `${model.camel}: model${model.title}`).join(',\n')} }` }, { name: 'fieldset', initializer: `{ ${Array.from(registry.fieldset.values()).map(fieldset => `${fieldset.camel}: fieldset${fieldset.title}`).join(',\n')} }` }] }); }