New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@divine/synchronization

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@divine/synchronization - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

lib/src/pubsub.d.ts

308

lib/bundle.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define('@divine/synchronization', ['exports'], factory) :
(factory((global['@divine'] = global['@divine'] || {}, global['@divine'].synchronization = {})));
(global = global || self, factory((global['@divine'] = global['@divine'] || {}, global['@divine'].synchronization = {})));
}(this, (function (exports) { 'use strict';
function unwrapExports (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}

@@ -16,14 +16,14 @@

/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

@@ -61,4 +61,6 @@ /* global Reflect, Promise */

if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;

@@ -83,6 +85,7 @@ }

function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());

@@ -120,10 +123,18 @@ });

var __createBinding = Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
}
function __values(o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
return {
if (o && typeof o.length === "number") return {
next: function () {

@@ -134,2 +145,3 @@ if (o && i >= o.length) o = void 0;

};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}

@@ -160,2 +172,9 @@

function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
function __await(v) {

@@ -195,7 +214,13 @@ return this instanceof __await ? (this.v = v, this) : new __await(v);

}
var __setModuleDefault = Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;

@@ -208,3 +233,19 @@ }

function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
}
var tslib_es6 = /*#__PURE__*/Object.freeze({
__proto__: null,
__extends: __extends,

@@ -218,2 +259,3 @@ get __assign () { return __assign; },

__generator: __generator,
__createBinding: __createBinding,
__exportStar: __exportStar,

@@ -223,2 +265,3 @@ __values: __values,

__spread: __spread,
__spreadArrays: __spreadArrays,
__await: __await,

@@ -230,3 +273,5 @@ __asyncGenerator: __asyncGenerator,

__importStar: __importStar,
__importDefault: __importDefault
__importDefault: __importDefault,
__classPrivateFieldGet: __classPrivateFieldGet,
__classPrivateFieldSet: __classPrivateFieldSet
});

@@ -478,3 +523,3 @@

}
if (index < size / 2) {
if (i < size / 2) {
this._head = (this._head + index + count + len) & this._capacityMask;

@@ -489,2 +534,3 @@ for (k = index; k > 0; k--) {

}
if (index < 0) this._tail = i;
} else {

@@ -673,2 +719,3 @@ this._tail = i;

Object.defineProperty(exports, "__esModule", { value: true });
exports.DRRQueue = void 0;

@@ -695,3 +742,3 @@ var denque_1 = tslib_es6.__importDefault(denque);

},
enumerable: true,
enumerable: false,
configurable: true

@@ -755,2 +802,3 @@ });

Object.defineProperty(exports, "__esModule", { value: true });
exports.FairCondition = exports.Condition = exports.FairSignal = exports.Signal = exports.SignalBase = void 0;

@@ -763,2 +811,9 @@ var denque_1 = tslib_es6.__importDefault(denque);

}
Object.defineProperty(SignalBase.prototype, "value", {
get: function () {
return this._value;
},
enumerable: false,
configurable: true
});
SignalBase.prototype.notify = function (value) {

@@ -768,2 +823,3 @@ if (value === undefined) {

}
this._value = value;
for (var waiter = this._waiters.shift(); waiter; waiter = this._waiters.shift()) {

@@ -871,10 +927,11 @@ if (!waiter.aborted) {

unwrapExports(condition);
var condition_1 = condition.SignalBase;
var condition_2 = condition.Signal;
var condition_1 = condition.FairCondition;
var condition_2 = condition.Condition;
var condition_3 = condition.FairSignal;
var condition_4 = condition.Condition;
var condition_5 = condition.FairCondition;
var condition_4 = condition.Signal;
var condition_5 = condition.SignalBase;
var queue = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairQueue = exports.Queue = exports.BlockingQueue = void 0;

@@ -895,3 +952,3 @@ var denque_1 = tslib_es6.__importDefault(denque);

},
enumerable: true,
enumerable: false,
configurable: true

@@ -1008,8 +1065,9 @@ });

unwrapExports(queue);
var queue_1 = queue.BlockingQueue;
var queue_1 = queue.FairQueue;
var queue_2 = queue.Queue;
var queue_3 = queue.FairQueue;
var queue_3 = queue.BlockingQueue;
var semaphore = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairMutex = exports.FairSemaphore = exports.Mutex = exports.Semaphore = void 0;

@@ -1183,9 +1241,10 @@

