UNPKG

typed-aws

Version:

Helps you write AWS CloudFormation in TypeScript

68 lines (64 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateModuleIndex = exports.generateIndex = exports.exportResources = exports.generateAndExportResource = exports.generateSource = void 0; const format_1 = require("./format"); function generateSource(model) { let source = ''; source += `// CloudFormation Resource ${model.mainSchema.namespace}\n`; source += model.toString() + '\n'; return source; } exports.generateSource = generateSource; async function generateAndExportResource(model, fileManager) { //console.log(`Export ${model.module.name}/${model.name}.ts`); let source = generateSource(model); source = (0, format_1.formatSource)(source); return fileManager.writeResource({ module: model.module.name, resource: model.name, fileName: model.name + '.ts', source, }); } exports.generateAndExportResource = generateAndExportResource; async function exportResources(resources, fileManager) { await Promise.all(resources.map((resource) => generateAndExportResource(resource, fileManager))); } exports.exportResources = exportResources; async function generateIndex(modules, fileManager) { const names = modules.map((r) => r[0].module); names.sort(); let source = ` ${names .map((name) => `import ${name} from './${name}'; export {${name}}; `) .join('\n')} export default {${names.join(', ')}}; `; source = (0, format_1.formatSource)(source); return fileManager.writeIndex({ fileName: 'index.ts', source, }); } exports.generateIndex = generateIndex; async function generateModuleIndex(resources, fileManager) { const { module } = resources[0]; const names = resources.map((r) => r.resource); names.sort(); let source = ` ${names.map((name) => `import ${name}_ from './${name}';`).join('\n')} export namespace ${module} { ${names.map((name) => `export const ${name} = ${name}_;`).join('\n')} } export default ${module}; `; source = (0, format_1.formatSource)(source); return fileManager.writeModule({ module, fileName: 'index.ts', source, }); } exports.generateModuleIndex = generateModuleIndex;