@doreamonjs/page-creator
Version:
page-creator for doreamonjs
77 lines (76 loc) • 2.56 kB
JavaScript
;
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;