{"version":3,"sources":["../src/lock.ts"],"names":["_queue","_locked","Lock","__privateAdd","Queue","__privateGet","resolve","__privateSet","next"],"mappings":"mEAAA,IAAAA,EAAAC,CAEaC,CAAAA,CAAAA,CAAN,KAAW,CAAX,cACHC,mBAAA,CAAA,IAAA,CAAAH,CAA0B,CAAA,IAAII,qBAC9BD,mBAAA,CAAA,IAAA,CAAAF,CAAU,CAAA,KAAA,EAAA,CAEV,MAAM,OAAyB,EAAA,CAC3B,GAAII,mBAAAA,CAAA,KAAKJ,CACL,CAAA,CAAA,OAAO,IAAI,OAAA,CAAeK,GAAYD,mBAAA,CAAA,IAAA,CAAKL,CAAO,CAAA,CAAA,OAAA,CAAQM,CAAO,CAAC,CAAA,CAElEC,oBAAA,IAAKN,CAAAA,CAAAA,CAAU,MAEvB,CAEA,MAAM,OAAU,EAAA,CACZ,GAAII,mBAAA,CAAA,IAAA,CAAKL,CAAO,CAAA,CAAA,MAAA,GAAW,GAAKK,mBAAA,CAAA,IAAA,CAAKJ,CAAS,CAAA,CAAA,CAC1CM,oBAAA,IAAKN,CAAAA,CAAAA,CAAU,OACf,MACJ,CAEA,IAAMO,CAAOH,CAAAA,mBAAAA,CAAA,IAAKL,CAAAA,CAAAA,CAAAA,CAAO,SACzB,CAAA,OAAO,IAAI,OAAA,CAAeM,GAAY,CAClCE,CAAAA,EACAF,CAAAA,CAAAA,GACJ,CAAC,CACL,CACJ,EAvBIN,CAAAA,CAAA,YACAC,CAAA,CAAA,IAAA,OAAA","file":"chunk-T2GJZRIQ.cjs","sourcesContent":["import { Queue } from \"./base/queue.js\";\n\nexport class Lock {\n    #queue: Queue<Function> = new Queue();\n    #locked = false;\n\n    async acquire(): Promise<void> {\n        if (this.#locked) {\n            return new Promise<void>((resolve) => this.#queue.enqueue(resolve));\n        } else {\n            this.#locked = true;\n        }\n    }\n\n    async release() {\n        if (this.#queue.length === 0 && this.#locked) {\n            this.#locked = false;\n            return;\n        }\n\n        const next = this.#queue.dequeue()!;\n        return new Promise<void>((resolve) => {\n            next();\n            resolve();\n        });\n    }\n}"]}