UNPKG

@aws-amplify/cli-internal

Version:
58 lines 2.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RestApiGenerator = void 0; const node_path_1 = __importDefault(require("node:path")); const promises_1 = __importDefault(require("node:fs/promises")); const ts_1 = require("../../ts"); const rest_api_renderer_1 = require("./rest-api.renderer"); class RestApiGenerator { constructor(gen1App, backendGenerator, outputDir, resource, logger) { this.gen1App = gen1App; this.backendGenerator = backendGenerator; this.outputDir = outputDir; this.resource = resource; this.logger = logger; } async plan() { const restApi = await this.readRestApiConfig(); const hasAuth = this.gen1App.categoryMeta('auth') !== undefined; return [ { resource: this.resource, validate: () => undefined, describe: async () => [`Generate amplify/api/${restApi.apiName}/resource.ts`], execute: async () => { const apiDir = node_path_1.default.join(this.outputDir, 'amplify', 'api', restApi.apiName); const renderer = new rest_api_renderer_1.RestApiRenderer(hasAuth); this.logger.info(`Rendering api/${restApi.apiName}/resource.ts`); const nodes = renderer.render(restApi); const content = ts_1.TS.printNodes(nodes); await promises_1.default.mkdir(apiDir, { recursive: true }); await promises_1.default.writeFile(node_path_1.default.join(apiDir, 'resource.ts'), content, 'utf-8'); const alias = restApi.apiName; this.backendGenerator.addNamespaceImport(alias, `./api/${alias}/resource`); this.backendGenerator.addPostDefineBackendStatement(`${alias}.${restApi.exportedFunctionName}(backend)`); }, }, ]; } async readRestApiConfig() { var _a; const cliInputs = this.gen1App.cliInputs('api', this.resource.resourceName); const gen1ApiId = this.gen1App.resourceMetaOutput(this.resource, 'ApiId'); this.logger.debug(`Fetching REST API root resource for '${gen1ApiId}'`); const gen1RootResourceId = await this.gen1App.aws.fetchRestApiRootResourceId(gen1ApiId); return { apiName: this.resource.resourceName, exportedFunctionName: `define${this.resource.resourceName.charAt(0).toUpperCase() + this.resource.resourceName.slice(1)}Api`, paths: (_a = cliInputs.paths) !== null && _a !== void 0 ? _a : {}, gen1ApiId, gen1RootResourceId, }; } } exports.RestApiGenerator = RestApiGenerator; //# sourceMappingURL=rest-api.generator.js.map