{"version":3,"file":"async-mutex-CU-bp9PP.js","sources":["../../node_modules/async-mutex/index.mjs"],"sourcesContent":["const E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nconst E_ALREADY_LOCKED = new Error('mutex already locked');\nconst E_CANCELED = new Error('request for lock canceled');\n\nvar __awaiter$2 = (undefined && undefined.__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};\nclass Semaphore {\n constructor(_value, _cancelError = E_CANCELED) {\n this._value = _value;\n this._cancelError = _cancelError;\n this._weightedQueues = [];\n this._weightedWaiters = [];\n }\n acquire(weight = 1) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n return new Promise((resolve, reject) => {\n if (!this._weightedQueues[weight - 1])\n this._weightedQueues[weight - 1] = [];\n this._weightedQueues[weight - 1].push({ resolve, reject });\n this._dispatch();\n });\n }\n runExclusive(callback, weight = 1) {\n return __awaiter$2(this, void 0, void 0, function* () {\n const [value, release] = yield this.acquire(weight);\n try {\n return yield callback(value);\n }\n finally {\n release();\n }\n });\n }\n waitForUnlock(weight = 1) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n return new Promise((resolve) => {\n if (!this._weightedWaiters[weight - 1])\n this._weightedWaiters[weight - 1] = [];\n this._weightedWaiters[weight - 1].push(resolve);\n this._dispatch();\n });\n }\n isLocked() {\n return this._value <= 0;\n }\n getValue() {\n return this._value;\n }\n setValue(value) {\n this._value = value;\n this._dispatch();\n }\n release(weight = 1) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n this._value += weight;\n this._dispatch();\n }\n cancel() {\n this._weightedQueues.forEach((queue) => queue.forEach((entry) => entry.reject(this._cancelError)));\n this._weightedQueues = [];\n }\n _dispatch() {\n var _a;\n for (let weight = this._value; weight > 0; weight--) {\n const queueEntry = (_a = this._weightedQueues[weight - 1]) === null || _a === void 0 ? void 0 : _a.shift();\n if (!queueEntry)\n continue;\n const previousValue = this._value;\n const previousWeight = weight;\n this._value -= weight;\n weight = this._value + 1;\n queueEntry.resolve([previousValue, this._newReleaser(previousWeight)]);\n }\n this._drainUnlockWaiters();\n }\n _newReleaser(weight) {\n let called = false;\n return () => {\n if (called)\n return;\n called = true;\n this.release(weight);\n };\n }\n _drainUnlockWaiters() {\n for (let weight = this._value; weight > 0; weight--) {\n if (!this._weightedWaiters[weight - 1])\n continue;\n this._weightedWaiters[weight - 1].forEach((waiter) => waiter());\n this._weightedWaiters[weight - 1] = [];\n }\n }\n}\n\nvar __awaiter$1 = (undefined && undefined.__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};\nclass Mutex {\n constructor(cancelError) {\n this._semaphore = new Semaphore(1, cancelError);\n }\n acquire() {\n return __awaiter$1(this, void 0, void 0, function* () {\n const [, releaser] = yield this._semaphore.acquire();\n return releaser;\n });\n }\n runExclusive(callback) {\n return this._semaphore.runExclusive(() => callback());\n }\n isLocked() {\n return this._semaphore.isLocked();\n }\n waitForUnlock() {\n return this._semaphore.waitForUnlock();\n }\n release() {\n if (this._semaphore.isLocked())\n this._semaphore.release();\n }\n cancel() {\n return this._semaphore.cancel();\n }\n}\n\nvar __awaiter = (undefined && undefined.__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};\nfunction withTimeout(sync, timeout, timeoutError = E_TIMEOUT) {\n return {\n acquire: (weight) => {\n if (weight !== undefined && weight <= 0) {\n throw new Error(`invalid weight ${weight}: must be positive`);\n }\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let isTimeout = false;\n const handle = setTimeout(() => {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n try {\n const ticket = yield sync.acquire(weight);\n if (isTimeout) {\n const release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n }\n catch (e) {\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e);\n }\n }\n }));\n },\n runExclusive(callback, weight) {\n return __awaiter(this, void 0, void 0, function* () {\n let release = () => undefined;\n try {\n const ticket = yield this.acquire(weight);\n if (Array.isArray(ticket)) {\n release = ticket[1];\n return yield callback(ticket[0]);\n }\n else {\n release = ticket;\n return yield callback();\n }\n }\n finally {\n release();\n }\n });\n },\n release(weight) {\n sync.release(weight);\n },\n cancel() {\n return sync.cancel();\n },\n waitForUnlock: (weight) => {\n if (weight !== undefined && weight <= 0) {\n throw new Error(`invalid weight ${weight}: must be positive`);\n }\n return new Promise((resolve, reject) => {\n const handle = setTimeout(() => reject(timeoutError), timeout);\n sync.waitForUnlock(weight).then(() => {\n clearTimeout(handle);\n resolve();\n });\n });\n },\n isLocked: () => sync.isLocked(),\n getValue: () => sync.getValue(),\n setValue: (value) => sync.setValue(value),\n };\n}\n\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError = E_ALREADY_LOCKED) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return withTimeout(sync, 0, alreadyAcquiredError);\n}\n\nexport { E_ALREADY_LOCKED, E_CANCELED, E_TIMEOUT, Mutex, Semaphore, tryAcquire, withTimeout };\n"],"names":["E_CANCELED","__awaiter$2","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","Semaphore","_value","_cancelError","weight","callback","release","queue","entry","_a","queueEntry","previousValue","previousWeight","called","waiter","__awaiter$1","Mutex","cancelError","releaser"],"mappings":"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","x_google_ignoreList":[0]}