UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

78 lines 6.79 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 = void 0; 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, 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(); } exports.startingAgent = startingAgent; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRpbmctYWdlbnQtbG9jYWxseS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zdGFydGluZy1hZ2VudC1sb2NhbGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUErRDtBQUMvRCxvRUFJdUM7QUFDdkMsZ0VBQXFGO0FBQ3JGLDJEQUE2QjtBQUU3QiwrQ0FBbUQ7QUFFbkQsOEVBQXFEO0FBQ3JELHNDQUEwQztBQVUxQyx3REFBd0Q7QUFDakQsS0FBSyxVQUFVLGFBQWEsQ0FDakMsZUFBZ0MsRUFDaEMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQzlCLE1BQThCO0lBRTlCLE1BQU0sWUFBWSxHQUFpQjtRQUNqQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2QyxTQUFTLEVBQUUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCO1FBQ2pFLHlCQUF5QjtRQUN6QixlQUFlO1FBQ2YsWUFBWSxFQUFFLEtBQUs7UUFDbkIsTUFBTTtLQUNQLENBQUM7SUFFRixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxlQUFlLENBQUM7SUFFakQsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXhDLElBQUk7UUFDRixNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEMseUdBQXlHO1FBQ3pHLE1BQU0sZ0JBQWdCLEdBQXNCLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFFLG1FQUFtRTtRQUNuRSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0tBQ2pEO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLENBQUMsT0FBTyxFQUFFLGtCQUFrQixvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0s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