UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

54 lines (52 loc) 5.71 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/utils/mutex.ts var mutex_exports = {}; __export(mutex_exports, { default: () => mutex }); module.exports = __toCommonJS(mutex_exports); var import_errors = require("../errors/index.cjs"); var MUTEX_QUEUE = /* @__PURE__ */ Symbol(); function mutex(method, context) { if (context && typeof context === "object" && typeof context.addInitializer !== "function") { throw new import_errors.UnsupportedRuntimeError("Requires Stage 3 decorator support."); } context.addInitializer(function() { if (!this[MUTEX_QUEUE]) { Object.defineProperty(this, MUTEX_QUEUE, { value: [] }); } }); return /* @__PURE__ */ __name(function mutexWrapper(...args) { let queue = this[MUTEX_QUEUE], promise, resolve, dequeue = /* @__PURE__ */ __name(() => queue.shift()?.(), "dequeue"); if (queue.length) { promise = new Promise((arg0) => { resolve = arg0; }); queue.push(resolve); } else { promise = Promise.resolve(); queue.push(dequeue); } return promise.then(() => method.apply(this, args)).finally(dequeue); }, "mutexWrapper"); } __name(mutex, "mutex"); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL211dGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBVbnN1cHBvcnRlZFJ1bnRpbWVFcnJvciB9IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZXJyb3JzXCI7XG5cbmNvbnN0IE1VVEVYX1FVRVVFID0gLyogQF9fUFVSRV9fICovIFN5bWJvbCgpO1xuXG4vKipcbiAqIFtBUEkgUmVmZXJlbmNlXShodHRwczovL3RhaS1rdW4uZ2l0aHViLmlvL3N1cnJlYWxkYi5qcy92Mi9hcGkvdXRpbHMvbXV0ZXgvKVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtdXRleDxcbiAgVE1ldGhvZCBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IFByb21pc2VMaWtlPGFueT4sXG4+KFxuICBtZXRob2Q6IFRNZXRob2QsXG4gIGNvbnRleHQ6IENsYXNzTWV0aG9kRGVjb3JhdG9yQ29udGV4dCxcbik6IChcbiAgdGhpczogYW55LFxuICAuLi5hcmdzOiBQYXJhbWV0ZXJzPFRNZXRob2Q+XG4pID0+IFByb21pc2U8QXdhaXRlZDxSZXR1cm5UeXBlPFRNZXRob2Q+Pj4ge1xuICBpZiAoXG4gICAgY29udGV4dFxuICAgICYmIHR5cGVvZiBjb250ZXh0ID09PSBcIm9iamVjdFwiXG4gICAgJiYgdHlwZW9mIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgIT09IFwiZnVuY3Rpb25cIlxuICApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRSdW50aW1lRXJyb3IoXCJSZXF1aXJlcyBTdGFnZSAzIGRlY29yYXRvciBzdXBwb3J0LlwiKTtcbiAgfVxuXG4gIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgaWYgKCF0aGlzW01VVEVYX1FVRVVFXSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE1VVEVYX1FVRVVFLCB7IHZhbHVlOiBbXSB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBtdXRleFdyYXBwZXIoLi4uYXJncykge1xuICAgIGxldCBxdWV1ZTogKCgpID0+IHZvaWQpW10gPSB0aGlzW01VVEVYX1FVRVVFXSxcbiAgICAgIHByb21pc2U6IFByb21pc2U8dm9pZD4sXG4gICAgICByZXNvbHZlOiAoKSA9PiB2b2lkLFxuICAgICAgZGVxdWV1ZSA9ICgpID0+IHF1ZXVlLnNoaWZ0KCk/LigpO1xuXG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGFyZzAgPT4ge1xuICAgICAgICByZXNvbHZlID0gYXJnMDtcbiAgICAgIH0pO1xuICAgICAgcXVldWUucHVzaChyZXNvbHZlISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFx1MzBBRFx1MzBFNVx1MzBGQ1x1MzA0Q1x1N0E3QVx1MzA2RVx1NTgzNFx1NTQwOFx1MzA2Rlx1NUY4Q1x1N0Q5QVx1MzA2RVx1MzBCRlx1MzBCOVx1MzBBRlx1MzA0Q1x1NEUwQVx1MzA2RVx1Njc2MVx1NEVGNlx1MzA2Qlx1NTE2NVx1MzA4Qlx1MzA1M1x1MzA2OFx1MzA0Q1x1MzA2N1x1MzA0RFx1MzA4Qlx1MzA4OFx1MzA0Nlx1MzA2QiBxdWV1ZSBcdTMwNkIgZGVxdWV1ZSBcdTMwOTJcdThGRkRcdTUyQTBcdTMwMDJcbiAgICAgIC8vIGRlcXVldWUgXHUzMDZGIFByb21pc2UgXHUzMDZFXHU4OUUzXHU2QzdBXHU1RjhDXHUzMDZCXHUzMDgyXHU1NDdDXHUzMDczXHU1MUZBXHUzMDU1XHUzMDhDXHUzMDhCXHUzMDRDXHUzMDAxMiBcdTU2REVcdTkwMjNcdTdEOUFcdTMwNjcgZGVxdWV1ZSBcdTMwOTJcdTU0N0NcdTMwNzNcdTUxRkFcdTMwNTlcdTMwNTNcdTMwNjhcdTMwNjdcdTMwMDFcbiAgICAgIC8vIFx1NUY4Q1x1N0Q5QVx1MzA2RVx1MzBCRlx1MzBCOVx1MzBBRlx1MzA5Mlx1NUI5Rlx1ODg0Q1x1MzA1OVx1MzA4Qlx1MzA1M1x1MzA2OFx1MzA0Q1x1MzA2N1x1MzA0RFx1MzA4Qlx1MzAwMlxuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgcXVldWUucHVzaChkZXF1ZXVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgLnRoZW4oKCkgPT4gbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpKVxuICAgICAgLmZpbmFsbHkoZGVxdWV1ZSk7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBQXdDO0FBRXhDLElBQU0sY0FBOEIsdUJBQU87QUFLNUIsU0FBUixNQUdMLFFBQ0EsU0FJeUM7QUFDekMsTUFDRSxXQUNHLE9BQU8sWUFBWSxZQUNuQixPQUFPLFFBQVEsbUJBQW1CLFlBQ3JDO0FBQ0EsVUFBTSxJQUFJLHNDQUF3QixxQ0FBcUM7QUFBQSxFQUN6RTtBQUVBLFVBQVEsZUFBZSxXQUFvQjtBQUN6QyxRQUFJLENBQUMsS0FBSyxXQUFXLEdBQUc7QUFDdEIsYUFBTyxlQUFlLE1BQU0sYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQU8sZ0NBQVMsZ0JBQWdCLE1BQU07QUFDcEMsUUFBSSxRQUF3QixLQUFLLFdBQVcsR0FDMUMsU0FDQSxTQUNBLFVBQVUsNkJBQU0sTUFBTSxNQUFNLElBQUksR0FBdEI7QUFFWixRQUFJLE1BQU0sUUFBUTtBQUNoQixnQkFBVSxJQUFJLFFBQVEsVUFBUTtBQUM1QixrQkFBVTtBQUFBLE1BQ1osQ0FBQztBQUNELFlBQU0sS0FBSyxPQUFRO0FBQUEsSUFDckIsT0FBTztBQUlMLGdCQUFVLFFBQVEsUUFBUTtBQUMxQixZQUFNLEtBQUssT0FBTztBQUFBLElBQ3BCO0FBRUEsV0FBTyxRQUNKLEtBQUssTUFBTSxPQUFPLE1BQU0sTUFBTSxJQUFJLENBQUMsRUFDbkMsUUFBUSxPQUFPO0FBQUEsRUFDcEIsR0F0Qk87QUF1QlQ7QUE5Q3dCOyIsCiAgIm5hbWVzIjogW10KfQo=