UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

95 lines (94 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VariableManagerImpl = void 0; const common_1 = require("../common"); const data_service_1 = require("../data-service"); const variable_1 = require("./variable"); /** * variable manager * * @export * @class VariableManager * @extends {ManagerBaseImpl} */ class VariableManagerImpl extends common_1.ManagerBaseImpl { constructor(app) { super(app, { type: 'variable', diskCache: { enable: true } }); } /** * add variable to manager * * @param {Variable} variable */ addVariable(variable) { this.logger.info(`add variable@${variable.id}, detail`); this.logger.debug(`add variable@${variable.id}, detail:`, JSON.stringify(variable)); const newVar = this.newVariable(variable); this.addOne(variable.id, variable, newVar); return newVar; } /** * remove local variable via variableId * * @param {string[]} variableIds */ removeVariables(variableIds) { this.remove(variableIds); } /** * get variable from local first, not exist will fetch from server * * @param {string} variableId * @return {*} {(Promise<Variable | undefined>)} */ async getVariable(variableId) { return (await this.getVariables([variableId]))[0]; } /** * get variables * * @param {string[]} variableIds * @return {*} {Promise<Variable[]>} */ async getVariables(variableIds) { return await this.find(variableIds); } /** * fetch application variable */ async freshVariables(variableIds) { const variables = await data_service_1.foxpageDataService.fetchVariables(this.appId, { variableIds }); return variables.map(variable => { return this.addVariable(variable); }); } async onFetch(list) { return await this.freshVariables(list); } async onPull(data) { const { updates, removes } = data.variable || {}; if (updates && updates.length > 0) { const contentIds = await this.filterExists(updates); if (contentIds.length > 0) { this.markNeedUpdates(contentIds); await this.freshVariables(contentIds); } } if (removes && removes.length > 0) { this.removeVariables(removes); } } onStash(data) { var _a; (_a = data.variables) === null || _a === void 0 ? void 0 : _a.map(variable => { this.addVariable(variable); }); } async createInstance(data) { return this.newVariable(data); } newVariable(data) { return new variable_1.VariableInstance(data); } } exports.VariableManagerImpl = VariableManagerImpl;