extra-pool 0.1.0 → 0.1.2

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.
Files changed (42) hide show
  1. package/README.md +2 -1
  2. package/lib/index.js.map +1 -0
  3. package/lib/{es2015/instance.d.ts → instance.d.ts} +5 -3
  4. package/lib/{es2018/instance.js → instance.js} +35 -19
  5. package/lib/instance.js.map +1 -0
  6. package/lib/{es2015/pool.d.ts → pool.d.ts} +5 -3
  7. package/lib/{es2018/pool.js → pool.js} +46 -35
  8. package/lib/pool.js.map +1 -0
  9. package/package.json +26 -41
  10. package/src/index.ts +1 -0
  11. package/src/instance.ts +133 -0
  12. package/src/pool.ts +194 -0
  13. package/dist/es2015/index.min.mjs +0 -2
  14. package/dist/es2015/index.min.mjs.map +0 -1
  15. package/dist/es2015/index.mjs +0 -16672
  16. package/dist/es2015/index.mjs.map +0 -1
  17. package/dist/es2015/index.umd.js +0 -16683
  18. package/dist/es2015/index.umd.js.map +0 -1
  19. package/dist/es2015/index.umd.min.js +0 -2
  20. package/dist/es2015/index.umd.min.js.map +0 -1
  21. package/dist/es2018/index.min.mjs +0 -2
  22. package/dist/es2018/index.min.mjs.map +0 -1
  23. package/dist/es2018/index.mjs +0 -16648
  24. package/dist/es2018/index.mjs.map +0 -1
  25. package/dist/es2018/index.umd.js +0 -16659
  26. package/dist/es2018/index.umd.js.map +0 -1
  27. package/dist/es2018/index.umd.min.js +0 -2
  28. package/dist/es2018/index.umd.min.js.map +0 -1
  29. package/lib/es2015/index.js.map +0 -1
  30. package/lib/es2015/instance.js +0 -97
  31. package/lib/es2015/instance.js.map +0 -1
  32. package/lib/es2015/pool.js +0 -129
  33. package/lib/es2015/pool.js.map +0 -1
  34. package/lib/es2018/index.d.ts +0 -1
  35. package/lib/es2018/index.js +0 -18
  36. package/lib/es2018/index.js.map +0 -1
  37. package/lib/es2018/instance.d.ts +0 -19
  38. package/lib/es2018/instance.js.map +0 -1
  39. package/lib/es2018/pool.d.ts +0 -26
  40. package/lib/es2018/pool.js.map +0 -1
  41. /package/lib/{es2015/index.d.ts → index.d.ts} +0 -0
  42. /package/lib/{es2015/index.js → index.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB"}
@@ -1,97 +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.Instance = exports.InstanceState = void 0;
13
- const prelude_1 = require("@blackglory/prelude");
14
- const extra_promise_1 = require("extra-promise");
15
- const structures_1 = require("@blackglory/structures");
16
- const rxjs_1 = require("rxjs");
17
- const operators_1 = require("rxjs/operators");
18
- var InstanceState;
19
- (function (InstanceState) {
20
- InstanceState["Creating"] = "creating";
21
- InstanceState["Idle"] = "idle";
22
- InstanceState["Using"] = "using";
23
- InstanceState["Destroying"] = "destroying";
24
- InstanceState["Destroyed"] = "destroyed";
25
- })(InstanceState = exports.InstanceState || (exports.InstanceState = {}));
26
- const instanceSchema = {
27
- [InstanceState.Creating]: {
28
- created: InstanceState.Idle
29
- },
30
- [InstanceState.Idle]: {
31
- use: InstanceState.Using,
32
- destroy: InstanceState.Destroying
33
- },
34
- [InstanceState.Using]: {
35
- used: InstanceState.Idle
36
- },
37
- [InstanceState.Destroying]: {
38
- destroyed: InstanceState.Destroyed
39
- },
40
- [InstanceState.Destroyed]: {}
41
- };
42
- class Instance {
43
- constructor(createValue, destroyValue) {
44
- this.destroyValue = destroyValue;
45
- this._value = new extra_promise_1.Deferred();
46
- this.fsm = new structures_1.ObservableFiniteStateMachine(instanceSchema, InstanceState.Creating);
47
- (0, prelude_1.go)(() => __awaiter(this, void 0, void 0, function* () {
48
- try {
49
- const val = yield createValue();
50
- this._value.resolve(val);
51
- this.fsm.send('created');
52
- }
53
- catch (e) {
54
- this._value.reject(e);
55
- }
56
- }));
57
- }
58
- waitForCreated() {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- yield this._value;
61
- });
62
- }
63
- getState() {
64
- return this.fsm.state;
65
- }
66
- use(fn) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- this.fsm.send('use');
69
- const value = yield this._value;
70
- try {
71
- return yield fn(value);
72
- }
73
- finally {
74
- this.fsm.send('used');
75
- }
76
- });
77
- }
78
- destroy() {
79
- var _a;
80
- return __awaiter(this, void 0, void 0, function* () {
81
- if (this.fsm.matches(InstanceState.Creating) ||
82
- this.fsm.matches(InstanceState.Using)) {
83
- yield (0, rxjs_1.firstValueFrom)(this.fsm.observeStateChanges().pipe((0, operators_1.filter)(state => state.newState === InstanceState.Idle)));
84
- }
85
- if (this.fsm.matches(InstanceState.Idle)) {
86
- this.fsm.send('destroy');
87
- yield ((_a = this.destroyValue) === null || _a === void 0 ? void 0 : _a.call(this, yield this._value));
88
- this.fsm.send('destroyed');
89
- }
90
- else if (this.fsm.matches(InstanceState.Destroying)) {
91
- yield (0, rxjs_1.firstValueFrom)(this.fsm.observeStateChanges().pipe((0, operators_1.filter)(state => state.newState === InstanceState.Destroyed)));
92
- }
93
- });
94
- }
95
- }
96
- exports.Instance = Instance;
97
- //# sourceMappingURL=instance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/instance.ts"],"names":[],"mappings":"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"}
@@ -1,129 +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.UnavailablePool = exports.Pool = void 0;
13
- const errors_1 = require("@blackglory/errors");
14
- const structures_1 = require("@blackglory/structures");
15
- const extra_promise_1 = require("extra-promise");
16
- const iterable_operator_1 = require("iterable-operator");
17
- const instance_1 = require("./instance");
18
- const extra_timers_1 = require("extra-timers");
19
- var PoolState;
20
- (function (PoolState) {
21
- PoolState["Running"] = "running";
22
- PoolState["Destroying"] = "destroying";
23
- PoolState["Destroyed"] = "destroyed";
24
- })(PoolState || (PoolState = {}));
25
- const poolSchema = {
26
- [PoolState.Running]: {
27
- destroy: PoolState.Destroying
28
- },
29
- [PoolState.Destroying]: {
30
- destroyed: PoolState.Destroyed
31
- },
32
- [PoolState.Destroyed]: {}
33
- };
34
- class Pool {
35
- constructor(options) {
36
- var _a, _b, _c;
37
- this.fsm = new structures_1.FiniteStateMachine(poolSchema, PoolState.Running);
38
- this.items = new Set();
39
- this.userDeferredQueue = new structures_1.Queue();
40
- this.createValue = options.create;
41
- this.destroyValue = options.destroy;
42
- this.maxInstances = (_a = options.maxInstances) !== null && _a !== void 0 ? _a : Infinity;
43
- this.minInstances = (_b = options.minInstances) !== null && _b !== void 0 ? _b : 0;
44
- this.idleTimeout = (_c = options.idleTimeout) !== null && _c !== void 0 ? _c : 0;
45
- }
46
- get size() {
47
- return this.items.size;
48
- }
49
- use(fn) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- const self = this;
52
- const item = (0, iterable_operator_1.find)(this.items, instance => !instance.using);
53
- if (item) {
54
- return yield use(item);
55
- }
56
- else {
57
- if (this.items.size < this.maxInstances) {
58
- const instance = new instance_1.Instance(this.createValue, this.destroyValue);
59
- const item = {
60
- instance,
61
- using: true
62
- };
63
- this.items.add(item);
64
- return yield use(item);
65
- }
66
- else {
67
- const deferred = new extra_promise_1.Deferred();
68
- this.userDeferredQueue.enqueue(deferred);
69
- const item = yield deferred;
70
- return yield use(item);
71
- }
72
- }
73
- function use(item) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- item.using = true;
76
- if (item.cancelDeletion) {
77
- item.cancelDeletion();
78
- delete item.cancelDeletion;
79
- }
80
- yield item.instance.waitForCreated();
81
- try {
82
- return yield item.instance.use(fn);
83
- }
84
- finally {
85
- if (self.userDeferredQueue.size > 0) {
86
- self.userDeferredQueue.dequeue().resolve(item);
87
- }
88
- else {
89
- item.using = false;
90
- if (self.items.size > self.minInstances) {
91
- if (self.idleTimeout > 0) {
92
- item.cancelDeletion = (0, extra_timers_1.setTimeout)(self.idleTimeout, removeItem);
93
- }
94
- else {
95
- yield removeItem();
96
- }
97
- }
98
- }
99
- }
100
- function removeItem() {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- self.items.delete(item);
103
- yield item.instance.destroy();
104
- });
105
- }
106
- });
107
- }
108
- });
109
- }
110
- destroy() {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- this.fsm.send('destroy');
113
- for (const item of this.items) {
114
- yield item.instance.destroy();
115
- }
116
- this.items.clear();
117
- let deferred;
118
- while (deferred = this.userDeferredQueue.dequeue()) {
119
- deferred.reject(new UnavailablePool());
120
- }
121
- this.fsm.send('destroyed');
122
- });
123
- }
124
- }
125
- exports.Pool = Pool;
126
- class UnavailablePool extends errors_1.CustomError {
127
- }
128
- exports.UnavailablePool = UnavailablePool;
129
- //# sourceMappingURL=pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/pool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAgD;AAEhD,uDAAkE;AAClE,iDAAwC;AACxC,yDAAwC;AACxC,yCAAqC;AACrC,+CAAyC;AAoCzC,IAAK,SAIJ;AAJD,WAAK,SAAS;IACZ,gCAAmB,CAAA;IACnB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;AACzB,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AAMD,MAAM,UAAU,GAAG;IACjB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QACnB,OAAO,EAAE,SAAS,CAAC,UAAU;KAC9B;IACD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;QACtB,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B;IACD,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE;CAC1B,CAAA;AAED,MAAa,IAAI;IAiBf,YAAY,OAAwB;;QAd5B,QAAG,GAAG,IAAI,+BAAkB,CAClC,UAAU,EACV,SAAS,CAAC,OAAO,CAClB,CAAA;QACO,UAAK,GAAkB,IAAI,GAAG,EAAE,CAAA;QAChC,sBAAiB,GAA8B,IAAI,kBAAK,EAAE,CAAA;QAUhE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAA;QACnC,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,QAAQ,CAAA;QACpD,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,CAAC,WAAW,mCAAI,CAAC,CAAA;IAC7C,CAAC;IAVD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IACxB,CAAC;IAcK,GAAG,CAAI,EAAiC;;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAA;YAEjB,MAAM,IAAI,GAAG,IAAA,wBAAI,EAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC1D,IAAI,IAAI,EAAE;gBACR,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;aACvB;iBAAM;gBACL,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;oBACvC,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;oBAClE,MAAM,IAAI,GAAa;wBACrB,QAAQ;wBACR,KAAK,EAAE,IAAI;qBACZ,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACpB,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;iBACvB;qBAAM;oBACL,MAAM,QAAQ,GAAG,IAAI,wBAAQ,EAAY,CAAA;oBACzC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAA;oBAC3B,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;iBACvB;aACF;YAED,SAAe,GAAG,CAAC,IAAc;;oBAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;oBAEjB,IAAI,IAAI,CAAC,cAAc,EAAE;wBACvB,IAAI,CAAC,cAAc,EAAE,CAAA;wBACrB,OAAO,IAAI,CAAC,cAAc,CAAA;qBAC3B;oBAED,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAA;oBACpC,IAAI;wBACF,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;qBACnC;4BAAS;wBACR,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;4BACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;yBAChD;6BAAM;4BACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;4BAClB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;gCACvC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;oCACxB,IAAI,CAAC,cAAc,GAAG,IAAA,yBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;iCAC/D;qCAAM;oCACL,MAAM,UAAU,EAAE,CAAA;iCACnB;6BACF;yBACF;qBACF;oBAED,SAAe,UAAU;;4BACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;4BACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;wBAC/B,CAAC;qBAAA;gBACH,CAAC;aAAA;QACH,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAExB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;aAC9B;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAElB,IAAI,QAAwC,CAAA;YAC5C,OAAO,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE;gBAClD,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;aACvC;YAGD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5B,CAAC;KAAA;CACF;AArGD,oBAqGC;AAED,MAAa,eAAgB,SAAQ,oBAAW;CAAG;AAAnD,0CAAmD"}
@@ -1 +0,0 @@
1
- export * from './pool';
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
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);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./pool"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB"}
@@ -1,19 +0,0 @@
1
- import { Awaitable } from '@blackglory/prelude';
2
- import { Deferred } from 'extra-promise';
3
- export declare enum InstanceState {
4
- Creating = "creating",
5
- Idle = "idle",
6
- Using = "using",
7
- Destroying = "destroying",
8
- Destroyed = "destroyed"
9
- }
10
- export declare class Instance<T> {
11
- private destroyValue?;
12
- private fsm;
13
- readonly _value: Deferred<T>;
14
- constructor(createValue: () => Awaitable<T>, destroyValue?: ((value: T) => Awaitable<void>) | undefined);
15
- waitForCreated(): Promise<void>;
16
- getState(): InstanceState;
17
- use<U>(fn: (instance: T) => Awaitable<U>): Promise<U>;
18
- destroy(): Promise<void>;
19
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/instance.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { CustomError } from '@blackglory/errors';
2
- import { Awaitable } from '@blackglory/prelude';
3
- interface IPoolOptions<T> {
4
- create: () => Awaitable<T>;
5
- destroy?: (value: T) => Awaitable<void>;
6
- maxInstances?: number;
7
- minInstances?: number;
8
- idleTimeout?: number;
9
- }
10
- export declare class Pool<T> {
11
- private createValue;
12
- private destroyValue?;
13
- private fsm;
14
- private items;
15
- private userDeferredQueue;
16
- private maxInstances;
17
- private minInstances;
18
- private idleTimeout;
19
- get size(): number;
20
- constructor(options: IPoolOptions<T>);
21
- use<U>(fn: (instance: T) => Awaitable<U>): Promise<U>;
22
- destroy(): Promise<void>;
23
- }
24
- export declare class UnavailablePool extends CustomError {
25
- }
26
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/pool.ts"],"names":[],"mappings":"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"}
File without changes
File without changes