UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

111 lines (110 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getApplicationByPath = exports.getApplicationBySlug = exports.getApplications = exports.getApplication = exports.getManager = exports.initManager = void 0; const data_service_1 = require("./data-service"); const manager_1 = require("./manager"); let manager; /** * init resource manager * its singleton * @param opt init manager options * @example const opt = { apps: [{ appId: '1000', appName: 'app name', options: {} }], dataService: { host: '', path: '' }, } as ManagerOption; * @returns {ManagerImpl} */ const initManager = async (opt) => { if (!manager) { manager = new manager_1.ManagerImpl(opt); } try { if (manager) { let config = opt; // create foxpage data service if (config) { (0, data_service_1.createFoxpageDataService)(config.dataService); } const { afterManagerCreate } = manager.hooks || {}; if (typeof afterManagerCreate === 'function') { config = (await afterManagerCreate(Object.assign(Object.assign({}, opt), { // extension api: { updateConfig: (serviceConfig) => { data_service_1.foxpageDataService.update(serviceConfig); }, } })))[0]; } // for data service dynamic change data_service_1.foxpageDataService.update(config.dataService, true); if (config.dataService.runtimeOpt) { data_service_1.foxpageDataService.update(config.dataService.runtimeOpt, false); } // manager prepare await manager.prepare(config); // register apps await manager.registerApplications(opt.apps); } return manager; } catch (e) { manager = null; throw new Error(`Init manager failed: ${e.message}`); } }; exports.initManager = initManager; /** * get manager * @returns Manager */ const getManager = () => { return manager; }; exports.getManager = getManager; /** * get application via appId * @param appId application appId * @returns Application|undefined */ const getApplication = (appId) => { if (manager) { return manager.getApplication(appId); } }; exports.getApplication = getApplication; /** * get appList * @param appIds * @returns Application[] */ const getApplications = (appIds) => { if (manager) { return manager.getApplications(appIds); } return []; }; exports.getApplications = getApplications; /** * get application via appName * @param slug application slug * @returns Application|undefined */ const getApplicationBySlug = (slug) => { if (manager) { return manager.getApplicationBySlug(slug); } return undefined; }; exports.getApplicationBySlug = getApplicationBySlug; /** * get application via path * @param path user request path * @returns Application|undefined */ const getApplicationByPath = (path) => { if (manager) { return manager.getApplicationByPath(path); } return undefined; }; exports.getApplicationByPath = getApplicationByPath;