1234567891011121314151617181920212223242526 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.concurrency = void 0;
- const tslib_1 = require("tslib");
- const concurrency_1 = require("./concurrency");
- const instances = new WeakMap();
- /**
- * A class method decorator that limits the concurrency of the method to the
- * given number of parallel executions. All invocations are queued and executed
- * in the order they were called.
- */
- function concurrency(limit) {
- return (fn, context) => {
- return function (...args) {
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
- let map = instances.get(this);
- if (!map)
- instances.set(this, (map = new WeakMap()));
- if (!map.has(fn))
- map.set(fn, (0, concurrency_1.concurrency)(limit));
- return map.get(fn)(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield fn.call(this, ...args); }));
- });
- };
- };
- }
- exports.concurrency = concurrency;
|