@aws-amplify/cli-internal
Version:
Amplify CLI
67 lines • 2.91 kB
JavaScript
"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