UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

79 lines 6.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.startingAgent = startingAgent; const agent_1 = require("@forestadmin/agent"); const datasource_mongo_1 = require("@forestadmin/datasource-mongo"); const datasource_sql_1 = require("@forestadmin/datasource-sql"); const promises_1 = __importDefault(require("fs/promises")); const access_file_1 = require("./access-file"); const load_customization_1 = __importDefault(require("./load-customization")); const errors_1 = require("../errors"); // eslint-disable-next-line import/prefer-default-export async function startingAgent(distPathManager, { forestServerUrl, envSecret }, logger) { const agentOptions = { authSecret: 'dev8environment'.repeat(8), envSecret: envSecret || process.env.FOREST_ENV_SECRET_DEVELOPMENT, // Needed for lumberjacks forestServerUrl, isProduction: false, typingsPath: distPathManager.typings, typingsMaxDepth: 3, logger, }; const { localDatasourcesPath } = distPathManager; const agent = (0, agent_1.createAgent)(agentOptions); try { await promises_1.default.access(localDatasourcesPath); // eslint-disable-next-line import/no-dynamic-require, global-require, @typescript-eslint/no-var-requires const localDatasources = require(localDatasourcesPath); // eslint-disable-next-line @typescript-eslint/no-use-before-define addDatasourceToAgent(agent, localDatasources()); } catch (e) { logger('Debug', `Could not load ${localDatasourcesPath}`, e); throw new errors_1.BusinessError(`No datasources found at ${localDatasourcesPath}.\nPlease provide datasources connection details…`); } const { distCodeCustomizationsPath } = distPathManager; await (0, access_file_1.throwIfNoBuiltCode)(distCodeCustomizationsPath); (0, load_customization_1.default)(agent, distCodeCustomizationsPath); await agent.mountOnStandaloneServer().start(); } function getDialectFromConnectionOptions(connectionOptions) { if (typeof connectionOptions === 'string') { const parsed = new URL(connectionOptions); return parsed.protocol.slice(0, -1); } if (typeof connectionOptions.uri === 'string') { const parsed = new URL(connectionOptions.uri); return parsed.protocol.slice(0, -1); } return 'sql'; } function isDatasourceMongoConnection(connection) { const dialect = getDialectFromConnectionOptions(connection); return ['mongodb', 'mongodb+srv'].includes(dialect); } async function addDatasourceToAgent(agent, datasources) { Object.values(datasources).forEach(async (datasource) => { const rename = (oldName) => `${oldName}${datasource.datasourceSuffix || ''}`; if (isDatasourceMongoConnection(datasource.connectionOptions)) { agent.addDataSource((0, datasource_mongo_1.createMongoDataSource)({ ...(typeof datasource.connectionOptions === 'string' ? { uri: datasource.connectionOptions } : datasource.connectionOptions), dataSource: { flattenMode: 'auto' }, }), { rename, }); } else { agent.addDataSource((0, datasource_sql_1.createSqlDataSource)(datasource.connectionOptions), { rename, }); } }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRpbmctYWdlbnQtbG9jYWxseS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zdGFydGluZy1hZ2VudC1sb2NhbGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBdUJBLHNDQXdDQztBQTFERCw4Q0FBaUQ7QUFDakQsb0VBQXNFO0FBQ3RFLGdFQUFrRTtBQUNsRSwyREFBNkI7QUFFN0IsK0NBQW1EO0FBQ25ELDhFQUFxRDtBQUNyRCxzQ0FBMEM7QUFVMUMsd0RBQXdEO0FBQ2pELEtBQUssVUFBVSxhQUFhLENBQ2pDLGVBQWdDLEVBQ2hDLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxFQUM5QixNQUE4QjtJQUU5QixNQUFNLFlBQVksR0FBaUI7UUFDakMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkMsU0FBUyxFQUFFLFNBQVMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QjtRQUNqRSx5QkFBeUI7UUFDekIsZUFBZTtRQUNmLFlBQVksRUFBRSxLQUFLO1FBQ25CLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTztRQUNwQyxlQUFlLEVBQUUsQ0FBQztRQUNsQixNQUFNO0tBQ1AsQ0FBQztJQUVGLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztJQUVqRCxNQUFNLEtBQUssR0FBRyxJQUFBLG1CQUFXLEVBQUMsWUFBWSxDQUFDLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RDLHlHQUF5RztRQUN6RyxNQUFNLGdCQUFnQixHQUFzQixPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUxRSxtRUFBbUU7UUFDbkUsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUs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