@launchql/core
Version:
LaunchQL Package and Migration Tools
57 lines (56 loc) • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExtensionsAndModulesChanges = exports.getExtensionsAndModules = exports.latestChangeAndVersion = exports.latestChange = void 0;
const files_1 = require("../files");
const types_1 = require("@launchql/types");
/**
* Get the latest change from the pgpm.plan file for a specific module.
*/
const latestChange = (sqlmodule, modules, basePath) => {
const module = modules[sqlmodule];
if (!module) {
throw types_1.errors.MODULE_NOT_FOUND({ name: sqlmodule });
}
const planPath = `${basePath}/${module.path}/pgpm.plan`;
return (0, files_1.getLatestChange)(planPath);
};
exports.latestChange = latestChange;
/**
* Get the latest change and version for a specific module.
*/
const latestChangeAndVersion = (sqlmodule, modules, basePath) => {
const module = modules[sqlmodule];
if (!module) {
throw types_1.errors.MODULE_NOT_FOUND({ name: sqlmodule });
}
const planPath = `${basePath}/${module.path}/pgpm.plan`;
const change = (0, files_1.getLatestChange)(planPath);
const pkg = require(`${basePath}/${module.path}/package.json`);
return { change, version: pkg.version };
};
exports.latestChangeAndVersion = latestChangeAndVersion;
/**
* Get extensions and modules required by a specific module.
*/
const getExtensionsAndModules = (sqlmodule, modules) => {
const module = modules[sqlmodule];
if (!module) {
throw types_1.errors.MODULE_NOT_FOUND({ name: sqlmodule });
}
const native = module.requires.filter((req) => !Object.keys(modules).includes(req));
const sqitch = module.requires.filter((req) => Object.keys(modules).includes(req));
return { native, sqitch };
};
exports.getExtensionsAndModules = getExtensionsAndModules;
/**
* Get extensions and modules with their latest changes and versions.
*/
const getExtensionsAndModulesChanges = (sqlmodule, modules, basePath) => {
const { native, sqitch } = (0, exports.getExtensionsAndModules)(sqlmodule, modules);
const sqitchWithDetails = sqitch.map((mod) => {
const { change, version } = (0, exports.latestChangeAndVersion)(mod, modules, basePath);
return { name: mod, latest: change, version };
});
return { native, sqitch: sqitchWithDetails };
};
exports.getExtensionsAndModulesChanges = getExtensionsAndModulesChanges;