UNPKG

@webfaas/webfaas-core

Version:

WebFaaS Framework - Core

142 lines 4.47 kB
"use strict"; 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