@forestadmin/forest-cloud
Version:
Utility to bootstrap and publish forest admin cloud projects customization
78 lines • 6.79 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRpbmctYWdlbnQtbG9jYWxseS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zdGFydGluZy1hZ2VudC1sb2NhbGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUErRDtBQUMvRCxvRUFJdUM7QUFDdkMsZ0VBQXFGO0FBQ3JGLDJEQUE2QjtBQUU3QiwrQ0FBbUQ7QUFFbkQsOEVBQXFEO0FBQ3JELHNDQUEwQztBQVUxQyx3REFBd0Q7QUFDakQsS0FBSyxVQUFVLGFBQWEsQ0FDakMsZUFBZ0MsRUFDaEMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQzlCLE1BQThCO0lBRTlCLE1BQU0sWUFBWSxHQUFpQjtRQUNqQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2QyxTQUFTLEVBQUUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCO1FBQ2pFLHlCQUF5QjtRQUN6QixlQUFlO1FBQ2YsWUFBWSxFQUFFLEtBQUs7UUFDbkIsTUFBTTtLQUNQLENBQUM7SUFFRixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxlQUFlLENBQUM7SUFFakQsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXhDLElBQUk7UUFDRixNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEMseUdBQXlHO1FBQ3pHLE1BQU0sZ0JBQWdCLEdBQXNCLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFFLG1FQUFtRTtRQUNuRSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0tBQ2pEO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLENBQUMsT0FBTyxFQUFFLGtCQUFrQixvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxzQkFBYSxDQUNyQiwyQkFBMkIsb0JBQW9CLG1EQUFtRCxDQUNuRyxDQUFDO0tBQ0g7SUFFRCxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyxlQUFlLENBQUM7SUFFdkQsTUFBTSxJQUFBLGdDQUFrQixFQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDckQsSUFBQSw0QkFBaUIsRUFBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztJQUVyRCxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2hELENBQUM7QUF0Q0Qsc0NBc0NDO0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxpQkFBdUQ7SUFDOUYsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDckM7SUFFRCxJQUFJLE9BQU8saUJBQWlCLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxVQUFxRDtJQUN4RixNQUFNLE9BQU8sR0FBRywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU1RCxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxLQUFxQyxFQUNyQyxXQUF3QjtJQUV4QixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLEVBQUU7UUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUVyRixJQUFJLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzdELEtBQUssQ0FBQyxhQUFhLENBQ2pCLElBQUEsd0NBQXFCLEVBQUM7Z0JBQ3BCLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsS0FBSyxRQUFRO29CQUNsRCxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFO29CQUN2QyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO2dCQUNqQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO2FBQ1gsQ0FBQyxFQUMzQjtnQkFDRSxNQUFNO2FBQ1AsQ0FDRixDQUFDO1NBQ0g7YUFBTTtZQUNMLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBQSxvQ0FBbUIsRUFBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDckUsTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=