UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

70 lines 6.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateTypingsWithCustomizations = exports.updateTypings = void 0; const agent_1 = require("@forestadmin/agent"); const datasource_mongo_1 = require("@forestadmin/datasource-mongo"); const datasource_mongoose_1 = require("@forestadmin/datasource-mongoose"); const datasource_sequelize_1 = require("@forestadmin/datasource-sequelize"); const datasource_sql_1 = require("@forestadmin/datasource-sql"); const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit"); const path_1 = __importDefault(require("path")); const access_file_1 = require("./access-file"); const load_customization_1 = __importDefault(require("./load-customization")); const errors_1 = require("../errors"); function isDatasourceMongoIntrospection(introspection) { return 'source' in introspection && introspection.source === '@forestadmin/datasource-mongo'; } async function addDatasourceToAgent(agent, datasource) { try { const rename = (oldName) => `${oldName}${datasource.datasourceSuffix || ''}`; if (isDatasourceMongoIntrospection(datasource.introspection)) { const mongoose = (0, datasource_mongo_1.buildDisconnectedMongooseInstance)(datasource.introspection); agent.addDataSource((0, datasource_mongoose_1.createMongooseDataSource)(mongoose, { flattenMode: 'auto' }), { rename, }); } else { const sequelize = await (0, datasource_sql_1.buildDisconnectedSequelizeInstance)(datasource.introspection, null); agent.addDataSource((0, datasource_sequelize_1.createSequelizeDataSource)(sequelize), { rename, }); } } catch (e) { const error = e; if (errors_1.BusinessError.isOfType(error, datasource_toolkit_1.IntrospectionFormatError)) { throw new errors_1.BusinessError(`The version of this CLI is out of date from the version of your cloud agent.\nPlease update @forestadmin/forest-cloud.`); } throw e; } } async function buildAgent(datasources) { const agentOptions = { authSecret: 'a'.repeat(64), envSecret: 'a'.repeat(64), loggerLevel: 'Error', isProduction: false, }; const agent = (0, agent_1.createAgent)(agentOptions); await Promise.all(datasources .sort((a, b) => a.datasourceId - b.datasourceId) .map(async (datasource) => addDatasourceToAgent(agent, datasource))); return agent; } async function updateTypings(datasources, bootstrapPathManager) { const agent = await buildAgent(datasources); await agent.updateTypesOnFileSystem(bootstrapPathManager.typingsDuringBootstrap, 3); } exports.updateTypings = updateTypings; async function updateTypingsWithCustomizations(datasources, distPathManager, bootstrapPathManager) { const builtCodePath = path_1.default.resolve(distPathManager.distCodeCustomizations); await (0, access_file_1.throwIfNoBuiltCode)(builtCodePath); const agent = await buildAgent(datasources); (0, load_customization_1.default)(agent, builtCodePath); await agent.updateTypesOnFileSystem(bootstrapPathManager.typings, 3); } exports.updateTypingsWithCustomizations = updateTypingsWithCustomizations; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXR5cGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdXBkYXRlLXR5cGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsOENBQStEO0FBQy9ELG9FQUFrRjtBQUNsRiwwRUFBNEU7QUFDNUUsNEVBQThFO0FBQzlFLGdFQUFpRjtBQUNqRix3RUFBMkU7QUFDM0UsZ0RBQXdCO0FBRXhCLCtDQUFtRDtBQUduRCw4RUFBcUQ7QUFDckQsc0NBQTBDO0FBRTFDLFNBQVMsOEJBQThCLENBQ3JDLGFBQXdFO0lBRXhFLE9BQU8sUUFBUSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLCtCQUErQixDQUFDO0FBQy9GLENBQUM7QUFRRCxLQUFLLFVBQVUsb0JBQW9CLENBQ2pDLEtBQXFDLEVBQ3JDLFVBQStCO0lBRS9CLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO1FBRXJGLElBQUksOEJBQThCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUEsb0RBQWlDLEVBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBQSw4Q0FBd0IsRUFBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDL0UsTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsbURBQWtDLEVBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUEsZ0RBQXlCLEVBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hELE1BQU07YUFDUCxDQUFDLENBQUM7U0FDSjtLQUNGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLEtBQUssR0FBRyxDQUFVLENBQUM7UUFFekIsSUFBSSxzQkFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsNkNBQXdCLENBQUMsRUFBRTtZQUMzRCxNQUFNLElBQUksc0JBQWEsQ0FDckIsd0hBQXdILENBQ3pILENBQUM7U0FDSDtRQUVELE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxXQUF3QjtJQUNoRCxNQUFNLFlBQVksR0FBaUI7UUFDakMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QixXQUFXLEVBQUUsT0FBTztRQUNwQixZQUFZLEVBQUUsS0FBSztLQUNwQixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixXQUFXO1NBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQy9DLEdBQUcsQ0FBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FDcEUsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVNLEtBQUssVUFBVSxhQUFhLENBQ2pDLFdBQXdCLEVBQ3hCLG9CQUEwQztJQUUxQyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBTkQsc0NBTUM7QUFFTSxLQUFLLFVBQVUsK0JBQStCLENBQ25ELFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2hDLG9CQUEwQztJQUUxQyxNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sSUFBQSxnQ0FBa0IsRUFBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxJQUFBLDRCQUFpQixFQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQVZELDBFQVVDIn0=