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