@aws-amplify/cli-internal
Version:
Amplify CLI
50 lines • 2.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GeoGenerator = void 0;
const node_path_1 = __importDefault(require("node:path"));
const promises_1 = __importDefault(require("node:fs/promises"));
const ts_1 = require("../../ts");
const geo_renderer_1 = require("./geo.renderer");
class GeoGenerator {
constructor(backendGenerator, outputDir, logger) {
this.renderer = new geo_renderer_1.GeoRenderer();
this.maps = [];
this.placeIndices = [];
this.geofenceCollections = [];
this.backendGenerator = backendGenerator;
this.outputDir = outputDir;
this.logger = logger;
}
addMap(props) {
this.maps.push(props);
}
addPlaceIndex(props) {
this.placeIndices.push(props);
}
addGeofenceCollection(props) {
this.geofenceCollections.push(props);
}
async plan() {
const geoDir = node_path_1.default.join(this.outputDir, 'amplify', 'geo');
return [
{
validate: () => undefined,
describe: async () => ['Generate amplify/geo/resource.ts'],
execute: async () => {
this.logger.info('Rendering geo/resource.ts');
const nodes = this.renderer.render(this.maps, this.placeIndices, this.geofenceCollections);
const content = ts_1.TS.printNodes(nodes);
await promises_1.default.mkdir(geoDir, { recursive: true });
await promises_1.default.writeFile(node_path_1.default.join(geoDir, 'resource.ts'), content, 'utf-8');
this.backendGenerator.addNamespaceImport('geo', './geo/resource');
this.backendGenerator.addPostDefineBackendStatement(`geo.defineGeo(backend)`);
},
},
];
}
}
exports.GeoGenerator = GeoGenerator;
//# sourceMappingURL=geo.generator.js.map