@blackglory/structures 0.3.4 → 0.3.7
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 +16 -0
- package/dist/es2015/index.min.mjs +16 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +30366 -2156
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +30379 -2168
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +16 -2
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +16 -2
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +30361 -2161
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +30374 -2173
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +16 -2
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/index.d.ts +1 -0
- package/lib/es2015/index.js +6 -1
- package/lib/es2015/index.js.map +1 -1
- package/lib/es2015/instance-manager.d.ts +14 -0
- package/lib/es2015/instance-manager.js +52 -0
- package/lib/es2015/instance-manager.js.map +1 -0
- package/lib/es2018/index.d.ts +1 -0
- package/lib/es2018/index.js +6 -1
- package/lib/es2018/index.js.map +1 -1
- package/lib/es2018/instance-manager.d.ts +14 -0
- package/lib/es2018/instance-manager.js +43 -0
- package/lib/es2018/instance-manager.js.map +1 -0
- package/package.json +22 -21
package/lib/es2015/index.d.ts
CHANGED
package/lib/es2015/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -22,4 +26,5 @@ __exportStar(require("./tlru-map"), exports);
|
|
|
22
26
|
__exportStar(require("./trie-map"), exports);
|
|
23
27
|
__exportStar(require("./finite-state-machine"), exports);
|
|
24
28
|
__exportStar(require("./observable-finite-state-machine"), exports);
|
|
29
|
+
__exportStar(require("./instance-manager"), exports);
|
|
25
30
|
//# sourceMappingURL=index.js.map
|
package/lib/es2015/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,qDAAkC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/lib/es2018/index.d.ts
CHANGED
package/lib/es2018/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -22,4 +26,5 @@ __exportStar(require("./tlru-map"), exports);
|
|
|
22
26
|
__exportStar(require("./trie-map"), exports);
|
|
23
27
|
__exportStar(require("./finite-state-machine"), exports);
|
|
24
28
|
__exportStar(require("./observable-finite-state-machine"), exports);
|
|
29
|
+
__exportStar(require("./instance-manager"), exports);
|
|
25
30
|
//# sourceMappingURL=index.js.map
|
package/lib/es2018/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,qDAAkC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blackglory/structures",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"files": [
|
|
6
6
|
"lib",
|
|
@@ -41,39 +41,40 @@
|
|
|
41
41
|
"node": ">=12"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@blackglory/jest-matchers": "^0.
|
|
45
|
-
"@commitlint/cli": "^16.2.
|
|
46
|
-
"@commitlint/config-conventional": "^16.2.
|
|
47
|
-
"@rollup/plugin-commonjs": "^
|
|
44
|
+
"@blackglory/jest-matchers": "^0.3.1",
|
|
45
|
+
"@commitlint/cli": "^16.2.4",
|
|
46
|
+
"@commitlint/config-conventional": "^16.2.4",
|
|
47
|
+
"@rollup/plugin-commonjs": "^22.0.0",
|
|
48
48
|
"@rollup/plugin-json": "^4.1.0",
|
|
49
|
-
"@rollup/plugin-node-resolve": "^13.
|
|
50
|
-
"@rollup/plugin-replace": "^
|
|
51
|
-
"@rollup/plugin-typescript": "^8.3.
|
|
52
|
-
"@types/jest": "^27.
|
|
49
|
+
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
50
|
+
"@rollup/plugin-replace": "^4.0.0",
|
|
51
|
+
"@rollup/plugin-typescript": "^8.3.2",
|
|
52
|
+
"@types/jest": "^27.5.0",
|
|
53
53
|
"@types/node": "14",
|
|
54
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
55
|
-
"@typescript-eslint/parser": "^5.
|
|
56
|
-
"eslint": "^8.
|
|
57
|
-
"extra-promise": "^0.21.2",
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^5.22.0",
|
|
55
|
+
"@typescript-eslint/parser": "^5.22.0",
|
|
56
|
+
"eslint": "^8.15.0",
|
|
58
57
|
"husky": "^4.3.8",
|
|
59
58
|
"jest": "^27.5.1",
|
|
60
59
|
"npm-run-all": "^4.1.5",
|
|
61
|
-
"return-style": "^0.
|
|
60
|
+
"return-style": "^1.0.0",
|
|
62
61
|
"rimraf": "^3.0.2",
|
|
63
|
-
"rollup": "^2.
|
|
62
|
+
"rollup": "^2.72.1",
|
|
64
63
|
"rollup-plugin-analyzer": "^4.0.0",
|
|
65
64
|
"rollup-plugin-terser": "^7.0.2",
|
|
66
65
|
"standard-version": "^9.3.2",
|
|
67
66
|
"ts-jest": "^27.1.3",
|
|
68
67
|
"tscpaths": "^0.0.9",
|
|
69
|
-
"tslib": "^2.
|
|
70
|
-
"typescript": "^4.
|
|
68
|
+
"tslib": "^2.4.0",
|
|
69
|
+
"typescript": "^4.6.4"
|
|
71
70
|
},
|
|
72
71
|
"dependencies": {
|
|
73
|
-
"@blackglory/errors": "^2.2.
|
|
74
|
-
"@blackglory/types": "^
|
|
72
|
+
"@blackglory/errors": "^2.2.1",
|
|
73
|
+
"@blackglory/types": "^1.1.0",
|
|
74
|
+
"extra-promise": "^1.0.2",
|
|
75
75
|
"extra-timers": "^0.2.5",
|
|
76
|
-
"iterable-operator": "^
|
|
77
|
-
"
|
|
76
|
+
"iterable-operator": "^1.1.0",
|
|
77
|
+
"justypes": "^2.0.0",
|
|
78
|
+
"rxjs": "^7.5.5"
|
|
78
79
|
}
|
|
79
80
|
}
|