UNPKG

@aws-amplify/cli-internal

Version:
67 lines 2.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BackendGenerator = void 0; const node_path_1 = __importDefault(require("node:path")); const promises_1 = __importDefault(require("node:fs/promises")); const ts_1 = require("../ts"); const backend_renderer_1 = require("./backend.renderer"); class BackendGenerator { constructor(outputDir, logger) { this.namespaceImports = []; this.defineBackendEntries = []; this.applyEscapeHatchesCalls = []; this.postRefactorCalls = []; this.postDefineBackendCalls = []; this.postDefineBackendStatements = []; this.renderer = new backend_renderer_1.BackendRenderer(); this.outputDir = outputDir; this.logger = logger; } addNamespaceImport(alias, source) { this.namespaceImports.push({ alias, source }); } addDefineBackendEntry(key, alias, exportName) { this.defineBackendEntries.push({ key, alias, exportName }); } addApplyEscapeHatchesCall(call) { this.applyEscapeHatchesCalls.push(call); } addPostRefactorCall(statement) { this.postRefactorCalls.push(statement); } addPostDefineBackendCall(variableName, expression) { this.postDefineBackendCalls.push({ variableName, expression }); } addPostDefineBackendStatement(statement) { this.postDefineBackendStatements.push(statement); } async plan() { const backendTsPath = node_path_1.default.join(this.outputDir, 'amplify', 'backend.ts'); return [ { validate: () => undefined, describe: async () => ['Generate amplify/backend.ts'], execute: async () => { const options = { namespaceImports: this.namespaceImports, defineBackendEntries: this.defineBackendEntries, postDefineBackendCalls: this.postDefineBackendCalls, postDefineBackendStatements: this.postDefineBackendStatements, postRefactorCalls: this.postRefactorCalls, escapeHatchCalls: this.applyEscapeHatchesCalls, }; this.logger.info('Rendering backend.ts'); const nodes = this.renderer.render(options); const content = ts_1.TS.printNodes(nodes, 120); await promises_1.default.mkdir(node_path_1.default.dirname(backendTsPath), { recursive: true }); await promises_1.default.writeFile(backendTsPath, content, 'utf-8'); }, }, ]; } } exports.BackendGenerator = BackendGenerator; //# sourceMappingURL=backend.generator.js.map