@foxpage/foxpage-manager
Version:
foxpage resource manager
111 lines (110 loc) • 3.29 kB
JavaScript
;
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;