UNPKG

stackpress

Version:

Incept is a content management framework.

54 lines (53 loc) 1.96 kB
export default function generate(directory, registry) { page('create', directory, registry); page('detail', directory, registry); page('export', directory, registry); page('import', directory, registry); page('remove', directory, registry); page('restore', directory, registry); page('search', directory, registry); page('update', directory, registry); } ; export function page(action, directory, registry) { const lower = action.toLowerCase(); const title = action.charAt(0).toUpperCase() + action.slice(1); for (const model of registry.model.values()) { const file = `${model.name}/admin/pages/${lower}.ts`; const source = directory.createSourceFile(file, '', { overwrite: true }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: '@stackpress/ingest/Request', defaultImport: 'Request' }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: '@stackpress/ingest/Response', defaultImport: 'Response' }); source.addImportDeclaration({ isTypeOnly: true, moduleSpecifier: '@stackpress/ingest/Server', defaultImport: 'Server' }); source.addImportDeclaration({ moduleSpecifier: `stackpress/admin/pages/${lower}`, defaultImport: `${lower}Page` }); source.addImportDeclaration({ moduleSpecifier: '../../config.js', defaultImport: 'config' }); source.addFunction({ name: `Admin${model.title}${title}Page`, isDefaultExport: true, parameters: [ { name: 'req', type: 'Request' }, { name: 'res', type: 'Response' }, { name: 'ctx', type: 'Server' } ], statements: (`return ${lower}Page(config)(req, res, ctx);`) }); } } ;