stackpress
Version:
Incept is a content management framework.
54 lines (53 loc) • 1.96 kB
JavaScript
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);`)
});
}
}
;