UNPKG

hugbot

Version:

Chatbot maker for HuggingFace Inference API and other AI API providers and backends.

92 lines 5.27 kB
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _IObuffer_instances, _a, _IObuffer_queue, _IObuffer_callStack, _IObuffer_bot, _IObuffer_processing, _IObuffer_delay, _IObuffer_process, _IObuffer_sleep, _IObuffer_rnd; import { FCFSqueue } from "./FCFS_queue"; /** * This is used for async user message processing. * The bot instance is injected in constructor/with set method in the builder function and its * respondTo method is used to process the queued messages one by one with sleep intervals * set with rateLimit property. * Add event listeners with onResponse methods then push messages to the queue with pushMessage method. */ export class IObuffer { constructor(rateLimit = 5000, bot) { _IObuffer_instances.add(this); _IObuffer_queue.set(this, new FCFSqueue()); _IObuffer_callStack.set(this, new Map()); _IObuffer_bot.set(this, null); _IObuffer_processing.set(this, false); _IObuffer_delay.set(this, void 0); __classPrivateFieldSet(this, _IObuffer_delay, rateLimit, "f"); if (bot) { __classPrivateFieldSet(this, _IObuffer_bot, bot, "f"); } } set setBot(bot) { __classPrivateFieldSet(this, _IObuffer_bot, bot, "f"); } onResponse(...cb) { cb.forEach(cb => __classPrivateFieldGet(this, _IObuffer_callStack, "f").set(cb.name, cb)); } removeEventListener(name) { if (name === "all") { __classPrivateFieldGet(this, _IObuffer_callStack, "f").clear(); } else if (__classPrivateFieldGet(this, _IObuffer_callStack, "f").has(name)) { __classPrivateFieldGet(this, _IObuffer_callStack, "f").delete(name); } } pushMessage(msg) { __classPrivateFieldGet(this, _IObuffer_queue, "f").push(msg); if (!__classPrivateFieldGet(this, _IObuffer_processing, "f")) { __classPrivateFieldSet(this, _IObuffer_processing, true, "f"); setTimeout(() => __classPrivateFieldGet(this, _IObuffer_instances, "m", _IObuffer_process).call(this), 0); } } } _a = IObuffer, _IObuffer_queue = new WeakMap(), _IObuffer_callStack = new WeakMap(), _IObuffer_bot = new WeakMap(), _IObuffer_processing = new WeakMap(), _IObuffer_delay = new WeakMap(), _IObuffer_instances = new WeakSet(), _IObuffer_process = async function _IObuffer_process() { const t1 = performance.now(); __classPrivateFieldSet(this, _IObuffer_processing, true, "f"); if (__classPrivateFieldGet(this, _IObuffer_queue, "f").len <= 0) { __classPrivateFieldSet(this, _IObuffer_processing, false, "f"); return; } else if (!__classPrivateFieldGet(this, _IObuffer_bot, "f") || !__classPrivateFieldGet(this, _IObuffer_bot, "f").respondTo) { console.error("IOBuffer: Can't access HugBot instance."); __classPrivateFieldSet(this, _IObuffer_processing, false, "f"); return; } else { try { const msg = __classPrivateFieldGet(this, _IObuffer_queue, "f").popLeft(); if (msg) { const res = await __classPrivateFieldGet(this, _IObuffer_bot, "f").respondTo(__classPrivateFieldGet(this, _IObuffer_bot, "f"), msg); __classPrivateFieldGet(this, _IObuffer_callStack, "f").forEach(cb => cb(res)); } } catch (what) { console.error(what); } } const t2 = performance.now(); const deltaT = t2 - t1; if (deltaT < __classPrivateFieldGet(this, _IObuffer_delay, "f")) { await __classPrivateFieldGet(_a, _a, "m", _IObuffer_sleep).call(_a, __classPrivateFieldGet(this, _IObuffer_delay, "f") - deltaT); } __classPrivateFieldSet(this, _IObuffer_delay, __classPrivateFieldGet(_a, _a, "m", _IObuffer_rnd).call(_a, __classPrivateFieldGet(this, _IObuffer_delay, "f") / 1.2, __classPrivateFieldGet(this, _IObuffer_delay, "f")), "f"); __classPrivateFieldGet(this, _IObuffer_instances, "m", _IObuffer_process).call(this); }, _IObuffer_sleep = function _IObuffer_sleep(ms) { return new Promise((res) => setTimeout(res, ms)); }, _IObuffer_rnd = function _IObuffer_rnd(min, max) { return Math.floor(Math.random() * (max - min) + min); }; //# sourceMappingURL=IObuffer.js.map