@webfaas/webfaas-core
Version:
WebFaaS Framework - Core
142 lines • 4.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackageRegistryManager = void 0;
const PackageRegistryManagerItem_1 = require("./PackageRegistryManagerItem");
const Log_1 = require("../Log/Log");
const Core_1 = require("../Core");
/**
* manager PackageRegistry pool
*/
class PackageRegistryManager {
constructor(log) {
this.defaultRegistryName = "";
this.listRegistry = new Map();
this.log = log || new Log_1.Log();
Core_1.EventManager.addListener(Core_1.EventManagerEnum.QUIT, () => {
this.stop();
});
}
/**
* return default registry name
*/
getDefaultRegistryName() {
return this.defaultRegistryName;
}
/**
* set default registry name
* @param name registry name
*/
setDefaultRegistryName(name) {
this.defaultRegistryName = name;
}
/**
* return item registry by registry name
* @param name registry name
*/
getRegistryItem(name) {
return this.listRegistry.get(name) || null;
}
/**
* return registry by name
* @param name registry name
*/
getRegistry(name) {
let item = this.getRegistryItem(name);
if (item) {
return item.registry;
}
else {
return null;
}
}
/**
*
* @param moduleName return registry name by extenal routing
*/
getRegistryNameByExternalRouting(moduleName) {
return "";
}
/**
* return RegistryManagerItem by module name
* @param name module name
*/
getRegistryManagerItemByModuleName(moduleName) {
let targetName;
let item = null;
targetName = this.getRegistryNameByExternalRouting(moduleName);
if (targetName) {
item = this.getRegistryItem(targetName);
}
else {
item = this.getRegistryItem(this.defaultRegistryName);
}
return item;
}
/**
* add registry
* @param name name of registry
* @param slaveName slave name of registry
* @param registry registry
*/
addRegistry(name, slaveName, registry) {
var item = new PackageRegistryManagerItem_1.PackageRegistryManagerItem(name, slaveName, registry);
this.listRegistry.set(name, item);
if (!this.defaultRegistryName) {
this.setDefaultRegistryName(name);
}
}
/**
*
* @param name return PackageStore
* @param version package version
* @param etag package etag
*/
getPackageStore(name, version, etag, registryName) {
return new Promise(async (resolve, reject) => {
var packageRegistryResponseObj;
if (this.listRegistry.size) {
let item;
if (registryName) {
item = this.getRegistryItem(registryName);
}
else {
item = this.getRegistryManagerItemByModuleName(name);
}
if (item) {
try {
if (version) {
packageRegistryResponseObj = await item.registry.getPackage(name, version, etag);
//TO-DO: RETRY WITH SLAVE
}
else {
packageRegistryResponseObj = await item.registry.getManifest(name, etag);
//TO-DO: RETRY WITH SLAVE
}
if (packageRegistryResponseObj.packageStore) {
resolve(packageRegistryResponseObj.packageStore);
}
else {
resolve(null);
}
}
catch (errTryGetPackageOrManifest) {
reject(errTryGetPackageOrManifest);
}
}
else {
reject(new Error("PackageRegistryManagerItem not available"));
}
}
else {
reject(new Error("PackageRegistryManager not configured"));
}
});
}
stop() {
this.listRegistry.forEach((item) => {
item.registry.stop();
});
}
}
exports.PackageRegistryManager = PackageRegistryManager;
//# sourceMappingURL=PackageRegistryManager.js.map