UNPKG

stackpress

Version:

Incept is a content management framework.

66 lines (65 loc) 2.55 kB
import { VariableDeclarationKind } from 'ts-morph'; import Revisions from '../Revisions.js'; export default async function generate(directory, schema, registry, server) { for (const model of registry.model.values()) { const filepath = `${model.name}/config.ts`; const source = directory.createSourceFile(filepath, '', { overwrite: true }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: 'stackpress/Model', defaultImport: 'Model' }); source.addImportDeclaration({ moduleSpecifier: '../config.js', defaultImport: 'registry' }); source.addStatements(`const config = registry.model.get('${model.name}') as Model;`); source.addStatements(`export default config;`); } for (const fieldset of registry.fieldset.values()) { const filepath = `${fieldset.name}/config.ts`; const source = directory.createSourceFile(filepath, '', { overwrite: true }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: 'stackpress/Fieldset', defaultImport: 'Fieldset' }); source.addImportDeclaration({ moduleSpecifier: '../config.js', defaultImport: 'registry' }); source.addStatements(`const config = registry.fieldset.get('${fieldset.name}') as Fieldset;`); source.addStatements(`export default config;`); } const revisions = server.config.path('client.revisions'); if (revisions) { Revisions.insert(revisions, server.loader, schema); } const source = directory.createSourceFile('config.ts', '', { overwrite: true }); source.addImportDeclaration({ moduleSpecifier: '@stackpress/idea-parser', namedImports: ['SchemaConfig'] }); source.addImportDeclaration({ moduleSpecifier: 'stackpress/Registry', defaultImport: 'Registry' }); source.addVariableStatement({ isExported: true, declarationKind: VariableDeclarationKind.Const, declarations: [{ name: 'config', type: 'SchemaConfig', initializer: JSON.stringify(schema, null, 2) }] }); source.addVariableStatement({ declarationKind: VariableDeclarationKind.Const, declarations: [{ name: 'registry', initializer: 'new Registry(config)' }] }); source.addStatements(`export default registry;`); } ;