UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

69 lines 6.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateTypings = updateTypings; exports.updateTypingsWithCustomizations = updateTypingsWithCustomizations; 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); } 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); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXR5cGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdXBkYXRlLXR5cGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsc0NBTUM7QUFFRCwwRUFVQztBQTFGRCw4Q0FBaUQ7QUFDakQsb0VBQWtGO0FBQ2xGLDBFQUE0RTtBQUM1RSw0RUFBOEU7QUFDOUUsZ0VBQWlGO0FBQ2pGLHdFQUEyRTtBQUMzRSxnREFBd0I7QUFFeEIsK0NBQW1EO0FBQ25ELDhFQUFxRDtBQUNyRCxzQ0FBMEM7QUFFMUMsU0FBUyw4QkFBOEIsQ0FDckMsYUFBd0U7SUFFeEUsT0FBTyxRQUFRLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssK0JBQStCLENBQUM7QUFDL0YsQ0FBQztBQVFELEtBQUssVUFBVSxvQkFBb0IsQ0FDakMsS0FBcUMsRUFDckMsVUFBK0I7SUFFL0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUVyRixJQUFJLDhCQUE4QixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sUUFBUSxHQUFHLElBQUEsb0RBQWlDLEVBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBQSw4Q0FBd0IsRUFBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDL0UsTUFBTTthQUNQLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLG1EQUFrQyxFQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0YsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFBLGdEQUF5QixFQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN4RCxNQUFNO2FBQ1AsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBVSxDQUFDO1FBRXpCLElBQUksc0JBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLDZDQUF3QixDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksc0JBQWEsQ0FDckIsd0hBQXdILENBQ3pILENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUMsV0FBd0I7SUFDaEQsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekIsV0FBVyxFQUFFLE9BQU87UUFDcEIsWUFBWSxFQUFFLEtBQUs7S0FDcEIsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsV0FBVztTQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUMvQyxHQUFHLENBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQ3BFLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFTSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxXQUF3QixFQUN4QixvQkFBMEM7SUFFMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVNLEtBQUssVUFBVSwrQkFBK0IsQ0FDbkQsV0FBd0IsRUFDeEIsZUFBZ0MsRUFDaEMsb0JBQTBDO0lBRTFDLE1BQU0sYUFBYSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDM0UsTUFBTSxJQUFBLGdDQUFrQixFQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLElBQUEsNEJBQWlCLEVBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDIn0=