@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
54 lines (52 loc) • 5.71 kB
JavaScript
;
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=