unwrapExports(semaphore);
var semaphore_1 = semaphore.Semaphore;
var semaphore_2 = semaphore.Mutex;
var semaphore_3 = semaphore.FairSemaphore;
var semaphore_4 = semaphore.FairMutex;
var semaphore_1 = semaphore.FairMutex;
var semaphore_2 = semaphore.FairSemaphore;
var semaphore_3 = semaphore.Mutex;
var semaphore_4 = semaphore.Semaphore;
var extras = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReadWriteLock = exports.Lightswitch = exports.Barrier = void 0;

@@ -1349,61 +1408,154 @@

unwrapExports(extras);
var extras_1 = extras.Barrier;
var extras_1 = extras.ReadWriteLock;
var extras_2 = extras.Lightswitch;
var extras_3 = extras.ReadWriteLock;
var extras_3 = extras.Barrier;
var pubsub = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairPubSub = exports.PubSub = void 0;
var PubSubBase = /** @class */ (function () {
function PubSubBase() {
this._topic = new Set();
}
PubSubBase.prototype.publish = function (data) {
var e_1, _a;
var result = 0;
try {
for (var _b = tslib_es6.__values(this._topic), _c = _b.next(); !_c.done; _c = _b.next()) {
var queue = _c.value;
try {
queue.push(data);
++result;
}
catch (ex) {
if (ex instanceof RangeError !== true) {
throw ex;
}
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return result;
};
PubSubBase.prototype.publishOrWait = function (data, timeout) {
return tslib_es6.__awaiter(this, void 0, void 0, function () {
var result;
return tslib_es6.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, Promise.all(tslib_es6.__spread(this._topic).map(function (queue) { return queue.pushOrWait(data, timeout); }))];
case 1:
result = _a.sent();
return [2 /*return*/, result.filter(function (res) { return res !== undefined; }).length];
}
});
});
};
PubSubBase.prototype.subscribe = function (timeout) {
return tslib_es6.__asyncGenerator(this, arguments, function subscribe_1() {
var queue;
return tslib_es6.__generator(this, function (_a) {
switch (_a.label) {
case 0:
queue = this._createQueue();
_a.label = 1;
case 1:
_a.trys.push([1, , 7, 8]);
this._topic.add(queue);
_a.label = 2;
case 2:
return [4 /*yield*/, tslib_es6.__await(queue.shiftOrWait(timeout))];
case 3: return [4 /*yield*/, tslib_es6.__await.apply(void 0, [_a.sent()])];
case 4: return [4 /*yield*/, _a.sent()];
case 5:
_a.sent();
return [3 /*break*/, 2];
case 6: return [3 /*break*/, 8];
case 7:
this._topic.delete(queue);
return [7 /*endfinally*/];
case 8: return [2 /*return*/];
}
});
});
};
Object.defineProperty(PubSubBase.prototype, "subscribers", {
get: function () {
return this._topic.size;
},
enumerable: false,
configurable: true
});
return PubSubBase;
}());
var PubSub = /** @class */ (function (_super) {
tslib_es6.__extends(PubSub, _super);
function PubSub(_capacity) {
var _this = _super.call(this) || this;
_this._capacity = _capacity;
return _this;
}
PubSub.prototype._createQueue = function () {
return new queue.Queue(this._capacity);
};
return PubSub;
}(PubSubBase));
exports.PubSub = PubSub;
var FairPubSub = /** @class */ (function (_super) {
tslib_es6.__extends(FairPubSub, _super);
function FairPubSub(_capacity) {
var _this = _super.call(this) || this;
_this._capacity = _capacity;
return _this;
}
FairPubSub.prototype._createQueue = function () {
return new queue.FairQueue(this._capacity);
};
return FairPubSub;
}(PubSubBase));
exports.FairPubSub = FairPubSub;
});
unwrapExports(pubsub);
var pubsub_1 = pubsub.FairPubSub;
var pubsub_2 = pubsub.PubSub;
var src = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.DRRQueue = drrQueue.DRRQueue;
Object.defineProperty(exports, "DRRQueue", { enumerable: true, get: function () { return drrQueue.DRRQueue; } });
exports.Signal = condition.Signal;
exports.FairSignal = condition.FairSignal;
exports.Condition = condition.Condition;
exports.FairCondition = condition.FairCondition;
Object.defineProperty(exports, "Signal", { enumerable: true, get: function () { return condition.Signal; } });
Object.defineProperty(exports, "FairSignal", { enumerable: true, get: function () { return condition.FairSignal; } });
Object.defineProperty(exports, "Condition", { enumerable: true, get: function () { return condition.Condition; } });
Object.defineProperty(exports, "FairCondition", { enumerable: true, get: function () { return condition.FairCondition; } });
exports.Queue = queue.Queue;
exports.FairQueue = queue.FairQueue;
Object.defineProperty(exports, "Queue", { enumerable: true, get: function () { return queue.Queue; } });
Object.defineProperty(exports, "FairQueue", { enumerable: true, get: function () { return queue.FairQueue; } });
exports.Semaphore = semaphore.Semaphore;
exports.FairSemaphore = semaphore.FairSemaphore;
exports.Mutex = semaphore.Mutex;
exports.FairMutex = semaphore.FairMutex;
Object.defineProperty(exports, "Semaphore", { enumerable: true, get: function () { return semaphore.Semaphore; } });
Object.defineProperty(exports, "FairSemaphore", { enumerable: true, get: function () { return semaphore.FairSemaphore; } });
Object.defineProperty(exports, "Mutex", { enumerable: true, get: function () { return semaphore.Mutex; } });
Object.defineProperty(exports, "FairMutex", { enumerable: true, get: function () { return semaphore.FairMutex; } });
exports.Barrier = extras.Barrier;
exports.Lightswitch = extras.Lightswitch;
exports.ReadWriteLock = extras.ReadWriteLock;
Object.defineProperty(exports, "Barrier", { enumerable: true, get: function () { return extras.Barrier; } });
Object.defineProperty(exports, "Lightswitch", { enumerable: true, get: function () { return extras.Lightswitch; } });
Object.defineProperty(exports, "ReadWriteLock", { enumerable: true, get: function () { return extras.ReadWriteLock; } });
Object.defineProperty(exports, "PubSub", { enumerable: true, get: function () { return pubsub.PubSub; } });
Object.defineProperty(exports, "FairPubSub", { enumerable: true, get: function () { return pubsub.FairPubSub; } });
});
var index = unwrapExports(src);
var src_1 = src.DRRQueue;
var src_2 = src.Signal;
var src_3 = src.FairSignal;
var src_4 = src.Condition;
var src_5 = src.FairCondition;
var src_6 = src.Queue;
var src_7 = src.FairQueue;
var src_8 = src.Semaphore;
var src_9 = src.FairSemaphore;
var src_10 = src.Mutex;
var src_11 = src.FairMutex;
var src_12 = src.Barrier;
var src_13 = src.Lightswitch;
var src_14 = src.ReadWriteLock;
exports.default = index;
exports.DRRQueue = src_1;
exports.Signal = src_2;
exports.FairSignal = src_3;
exports.Condition = src_4;
exports.FairCondition = src_5;
exports.Queue = src_6;
exports.FairQueue = src_7;
exports.Semaphore = src_8;
exports.FairSemaphore = src_9;
exports.Mutex = src_10;
exports.FairMutex = src_11;
exports.Barrier = src_12;
exports.Lightswitch = src_13;
exports.ReadWriteLock = src_14;

