{"version":3,"sources":["jsdelivr-header.js","/npm/async-interval-job@1.2.0/dist/index.js"],"names":[],"mappings":"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","file":"/npm/async-interval-job@1.2.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/async-interval-job@1.2.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateOptions = exports.validateIntervalMs = exports.validateHandler = exports.AsyncIntervalJob = void 0;\nvar nodejs_timer_1 = require(\"nodejs-timer\");\nvar AsyncIntervalJob = /** @class */ (function () {\n    /**\n     * Construtor of AsyncIntervalJob\n     * @param handler `MUST` Function to execute for each interval.\n     * @param intervalMs `MUST` Millisecond to wait between each function execution.\n     * @param options {AsyncIntervalJobOptions} `OPTIONAL`\n     */\n    function AsyncIntervalJob(handler, intervalMs, options) {\n        var _this = this;\n        validateHandler(handler);\n        validateIntervalMs(intervalMs);\n        validateOptions(options);\n        var defaultOptions = {\n            autoStart: false,\n            stopOnError: false,\n            runImmediately: false,\n        };\n        this._handler = handler;\n        this._intervalMs = intervalMs;\n        this._options = Object.assign(defaultOptions, options);\n        this._timer = new nodejs_timer_1.Timer(function () {\n            _this._loop();\n        });\n        this._isHandling = false;\n        this._isBeforeStop = false;\n        this._stopCallbacks = [];\n        if (this._options.autoStart)\n            this.start();\n    }\n    /**\n     * Start the Job\n     */\n    AsyncIntervalJob.prototype.start = function () {\n        if (this._isLooping)\n            return;\n        if (this._options.runImmediately)\n            this._loop();\n        else\n            this._timer.start(this._intervalMs);\n    };\n    /**\n     * Stop the job.\n     * @returns Promise -\n     *  If job isn't handling, will clear the interval and resolve the returned promise.\n     *  Otherwise, will wait until the handling finish and resolve the returned promise.\n     */\n    AsyncIntervalJob.prototype.stop = function () {\n        var _this = this;\n        return new Promise(function (resolve) {\n            if (!_this._isLooping)\n                return resolve();\n            if (_this._isWaitForNextHandle) {\n                _this._timer.clear();\n                return resolve();\n            }\n            _this._isBeforeStop = true;\n            _this._stopCallbacks.push(resolve);\n        });\n    };\n    /**\n     * Get current state of the interval job\n     * @returns {AsyncIntervalJobState}\n     */\n    AsyncIntervalJob.prototype.getState = function () {\n        return {\n            isHandling: this._isHandling,\n            isWaitForNextHandle: this._isWaitForNextHandle,\n            isBeforeStop: this._isBeforeStop,\n        };\n    };\n    Object.defineProperty(AsyncIntervalJob.prototype, \"_isWaitForNextHandle\", {\n        get: function () {\n            return this._timer.isRunning();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AsyncIntervalJob.prototype, \"_isLooping\", {\n        get: function () {\n            return this._isWaitForNextHandle || this._isHandling;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AsyncIntervalJob.prototype._loop = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var error_1, callback;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, 3, 4]);\n                        return [4 /*yield*/, this._run()];\n                    case 1:\n                        _a.sent();\n                        if (!this._isBeforeStop)\n                            this._timer.start(this._intervalMs);\n                        return [3 /*break*/, 4];\n                    case 2:\n                        error_1 = _a.sent();\n                        if (!this._isBeforeStop && !this._options.stopOnError)\n                            this._timer.start(this._intervalMs);\n                        return [3 /*break*/, 4];\n                    case 3:\n                        this._isBeforeStop = false;\n                        while (this._stopCallbacks.length) {\n                            callback = this._stopCallbacks.pop();\n                            if (callback)\n                                callback();\n                        }\n                        return [7 /*endfinally*/];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AsyncIntervalJob.prototype._run = function () {\n        var _this = this;\n        this._isHandling = true;\n        return Promise.resolve(this._handler()).finally(function () {\n            _this._isHandling = false;\n        });\n    };\n    return AsyncIntervalJob;\n}());\nexports.AsyncIntervalJob = AsyncIntervalJob;\n// @internal\nfunction validateHandler(val) {\n    if (typeof val !== 'function')\n        throw new TypeError('Invalid \"handler\". must be a function');\n}\nexports.validateHandler = validateHandler;\n// @internal\nfunction validateIntervalMs(val) {\n    if (typeof val !== 'number' || !Number.isInteger(val) || val <= 0)\n        throw new TypeError('Invalid \"intervalMs\". must be a positive integer');\n}\nexports.validateIntervalMs = validateIntervalMs;\n// @internal\nfunction validateOptions(val) {\n    if (typeof val === 'undefined')\n        return;\n    if (typeof val !== 'object' || val === null)\n        throw new TypeError('Invalid \"options\". must be an object');\n    if ('autoStart' in val) {\n        var autoStart = val.autoStart;\n        if (typeof autoStart !== 'boolean' && typeof autoStart !== 'undefined')\n            throw new TypeError('Invalid \"options.autoStart\". must be a boolean');\n    }\n    if ('runImmediately' in val) {\n        var runImmediately = val.runImmediately;\n        if (typeof runImmediately !== 'boolean' && typeof runImmediately !== 'undefined')\n            throw new TypeError('Invalid \"options.runImmediately\". must be a boolean');\n    }\n    if ('stopOnError' in val) {\n        var stopOnError = val.stopOnError;\n        if (typeof stopOnError !== 'boolean' && typeof stopOnError !== 'undefined')\n            throw new TypeError('Invalid \"options.stopOnError\". must be a boolean');\n    }\n}\nexports.validateOptions = validateOptions;\n"]}