@ixily/activ
Version:
Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.
66 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IdeaTrafficDirectorModule = void 0;
const __1 = require("../..");
const state = {
sequentialPools: new Map(),
};
const processSequentialPool = async (id) => {
if (state.sequentialPools.get(id).sequentialPoolStack.length > 0) {
// take all elements from pool
state.sequentialPools.get(id).sequentialPoolRunningStack =
state.sequentialPools
.get(id)
.sequentialPoolStack.splice(0, state.sequentialPools.get(id).sequentialPoolStack.length);
for (const task of state.sequentialPools.get(id)
.sequentialPoolRunningStack) {
await task();
}
state.sequentialPools.get(id).sequentialPoolRunningStack = [];
}
if (state.sequentialPools.get(id).sequentialPoolStack.length !== 0) {
setTimeout(() => {
solveSequentialPool(id);
}, 10);
}
};
const solveSequentialPool = async (id) => {
if (!state.sequentialPools.get(id).solvingSequentialPool) {
state.sequentialPools.get(id).solvingSequentialPool = true;
await (0, __1.rest)(10);
await processSequentialPool(id);
state.sequentialPools.get(id).solvingSequentialPool = false;
}
};
const addAndSolveSequentialPool = (id, task) => {
if (!state.sequentialPools.has(id)) {
state.sequentialPools.set(id, {
id,
sequentialPoolStack: [],
sequentialPoolRunningStack: [],
solvingSequentialPool: false,
});
}
state.sequentialPools.get(id).sequentialPoolStack.push(task);
solveSequentialPool(id);
};
const runSequentialTicket = async (params, task) => {
const id = params.join('|');
const promisedResult = new Promise(async (resolve, reject) => {
const executeTask = async () => {
try {
const result = await task();
resolve(result);
}
catch (err) {
reject(err);
}
};
addAndSolveSequentialPool(id, executeTask);
});
return promisedResult;
};
exports.IdeaTrafficDirectorModule = {
runSequentialTicket,
};
//# sourceMappingURL=idea-traffic-director.module.js.map