@@ -1410,0 +1562,0 @@ Object.defineProperty(exports, '__esModule', { value: true });

@@ -13,3 +13,5 @@ import { DRRData } from './drr-queue';

private _waiters;
private _value;
constructor(_waiters: BackingQueue<Waiter<T>, W>);
get value(): T | undefined;
notify(value: T): boolean;

@@ -16,0 +18,0 @@ notifyAll(value: T): boolean;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairCondition = exports.Condition = exports.FairSignal = exports.Signal = exports.SignalBase = void 0;
var tslib_1 = require("tslib");

@@ -10,2 +11,9 @@ var denque_1 = tslib_1.__importDefault(require("denque"));

}
Object.defineProperty(SignalBase.prototype, "value", {
get: function () {
return this._value;
},
enumerable: false,
configurable: true
});
SignalBase.prototype.notify = function (value) {

@@ -15,2 +23,3 @@ if (value === undefined) {

}
this._value = value;
for (var waiter = this._waiters.shift(); waiter; waiter = this._waiters.shift()) {

@@ -17,0 +26,0 @@ if (!waiter.aborted) {

@@ -13,3 +13,3 @@ export interface DRRData<T> {

constructor(quantumSize?: number);
readonly length: number;
get length(): number;
push(_data: DRRData<T>): number;

@@ -16,0 +16,0 @@ shift(): T | undefined;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DRRQueue = void 0;
var tslib_1 = require("tslib");

@@ -24,3 +25,3 @@ var denque_1 = tslib_1.__importDefault(require("denque"));

},
enumerable: true,
enumerable: false,
configurable: true

@@ -27,0 +28,0 @@ });

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReadWriteLock = exports.Lightswitch = exports.Barrier = void 0;
var tslib_1 = require("tslib");

@@ -4,0 +5,0 @@ var semaphore_1 = require("./semaphore");

@@ -6,1 +6,2 @@ export { DRRData, DRRQueue } from './drr-queue';

export { Barrier, Lightswitch, ReadWriteLock } from './extras';
export { PubSub, FairPubSub } from './pubsub';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var drr_queue_1 = require("./drr-queue");
exports.DRRQueue = drr_queue_1.DRRQueue;
Object.defineProperty(exports, "DRRQueue", { enumerable: true, get: function () { return drr_queue_1.DRRQueue; } });
var condition_1 = require("./condition");
exports.Signal = condition_1.Signal;
exports.FairSignal = condition_1.FairSignal;
exports.Condition = condition_1.Condition;
exports.FairCondition = condition_1.FairCondition;
Object.defineProperty(exports, "Signal", { enumerable: true, get: function () { return condition_1.Signal; } });
Object.defineProperty(exports, "FairSignal", { enumerable: true, get: function () { return condition_1.FairSignal; } });
Object.defineProperty(exports, "Condition", { enumerable: true, get: function () { return condition_1.Condition; } });
Object.defineProperty(exports, "FairCondition", { enumerable: true, get: function () { return condition_1.FairCondition; } });
var queue_1 = require("./queue");
exports.Queue = queue_1.Queue;
exports.FairQueue = queue_1.FairQueue;
Object.defineProperty(exports, "Queue", { enumerable: true, get: function () { return queue_1.Queue; } });
Object.defineProperty(exports, "FairQueue", { enumerable: true, get: function () { return queue_1.FairQueue; } });
var semaphore_1 = require("./semaphore");
exports.Semaphore = semaphore_1.Semaphore;
exports.FairSemaphore = semaphore_1.FairSemaphore;
exports.Mutex = semaphore_1.Mutex;
exports.FairMutex = semaphore_1.FairMutex;
Object.defineProperty(exports, "Semaphore", { enumerable: true, get: function () { return semaphore_1.Semaphore; } });
Object.defineProperty(exports, "FairSemaphore", { enumerable: true, get: function () { return semaphore_1.FairSemaphore; } });
Object.defineProperty(exports, "Mutex", { enumerable: true, get: function () { return semaphore_1.Mutex; } });
Object.defineProperty(exports, "FairMutex", { enumerable: true, get: function () { return semaphore_1.FairMutex; } });
var extras_1 = require("./extras");
exports.Barrier = extras_1.Barrier;
exports.Lightswitch = extras_1.Lightswitch;
exports.ReadWriteLock = extras_1.ReadWriteLock;
Object.defineProperty(exports, "Barrier", { enumerable: true, get: function () { return extras_1.Barrier; } });
Object.defineProperty(exports, "Lightswitch", { enumerable: true, get: function () { return extras_1.Lightswitch; } });
Object.defineProperty(exports, "ReadWriteLock", { enumerable: true, get: function () { return extras_1.ReadWriteLock; } });
var pubsub_1 = require("./pubsub");
Object.defineProperty(exports, "PubSub", { enumerable: true, get: function () { return pubsub_1.PubSub; } });
Object.defineProperty(exports, "FairPubSub", { enumerable: true, get: function () { return pubsub_1.FairPubSub; } });
//# sourceMappingURL=index.js.map

@@ -11,3 +11,3 @@ import { DRRData } from './drr-queue';

protected abstract _notifyWriter(): void;
readonly length: number;
get length(): number;
isEmpty(): boolean;

@@ -25,4 +25,4 @@ isFull(): boolean;

constructor(capacity?: number);
_waitForWrite(_data: T, timeout?: number): Promise<boolean>;
_notifyWriter(): void;
protected _waitForWrite(_data: T, timeout?: number): Promise<boolean>;
protected _notifyWriter(): void;
}

