@forestadmin/forest-cloud
Version:
Utility to bootstrap and publish forest admin cloud projects customization
70 lines • 6.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateTypingsWithCustomizations = exports.updateTypings = void 0;
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);
}
exports.updateTypings = updateTypings;
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);
}
exports.updateTypingsWithCustomizations = updateTypingsWithCustomizations;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXR5cGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdXBkYXRlLXR5cGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsOENBQStEO0FBQy9ELG9FQUFrRjtBQUNsRiwwRUFBNEU7QUFDNUUsNEVBQThFO0FBQzlFLGdFQUFpRjtBQUNqRix3RUFBMkU7QUFDM0UsZ0RBQXdCO0FBRXhCLCtDQUFtRDtBQUduRCw4RUFBcUQ7QUFDckQsc0NBQTBDO0FBRTFDLFNBQVMsOEJBQThCLENBQ3JDLGFBQXdFO0lBRXhFLE9BQU8sUUFBUSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLCtCQUErQixDQUFDO0FBQy9GLENBQUM7QUFRRCxLQUFLLFVBQVUsb0JBQW9CLENBQ2pDLEtBQXFDLEVBQ3JDLFVBQStCO0lBRS9CLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO1FBRXJGLElBQUksOEJBQThCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUEsb0RBQWlDLEVBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBQSw4Q0FBd0IsRUFBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDL0UsTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsbURBQWtDLEVBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUEsZ0RBQXlCLEVBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hELE1BQU07YUFDUCxDQUFDLENBQUM7U0FDSjtLQUNGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLEtBQUssR0FBRyxDQUFVLENBQUM7UUFFekIsSUFBSSxzQkFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsNkNBQXdCLENBQUMsRUFBRTtZQUMzRCxNQUFNLElBQUksc0JBQWEsQ0FDckIsd0hBQXdILENBQ3pILENBQUM7U0FDSDtRQUVELE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxXQUF3QjtJQUNoRCxNQUFNLFlBQVksR0FBaUI7UUFDakMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QixXQUFXLEVBQUUsT0FBTztRQUNwQixZQUFZLEVBQUUsS0FBSztLQUNwQixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixXQUFXO1NBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQy9DLEdBQUcsQ0FBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FDcEUsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVNLEtBQUssVUFBVSxhQUFhLENBQ2pDLFdBQXdCLEVBQ3hCLG9CQUEwQztJQUUxQyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBTkQsc0NBTUM7QUFFTSxLQUFLLFVBQVUsK0JBQStCLENBQ25ELFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2hDLG9CQUEwQztJQUUxQyxNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sSUFBQSxnQ0FBa0IsRUFBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxJQUFBLDRCQUFpQixFQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQVZELDBFQVVDIn0=