UNPKG

@doreamonjs/page-creator

Version:
77 lines (76 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Scheduler = exports.setInterval = exports.createNamspaceUtils = void 0; // import * as doreamonjs from '@doreamonjs/sdk'; const doreamon_1 = require("@zodash/doreamon"); const componentPropsCache = new Map(); function createNamspaceUtils(namespace) { const componentPropsKey = `component.props.namespace.[${namespace}]`; const setComponentProps = (props) => { // doreamonjs.state.set(componentPropsKey, props); componentPropsCache.set(componentPropsKey, props); }; const getComponentProps = () => { // return doreamonjs.state.get(componentPropsKey); return componentPropsCache.get(componentPropsKey); }; return { setComponentProps, getComponentProps, }; } exports.createNamspaceUtils = createNamspaceUtils; async function setInterval(fn, interval) { try { await fn.apply(null); } catch (error) { doreamon_1.default.logger.error(`setInterval error`, error); } await doreamon_1.default.delay(interval); await setInterval(fn, interval); } exports.setInterval = setInterval; class Scheduler { constructor(options) { this.options = options; this._jobs = new Map(); } get interval() { var _a; return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.interval) || 30 * 1000; } start() { setInterval(async () => { for (const [name, job] of this._jobs.entries()) { try { await job(); await doreamon_1.default.delay(500); } catch (error) { doreamon_1.default.logger.error(`scheduler job [${name}] error`, error); } } }, this.interval).catch(); } stop() { // } addJob(name, job) { if (this._jobs.has(name)) { doreamon_1.default.logger.warn(`failed to add job (name: ${name}), which is added before`); return; } doreamon_1.default.logger.debug(`[scheduler] add job (name: ${name})`); this._jobs.set(name, job); } removeJob(name) { if (!this._jobs.has(name)) { doreamon_1.default.logger.warn(`failed to remove job (name: ${name}), which is not found`); return; } doreamon_1.default.logger.debug(`[scheduler] remove job (name: ${name})`); this._jobs.delete(name); } } exports.Scheduler = Scheduler;