@blackglory/structures 0.3.7 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -21
- package/dist/es2015/index.min.mjs +2 -16
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +2679 -25690
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +2691 -25703
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +2 -16
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +2 -16
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +2680 -25681
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +2692 -25694
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +2 -16
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/box.d.ts +1 -1
- package/lib/es2015/box.js +3 -17
- package/lib/es2015/box.js.map +1 -1
- package/lib/es2015/emitter.d.ts +6 -6
- package/lib/es2015/emitter.js +11 -18
- package/lib/es2015/emitter.js.map +1 -1
- package/lib/es2015/expirable-map.d.ts +2 -1
- package/lib/es2015/expirable-map.js +14 -27
- package/lib/es2015/expirable-map.js.map +1 -1
- package/lib/es2015/finite-state-machine.d.ts +1 -1
- package/lib/es2015/finite-state-machine.js +4 -18
- package/lib/es2015/finite-state-machine.js.map +1 -1
- package/lib/es2015/hash-map.d.ts +1 -1
- package/lib/es2015/hash-map.js +8 -14
- package/lib/es2015/hash-map.js.map +1 -1
- package/lib/es2015/hash-set.d.ts +1 -1
- package/lib/es2015/hash-set.js +9 -15
- package/lib/es2015/hash-set.js.map +1 -1
- package/lib/es2015/index.d.ts +0 -1
- package/lib/es2015/index.js +0 -1
- package/lib/es2015/index.js.map +1 -1
- package/lib/es2015/lru-map.d.ts +2 -1
- package/lib/es2015/lru-map.js +15 -28
- package/lib/es2015/lru-map.js.map +1 -1
- package/lib/es2015/queue.d.ts +1 -1
- package/lib/es2015/queue.js +8 -14
- package/lib/es2015/queue.js.map +1 -1
- package/lib/es2015/tlru-map.d.ts +4 -2
- package/lib/es2015/tlru-map.js +21 -35
- package/lib/es2015/tlru-map.js.map +1 -1
- package/lib/es2015/trie-map.d.ts +1 -1
- package/lib/es2015/trie-map.js +6 -12
- package/lib/es2015/trie-map.js.map +1 -1
- package/lib/es2018/box.d.ts +1 -1
- package/lib/es2018/box.js +3 -17
- package/lib/es2018/box.js.map +1 -1
- package/lib/es2018/emitter.d.ts +6 -6
- package/lib/es2018/emitter.js +11 -18
- package/lib/es2018/emitter.js.map +1 -1
- package/lib/es2018/expirable-map.d.ts +2 -1
- package/lib/es2018/expirable-map.js +14 -27
- package/lib/es2018/expirable-map.js.map +1 -1
- package/lib/es2018/finite-state-machine.d.ts +1 -1
- package/lib/es2018/finite-state-machine.js +4 -18
- package/lib/es2018/finite-state-machine.js.map +1 -1
- package/lib/es2018/hash-map.d.ts +1 -1
- package/lib/es2018/hash-map.js +8 -14
- package/lib/es2018/hash-map.js.map +1 -1
- package/lib/es2018/hash-set.d.ts +1 -1
- package/lib/es2018/hash-set.js +9 -15
- package/lib/es2018/hash-set.js.map +1 -1
- package/lib/es2018/index.d.ts +0 -1
- package/lib/es2018/index.js +0 -1
- package/lib/es2018/index.js.map +1 -1
- package/lib/es2018/lru-map.d.ts +2 -1
- package/lib/es2018/lru-map.js +15 -28
- package/lib/es2018/lru-map.js.map +1 -1
- package/lib/es2018/queue.d.ts +1 -1
- package/lib/es2018/queue.js +8 -14
- package/lib/es2018/queue.js.map +1 -1
- package/lib/es2018/tlru-map.d.ts +4 -2
- package/lib/es2018/tlru-map.js +21 -35
- package/lib/es2018/tlru-map.js.map +1 -1
- package/lib/es2018/trie-map.d.ts +1 -1
- package/lib/es2018/trie-map.js +6 -12
- package/lib/es2018/trie-map.js.map +1 -1
- package/package.json +6 -7
- package/lib/es2015/instance-manager.d.ts +0 -14
- package/lib/es2015/instance-manager.js +0 -52
- package/lib/es2015/instance-manager.js.map +0 -1
- package/lib/es2018/instance-manager.d.ts +0 -14
- package/lib/es2018/instance-manager.js +0 -43
- package/lib/es2018/instance-manager.js.map +0 -1
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.InstanceManager = void 0;
|
|
13
|
-
const errors_1 = require("@blackglory/errors");
|
|
14
|
-
const extra_promise_1 = require("extra-promise");
|
|
15
|
-
class InstanceManager {
|
|
16
|
-
constructor(construct, destruct) {
|
|
17
|
-
this.construct = construct;
|
|
18
|
-
this.destruct = destruct;
|
|
19
|
-
this.instances = [];
|
|
20
|
-
this.targetQuantity = 0;
|
|
21
|
-
this.lock = new extra_promise_1.Mutex();
|
|
22
|
-
}
|
|
23
|
-
getInstances() {
|
|
24
|
-
return [...this.instances];
|
|
25
|
-
}
|
|
26
|
-
getCurrentQuantity() {
|
|
27
|
-
return this.instances.length;
|
|
28
|
-
}
|
|
29
|
-
getTargetQuantity() {
|
|
30
|
-
return this.targetQuantity;
|
|
31
|
-
}
|
|
32
|
-
setTargetQuantity(target) {
|
|
33
|
-
(0, errors_1.assert)(target >= 0, 'target quantity must be greater than or equal to 0');
|
|
34
|
-
(0, errors_1.assert)(Number.isInteger(target), 'target quantity must be integer');
|
|
35
|
-
this.targetQuantity = target;
|
|
36
|
-
}
|
|
37
|
-
scale() {
|
|
38
|
-
return this.lock.acquire(() => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
while (this.instances.length !== this.targetQuantity) {
|
|
40
|
-
while (this.instances.length < this.targetQuantity) {
|
|
41
|
-
this.instances.push(yield this.construct());
|
|
42
|
-
}
|
|
43
|
-
while (this.instances.length > this.targetQuantity) {
|
|
44
|
-
const instance = this.instances.pop();
|
|
45
|
-
yield this.destruct(instance);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.InstanceManager = InstanceManager;
|
|
52
|
-
//# sourceMappingURL=instance-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/instance-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA2C;AAE3C,iDAAqC;AAErC,MAAa,eAAe;IAK1B,YACU,SAA6B,EAC7B,QAA0C;QAD1C,cAAS,GAAT,SAAS,CAAoB;QAC7B,aAAQ,GAAR,QAAQ,CAAkC;QAN5C,cAAS,GAAQ,EAAE,CAAA;QACnB,mBAAc,GAAW,CAAC,CAAA;QAC1B,SAAI,GAAU,IAAI,qBAAK,EAAE,CAAA;IAK9B,CAAC;IAEJ,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC9B,IAAA,eAAM,EAAC,MAAM,IAAI,CAAC,EAAE,oDAAoD,CAAC,CAAA;QACzE,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,iCAAiC,CAAC,CAAA;QAEnE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAA;IAC9B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAS,EAAE;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE;gBACpD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;oBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;iBAC5C;gBAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;oBAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAA;oBACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;iBAC9B;aACF;QACH,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;CACF;AA3CD,0CA2CC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Awaitable } from 'justypes';
|
|
2
|
-
export declare class InstanceManager<T> {
|
|
3
|
-
private construct;
|
|
4
|
-
private destruct;
|
|
5
|
-
private instances;
|
|
6
|
-
private targetQuantity;
|
|
7
|
-
private lock;
|
|
8
|
-
constructor(construct: () => Awaitable<T>, destruct: (instance: T) => Awaitable<void>);
|
|
9
|
-
getInstances(): T[];
|
|
10
|
-
getCurrentQuantity(): number;
|
|
11
|
-
getTargetQuantity(): number;
|
|
12
|
-
setTargetQuantity(target: number): void;
|
|
13
|
-
scale(): Promise<void>;
|
|
14
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InstanceManager = void 0;
|
|
4
|
-
const errors_1 = require("@blackglory/errors");
|
|
5
|
-
const extra_promise_1 = require("extra-promise");
|
|
6
|
-
class InstanceManager {
|
|
7
|
-
constructor(construct, destruct) {
|
|
8
|
-
this.construct = construct;
|
|
9
|
-
this.destruct = destruct;
|
|
10
|
-
this.instances = [];
|
|
11
|
-
this.targetQuantity = 0;
|
|
12
|
-
this.lock = new extra_promise_1.Mutex();
|
|
13
|
-
}
|
|
14
|
-
getInstances() {
|
|
15
|
-
return [...this.instances];
|
|
16
|
-
}
|
|
17
|
-
getCurrentQuantity() {
|
|
18
|
-
return this.instances.length;
|
|
19
|
-
}
|
|
20
|
-
getTargetQuantity() {
|
|
21
|
-
return this.targetQuantity;
|
|
22
|
-
}
|
|
23
|
-
setTargetQuantity(target) {
|
|
24
|
-
(0, errors_1.assert)(target >= 0, 'target quantity must be greater than or equal to 0');
|
|
25
|
-
(0, errors_1.assert)(Number.isInteger(target), 'target quantity must be integer');
|
|
26
|
-
this.targetQuantity = target;
|
|
27
|
-
}
|
|
28
|
-
scale() {
|
|
29
|
-
return this.lock.acquire(async () => {
|
|
30
|
-
while (this.instances.length !== this.targetQuantity) {
|
|
31
|
-
while (this.instances.length < this.targetQuantity) {
|
|
32
|
-
this.instances.push(await this.construct());
|
|
33
|
-
}
|
|
34
|
-
while (this.instances.length > this.targetQuantity) {
|
|
35
|
-
const instance = this.instances.pop();
|
|
36
|
-
await this.destruct(instance);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.InstanceManager = InstanceManager;
|
|
43
|
-
//# sourceMappingURL=instance-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/instance-manager.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAE3C,iDAAqC;AAErC,MAAa,eAAe;IAK1B,YACU,SAA6B,EAC7B,QAA0C;QAD1C,cAAS,GAAT,SAAS,CAAoB;QAC7B,aAAQ,GAAR,QAAQ,CAAkC;QAN5C,cAAS,GAAQ,EAAE,CAAA;QACnB,mBAAc,GAAW,CAAC,CAAA;QAC1B,SAAI,GAAU,IAAI,qBAAK,EAAE,CAAA;IAK9B,CAAC;IAEJ,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC9B,IAAA,eAAM,EAAC,MAAM,IAAI,CAAC,EAAE,oDAAoD,CAAC,CAAA;QACzE,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,iCAAiC,CAAC,CAAA;QAEnE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAA;IAC9B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE;gBACpD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;oBAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;iBAC5C;gBAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;oBAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAA;oBACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;iBAC9B;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AA3CD,0CA2CC"}
|