@@ -32,4 +32,4 @@ export declare class FairQueue<T> extends BlockingQueue<T, DRRData<T>> {

constructor(capacity?: number);
_waitForWrite(data: DRRData<T>, timeout?: number): Promise<boolean>;
_notifyWriter(): void;
protected _waitForWrite(data: DRRData<T>, timeout?: number): Promise<boolean>;
protected _notifyWriter(): void;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairQueue = exports.Queue = exports.BlockingQueue = void 0;
var tslib_1 = require("tslib");

@@ -18,3 +19,3 @@ var denque_1 = tslib_1.__importDefault(require("denque"));

},
enumerable: true,
enumerable: false,
configurable: true

@@ -21,0 +22,0 @@ });

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FairMutex = exports.FairSemaphore = exports.Mutex = exports.Semaphore = void 0;
var tslib_1 = require("tslib");

@@ -4,0 +5,0 @@ var condition_1 = require("./condition");

{
"name": "@divine/synchronization",
"version": "1.0.0",
"version": "1.1.0",
"description": "The Divine Synchronization Library",

@@ -12,7 +12,20 @@ "main": "lib/src/index.js",

"keywords": [
"synchronization", "lock",
"signal", "condition", "condition variable",
"queue", "blocking queue", "fair queue", "ddr-queue", "deficit round-robin",
"semaphore", "fair semaphore", "mutex", "fair mutex",
"barrier", "cyclic barrier", "lightswitch", "read-write lock"
"synchronization",
"lock",
"signal",
"condition",
"condition variable",
"queue",
"blocking queue",
"fair queue",
"ddr-queue",
"deficit round-robin",
"semaphore",
"fair semaphore",
"mutex",
"fair mutex",
"barrier",
"cyclic barrier",
"lightswitch",
"read-write lock"
],

@@ -29,14 +42,14 @@ "scripts": {

"denque": "^1.4.0",
"tslib": "^1.9.3"
"tslib": "^2.0.0"
},
"devDependencies": {
"alsatian": "alpha",
"alsatian": "3.2.1",
"coveralls": "^3.0.2",
"nyc": "^13.1.0",
"rollup": "^0.67.3",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-sourcemaps": "^0.4.2",
"typescript": "^3.1.6"
"nyc": "15.1.0",
"rollup": "^2.16.1",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-sourcemaps": "^0.6.2",
"typescript": "^3.9.5"
}
}
# The Divine Synchronization Library
[![npm version](https://badge.fury.io/js/%40divine%2Fsynchronization.svg)](https://badge.fury.io/js/%40divine%2Fsynchronization)
[![Build Status](https://travis-ci.org/LeviticusMB/divine-synchronization.svg?branch=master)](https://travis-ci.org/LeviticusMB/divine-synchronization)

@@ -48,2 +49,10 @@ [![Coverage Status](https://coveralls.io/repos/github/LeviticusMB/divine-synchronization/badge.svg?branch=master)](https://coveralls.io/github/LeviticusMB/divine-synchronization?branch=master)

***NOTE***: *Don't mistake this for a* Pub/Sub *primitive!* While possible, it's very difficult to use these two
primitives as event emitters without losing messages. See below instead.
### `PubSub` and `FairPubSub`
A *Pub/Sub* primitive, with configurable capacity, blocking publishing and generator-based subscription, suitable to be
used in a `for await`-loop.
### `Semaphore` and `FairSemaphore`

@@ -50,0 +59,0 @@

@@ -17,4 +17,10 @@ import Deque from 'denque';

export class SignalBase<T, W> {
private _value: T | undefined;
constructor(private _waiters: BackingQueue<Waiter<T>, W>) {}
get value(): T | undefined {
return this._value;
}
notify(value: T): boolean {

@@ -25,2 +31,4 @@ if (value === undefined) {

this._value = value;
for (let waiter = this._waiters.shift(); waiter; waiter = this._waiters.shift()) {

@@ -27,0 +35,0 @@ if (!waiter.aborted) {

@@ -7,1 +7,2 @@ export { DRRData, DRRQueue } from './drr-queue';

export { Barrier, Lightswitch, ReadWriteLock } from './extras';
export { PubSub, FairPubSub } from './pubsub';

@@ -87,7 +87,7 @@ import Deque from 'denque';

_waitForWrite(_data: T, timeout?: number) {
protected _waitForWrite(_data: T, timeout?: number) {
return this._writeCondition.wait(timeout);
}
_notifyWriter() {
protected _notifyWriter() {
this._writeCondition.notify();

@@ -104,9 +104,9 @@ }

_waitForWrite(data: DRRData<T>, timeout?: number) {
protected _waitForWrite(data: DRRData<T>, timeout?: number) {
return this._writeCondition.wait(data.id, timeout);
}
_notifyWriter() {
protected _notifyWriter() {
this._writeCondition.notify();
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc