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