@jonloucks/concurrency-ts 0.4.0
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 +248 -0
- package/api/Completable.d.ts +51 -0
- package/api/Completable.d.ts.map +1 -0
- package/api/Completable.js +11 -0
- package/api/Completable.js.map +1 -0
- package/api/CompletableFactory.d.ts +29 -0
- package/api/CompletableFactory.d.ts.map +1 -0
- package/api/CompletableFactory.js +19 -0
- package/api/CompletableFactory.js.map +1 -0
- package/api/Completion.d.ts +18 -0
- package/api/Completion.d.ts.map +1 -0
- package/api/Completion.js +2 -0
- package/api/Completion.js.map +1 -0
- package/api/CompletionNotify.d.ts +23 -0
- package/api/CompletionNotify.d.ts.map +1 -0
- package/api/CompletionNotify.js +11 -0
- package/api/CompletionNotify.js.map +1 -0
- package/api/CompletionState.d.ts +35 -0
- package/api/CompletionState.d.ts.map +1 -0
- package/api/CompletionState.js +64 -0
- package/api/CompletionState.js.map +1 -0
- package/api/Concurrency.d.ts +90 -0
- package/api/Concurrency.d.ts.map +1 -0
- package/api/Concurrency.js +19 -0
- package/api/Concurrency.js.map +1 -0
- package/api/ConcurrencyException.d.ts +27 -0
- package/api/ConcurrencyException.d.ts.map +1 -0
- package/api/ConcurrencyException.js +53 -0
- package/api/ConcurrencyException.js.map +1 -0
- package/api/ConcurrencyFactory.d.ts +41 -0
- package/api/ConcurrencyFactory.d.ts.map +1 -0
- package/api/ConcurrencyFactory.js +19 -0
- package/api/ConcurrencyFactory.js.map +1 -0
- package/api/IsCompleted.d.ts +20 -0
- package/api/IsCompleted.d.ts.map +1 -0
- package/api/IsCompleted.js +11 -0
- package/api/IsCompleted.js.map +1 -0
- package/api/OnCompletion.d.ts +23 -0
- package/api/OnCompletion.d.ts.map +1 -0
- package/api/OnCompletion.js +12 -0
- package/api/OnCompletion.js.map +1 -0
- package/api/Rule.d.ts +28 -0
- package/api/Rule.d.ts.map +1 -0
- package/api/Rule.js +11 -0
- package/api/Rule.js.map +1 -0
- package/api/StateMachine.d.ts +95 -0
- package/api/StateMachine.d.ts.map +1 -0
- package/api/StateMachine.js +13 -0
- package/api/StateMachine.js.map +1 -0
- package/api/StateMachineFactory.d.ts +29 -0
- package/api/StateMachineFactory.d.ts.map +1 -0
- package/api/StateMachineFactory.js +19 -0
- package/api/StateMachineFactory.js.map +1 -0
- package/api/TimeoutException.d.ts +21 -0
- package/api/TimeoutException.d.ts.map +1 -0
- package/api/TimeoutException.js +27 -0
- package/api/TimeoutException.js.map +1 -0
- package/api/Transition.d.ts +44 -0
- package/api/Transition.d.ts.map +1 -0
- package/api/Transition.js +11 -0
- package/api/Transition.js.map +1 -0
- package/api/Types.d.ts +27 -0
- package/api/Types.d.ts.map +1 -0
- package/api/Types.js +28 -0
- package/api/Types.js.map +1 -0
- package/api/Waitable.d.ts +39 -0
- package/api/Waitable.d.ts.map +1 -0
- package/api/Waitable.js +17 -0
- package/api/Waitable.js.map +1 -0
- package/api/WaitableConsumer.d.ts +54 -0
- package/api/WaitableConsumer.d.ts.map +1 -0
- package/api/WaitableConsumer.js +11 -0
- package/api/WaitableConsumer.js.map +1 -0
- package/api/WaitableFactory.d.ts +29 -0
- package/api/WaitableFactory.d.ts.map +1 -0
- package/api/WaitableFactory.js +19 -0
- package/api/WaitableFactory.js.map +1 -0
- package/api/WaitableNotify.d.ts +31 -0
- package/api/WaitableNotify.d.ts.map +1 -0
- package/api/WaitableNotify.js +12 -0
- package/api/WaitableNotify.js.map +1 -0
- package/api/WaitableSupplier.d.ts +53 -0
- package/api/WaitableSupplier.d.ts.map +1 -0
- package/api/WaitableSupplier.js +11 -0
- package/api/WaitableSupplier.js.map +1 -0
- package/auxiliary/Checks.d.ts +116 -0
- package/auxiliary/Checks.d.ts.map +1 -0
- package/auxiliary/Checks.js +145 -0
- package/auxiliary/Checks.js.map +1 -0
- package/auxiliary/Consumer.d.ts +45 -0
- package/auxiliary/Consumer.d.ts.map +1 -0
- package/auxiliary/Consumer.js +45 -0
- package/auxiliary/Consumer.js.map +1 -0
- package/auxiliary/Predicate.d.ts +55 -0
- package/auxiliary/Predicate.d.ts.map +1 -0
- package/auxiliary/Predicate.js +73 -0
- package/auxiliary/Predicate.js.map +1 -0
- package/auxiliary/Supplier.d.ts +52 -0
- package/auxiliary/Supplier.d.ts.map +1 -0
- package/auxiliary/Supplier.js +67 -0
- package/auxiliary/Supplier.js.map +1 -0
- package/impl/Completable.impl.d.ts +10 -0
- package/impl/Completable.impl.d.ts.map +1 -0
- package/impl/Completable.impl.js +136 -0
- package/impl/Completable.impl.js.map +1 -0
- package/impl/CompletableFactory.impl.d.ts +9 -0
- package/impl/CompletableFactory.impl.d.ts.map +1 -0
- package/impl/CompletableFactory.impl.js +42 -0
- package/impl/CompletableFactory.impl.js.map +1 -0
- package/impl/CompleteLater.impl.d.ts +12 -0
- package/impl/CompleteLater.impl.d.ts.map +1 -0
- package/impl/CompleteLater.impl.js +31 -0
- package/impl/CompleteLater.impl.js.map +1 -0
- package/impl/CompleteNow.impl.d.ts +14 -0
- package/impl/CompleteNow.impl.d.ts.map +1 -0
- package/impl/CompleteNow.impl.js +33 -0
- package/impl/CompleteNow.impl.js.map +1 -0
- package/impl/Concurrency.impl.d.ts +9 -0
- package/impl/Concurrency.impl.d.ts.map +1 -0
- package/impl/Concurrency.impl.js +84 -0
- package/impl/Concurrency.impl.js.map +1 -0
- package/impl/ConcurrencyFactory.impl.d.ts +10 -0
- package/impl/ConcurrencyFactory.impl.d.ts.map +1 -0
- package/impl/ConcurrencyFactory.impl.js +74 -0
- package/impl/ConcurrencyFactory.impl.js.map +1 -0
- package/impl/ConcurrencyWrapper.impl.d.ts +13 -0
- package/impl/ConcurrencyWrapper.impl.d.ts.map +1 -0
- package/impl/ConcurrencyWrapper.impl.js +85 -0
- package/impl/ConcurrencyWrapper.impl.js.map +1 -0
- package/impl/Events.d.ts +25 -0
- package/impl/Events.d.ts.map +1 -0
- package/impl/Events.impl.d.ts +11 -0
- package/impl/Events.impl.d.ts.map +1 -0
- package/impl/Events.impl.js +63 -0
- package/impl/Events.impl.js.map +1 -0
- package/impl/Events.js +3 -0
- package/impl/Events.js.map +1 -0
- package/impl/ExposedPromise.d.ts +26 -0
- package/impl/ExposedPromise.d.ts.map +1 -0
- package/impl/ExposedPromise.impl.d.ts +9 -0
- package/impl/ExposedPromise.impl.d.ts.map +1 -0
- package/impl/ExposedPromise.impl.js +41 -0
- package/impl/ExposedPromise.impl.js.map +1 -0
- package/impl/ExposedPromise.js +2 -0
- package/impl/ExposedPromise.js.map +1 -0
- package/impl/Internal.impl.d.ts +35 -0
- package/impl/Internal.impl.d.ts.map +1 -0
- package/impl/Internal.impl.js +90 -0
- package/impl/Internal.impl.js.map +1 -0
- package/impl/StateMachine.impl.d.ts +9 -0
- package/impl/StateMachine.impl.d.ts.map +1 -0
- package/impl/StateMachine.impl.js +184 -0
- package/impl/StateMachine.impl.js.map +1 -0
- package/impl/StateMachineFactory.impl.d.ts +9 -0
- package/impl/StateMachineFactory.impl.d.ts.map +1 -0
- package/impl/StateMachineFactory.impl.js +43 -0
- package/impl/StateMachineFactory.impl.js.map +1 -0
- package/impl/Waitable.impl.d.ts +8 -0
- package/impl/Waitable.impl.d.ts.map +1 -0
- package/impl/Waitable.impl.js +212 -0
- package/impl/Waitable.impl.js.map +1 -0
- package/impl/WaitableFactory.impl.d.ts +9 -0
- package/impl/WaitableFactory.impl.d.ts.map +1 -0
- package/impl/WaitableFactory.impl.js +42 -0
- package/impl/WaitableFactory.impl.js.map +1 -0
- package/index.d.ts +25 -0
- package/index.d.ts.map +1 -0
- package/index.js +33 -0
- package/index.js.map +1 -0
- package/package.json +88 -0
- package/version.d.ts +3 -0
- package/version.d.ts.map +1 -0
- package/version.js +4 -0
- package/version.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Completable.impl.js","sourceRoot":"","sources":["../../src/impl/Completable.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,qBAAqB,IAAI,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAMlH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAmC,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAiB,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACrH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAEhG,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAgB,MAAM,mCAAmC,CAAC;AAE5E,OAAO,EAAoB,QAAQ,IAAI,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAEhH;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAI,MAAiB;IACzC,OAAO,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAKA,CAAC;AAEF,MAAM,eAAe;IACnB,IAAI;QACF,OAAO,uBAAA,IAAI,mCAAY,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,WAAW;QACT,OAAO,uBAAA,IAAI,+CAAwB,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,uBAAA,IAAI,sCAAe,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,uBAAA,IAAI,mCAAY,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,YAA6B;QAClC,MAAM,oBAAoB,GAAoB,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAkB,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAkB,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,cAAc,GAAG,CAAC,CAAc,EAAQ,EAAE;YAC9C,uBAAA,IAAI,kCAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,QAAQ,GAAgB;YAC5B,YAAY,EAAE,UAAU,UAAyB;gBAC/C,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;oBACjB,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAClB,cAAc,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;SACF,CAAC;QACF,uBAAA,IAAI,kCAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,SAAS,CAAC,uBAAA,IAAI,mCAAY,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,YAAY,CAAC,uBAAA,IAAI,mCAAa,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC,GAAS,EAAE;YAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,UAAyB;QACpC,MAAM,eAAe,GAAkB,eAAe,CAAC,UAAU,CAAC,CAAC;QAEnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,uBAAA,IAAI,+CAAwB,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,uBAAA,IAAI,+BAAe,eAAe,MAAA,CAAC;YAEnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,uBAAA,IAAI,sCAAe,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,WAAW;QACT,OAAO,uBAAA,IAAI,+CAAwB,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAEO,QAAQ;QACd,uBAAA,IAAI,kCAAW,CAAC,GAAG,CAAC,uBAAA,IAAI,sCAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,uBAAA,IAAI,kCAAW,CAAC,GAAG,CAAC,uBAAA,IAAI,+CAAwB,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,eAAe,CAAC,GAAS,EAAE;YAChC,uBAAA,IAAI,kCAAW,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,QAAuB;QAC7C,KAAK,MAAM,QAAQ,IAAI,uBAAA,IAAI,kCAAW,EAAE,CAAC;YACvC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,QAAQ,uBAAA,IAAI,mCAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpC,KAAK,UAAU,CAAC;YAChB,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACX,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAI,MAAiB;QACxC,OAAO,IAAI,eAAe,CAAI,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,YAAoB,MAAiB;QAS5B,0DAAuD;QACvD,8CAAwB;QACjC,sCAA2C,IAAI,EAAC;QACvC,iDAA4B;QAC5B,6CAA0B;QAC1B,qCAA+B,IAAI,GAAG,EAAe,EAAC;QAb7D,MAAM,SAAS,GAAc,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAqB,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC7E,uBAAA,IAAI,8BAAc,YAAY,CAAC,mBAAmB,EAAE,MAAA,CAAC;QACrD,uBAAA,IAAI,kCAAkB,cAAc,CAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,MAAA,CAAC;QACrG,uBAAA,IAAI,+BAAe,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAA,CAAC;QAC3F,uBAAA,IAAI,2CAA2B,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,MAAA,CAAC;IAChF,CAAC;CAQF;;AAAA,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CompletableFactory } from "@jonloucks/concurrency-ts/api/CompletableFactory";
|
|
2
|
+
import { Config as ConcurrencyConfig } from "@jonloucks/concurrency-ts/api/Concurrency";
|
|
3
|
+
/**
|
|
4
|
+
* Create a new CompletableFactory
|
|
5
|
+
*
|
|
6
|
+
* @return the new CompletableFactory
|
|
7
|
+
*/
|
|
8
|
+
export declare function create(config?: ConcurrencyConfig): CompletableFactory;
|
|
9
|
+
//# sourceMappingURL=CompletableFactory.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletableFactory.impl.d.ts","sourceRoot":"","sources":["../../src/impl/CompletableFactory.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAEtF,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAa,MAAM,2CAA2C,CAAC;AAKnG;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAErE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _CompletableFactoryImpl_concurrencyConfig;
|
|
13
|
+
import { create as createCompletableImpl } from "./Completable.impl.js";
|
|
14
|
+
import { Internal } from "./Internal.impl.js";
|
|
15
|
+
/**
|
|
16
|
+
* Create a new CompletableFactory
|
|
17
|
+
*
|
|
18
|
+
* @return the new CompletableFactory
|
|
19
|
+
*/
|
|
20
|
+
export function create(config) {
|
|
21
|
+
return CompletableFactoryImpl.internalCreate(config);
|
|
22
|
+
}
|
|
23
|
+
// ---- Implementation details below ----
|
|
24
|
+
class CompletableFactoryImpl {
|
|
25
|
+
createCompletable(config) {
|
|
26
|
+
const validConfig = config ?? {};
|
|
27
|
+
const contracts = Internal.resolveContracts(validConfig, __classPrivateFieldGet(this, _CompletableFactoryImpl_concurrencyConfig, "f"));
|
|
28
|
+
const finalConfig = { ...__classPrivateFieldGet(this, _CompletableFactoryImpl_concurrencyConfig, "f"), ...validConfig, contracts: contracts };
|
|
29
|
+
return createCompletableImpl(finalConfig);
|
|
30
|
+
}
|
|
31
|
+
static internalCreate(config) {
|
|
32
|
+
return new CompletableFactoryImpl(config);
|
|
33
|
+
}
|
|
34
|
+
constructor(config) {
|
|
35
|
+
_CompletableFactoryImpl_concurrencyConfig.set(this, void 0);
|
|
36
|
+
const contracts = Internal.resolveContracts(config);
|
|
37
|
+
__classPrivateFieldSet(this, _CompletableFactoryImpl_concurrencyConfig, { ...config, contracts: contracts }, "f");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_CompletableFactoryImpl_concurrencyConfig = new WeakMap();
|
|
41
|
+
;
|
|
42
|
+
//# sourceMappingURL=CompletableFactory.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletableFactory.impl.js","sourceRoot":"","sources":["../../src/impl/CompletableFactory.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,OAAO,EAAE,MAAM,IAAI,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAA0B;IAC/C,OAAO,sBAAsB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,yCAAyC;AAEzC,MAAM,sBAAsB;IAE1B,iBAAiB,CAAI,MAA6B;QAChD,MAAM,WAAW,GAAG,MAAM,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAc,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,uBAAA,IAAI,iDAAmB,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAsB,EAAE,GAAG,uBAAA,IAAI,iDAAmB,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC5G,OAAO,qBAAqB,CAAI,WAAW,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAA0B;QAC9C,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,YAAoB,MAA0B;QAKrC,4DAAsC;QAJ7C,MAAM,SAAS,GAAc,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/D,uBAAA,IAAI,6CAAsB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAA,CAAC;IAChE,CAAC;CAGF;;AAAA,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Type as ConsumerType } from "@jonloucks/concurrency-ts/auxiliary/Consumer";
|
|
2
|
+
import { OnCompletion } from "@jonloucks/concurrency-ts/api/OnCompletion";
|
|
3
|
+
import { RequiredType } from "@jonloucks/concurrency-ts/api/Types";
|
|
4
|
+
/**
|
|
5
|
+
* Completes the given OnCompletion later by delegating to the provided delegate.
|
|
6
|
+
* If the delegate throws, the OnCompletion is completed with FAILED state.
|
|
7
|
+
*
|
|
8
|
+
* @param onCompletion The OnCompletion to complete
|
|
9
|
+
* @param delegate The delegate to which completion is delegated
|
|
10
|
+
*/
|
|
11
|
+
export declare function completeLater<T>(onCompletion: RequiredType<OnCompletion<T>>, delegate: RequiredType<ConsumerType<OnCompletion<T>>>): void;
|
|
12
|
+
//# sourceMappingURL=CompleteLater.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompleteLater.impl.d.ts","sourceRoot":"","sources":["../../src/impl/CompleteLater.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,IAAI,YAAY,EAAkC,MAAM,8CAA8C,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAA2B,MAAM,qCAAqC,CAAC;AAI5F;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAmBzI"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { fromType as fromTypeToConsumer } from "@jonloucks/concurrency-ts/auxiliary/Consumer";
|
|
2
|
+
import { onCompletionCheck } from "@jonloucks/concurrency-ts/auxiliary/Checks";
|
|
3
|
+
/**
|
|
4
|
+
* Completes the given OnCompletion later by delegating to the provided delegate.
|
|
5
|
+
* If the delegate throws, the OnCompletion is completed with FAILED state.
|
|
6
|
+
*
|
|
7
|
+
* @param onCompletion The OnCompletion to complete
|
|
8
|
+
* @param delegate The delegate to which completion is delegated
|
|
9
|
+
*/
|
|
10
|
+
export function completeLater(onCompletion, delegate) {
|
|
11
|
+
const validOnCompletion = onCompletionCheck(onCompletion); // only validate onCompletion here
|
|
12
|
+
let state = 'PENDING';
|
|
13
|
+
let thrown = undefined;
|
|
14
|
+
let delegated = false;
|
|
15
|
+
try {
|
|
16
|
+
const validDelegate = fromTypeToConsumer(delegate);
|
|
17
|
+
validDelegate.consume(onCompletion); // ownership transferred
|
|
18
|
+
delegated = true;
|
|
19
|
+
}
|
|
20
|
+
catch (caught) {
|
|
21
|
+
thrown = caught;
|
|
22
|
+
state = 'FAILED';
|
|
23
|
+
throw thrown;
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
if (!delegated) {
|
|
27
|
+
validOnCompletion.onCompletion({ state, thrown });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=CompleteLater.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompleteLater.impl.js","sourceRoot":"","sources":["../../src/impl/CompleteLater.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,QAAQ,IAAI,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAG9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAI,YAA2C,EAAE,QAAqD;IACjI,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,kCAAkC;IAC7F,IAAI,KAAK,GAAoB,SAAS,CAAC;IACvC,IAAI,MAAM,GAAqC,SAAS,CAAC;IACzD,IAAI,SAAS,GAAY,KAAK,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,aAAa,GAA8B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC9E,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB;QAC7D,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,MAAM,CAAC;QAChB,KAAK,GAAG,QAAQ,CAAC;QACjB,MAAM,MAAM,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,iBAAiB,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Type as SupplierType } from "@jonloucks/concurrency-ts/auxiliary/Supplier";
|
|
2
|
+
import { RequiredType, OptionalType } from "@jonloucks/concurrency-ts/api/Types";
|
|
3
|
+
import { OnCompletion } from "@jonloucks/concurrency-ts/api/OnCompletion";
|
|
4
|
+
/**
|
|
5
|
+
* Completes the given OnCompletion immediately with the result of the successBlock.
|
|
6
|
+
* If the successBlock throws, the OnCompletion is completed with FAILED state.
|
|
7
|
+
*
|
|
8
|
+
* @param onCompletion The OnCompletion to complete
|
|
9
|
+
* @param successBlock The block to execute to obtain the success value
|
|
10
|
+
* @returns The value returned by the successBlock if successful, otherwise undefined
|
|
11
|
+
* @throws Rethrows any exception thrown by the successBlock
|
|
12
|
+
*/
|
|
13
|
+
export declare function completeNow<T>(onCompletion: RequiredType<OnCompletion<T>>, successBlock: RequiredType<SupplierType<T>>): OptionalType<T>;
|
|
14
|
+
//# sourceMappingURL=CompleteNow.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompleteNow.impl.d.ts","sourceRoot":"","sources":["../../src/impl/CompleteNow.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,IAAI,YAAY,EAAkC,MAAM,8CAA8C,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAI1E;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAmBxI"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { fromType as fromTypeToSupplier } from "@jonloucks/concurrency-ts/auxiliary/Supplier";
|
|
2
|
+
import { onCompletionCheck } from "@jonloucks/concurrency-ts/auxiliary/Checks";
|
|
3
|
+
/**
|
|
4
|
+
* Completes the given OnCompletion immediately with the result of the successBlock.
|
|
5
|
+
* If the successBlock throws, the OnCompletion is completed with FAILED state.
|
|
6
|
+
*
|
|
7
|
+
* @param onCompletion The OnCompletion to complete
|
|
8
|
+
* @param successBlock The block to execute to obtain the success value
|
|
9
|
+
* @returns The value returned by the successBlock if successful, otherwise undefined
|
|
10
|
+
* @throws Rethrows any exception thrown by the successBlock
|
|
11
|
+
*/
|
|
12
|
+
export function completeNow(onCompletion, successBlock) {
|
|
13
|
+
const validOnCompletion = onCompletionCheck(onCompletion); // only validate onCompletion here
|
|
14
|
+
let state;
|
|
15
|
+
let thrown = undefined;
|
|
16
|
+
let value = undefined;
|
|
17
|
+
try {
|
|
18
|
+
// validate and execute successBlock
|
|
19
|
+
const validSupplier = fromTypeToSupplier(successBlock);
|
|
20
|
+
value = validSupplier.supply();
|
|
21
|
+
state = 'SUCCEEDED';
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
catch (caught) {
|
|
25
|
+
thrown = caught;
|
|
26
|
+
state = 'FAILED';
|
|
27
|
+
throw thrown;
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
validOnCompletion.onCompletion({ state, thrown, value });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=CompleteNow.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompleteNow.impl.js","sourceRoot":"","sources":["../../src/impl/CompleteNow.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,QAAQ,IAAI,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAG9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAI,YAA2C,EAAE,YAA2C;IACrH,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,kCAAkC;IAC7F,IAAI,KAAuB,CAAC;IAC5B,IAAI,MAAM,GAAqC,SAAS,CAAC;IACzD,IAAI,KAAK,GAAoB,SAAS,CAAC;IAEvC,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,aAAa,GAAgB,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACpE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,GAAG,WAAW,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,MAAM,CAAC;QAChB,KAAK,GAAG,QAAQ,CAAC;QACjB,MAAM,MAAM,CAAC;IACf,CAAC;YAAS,CAAC;QACT,iBAAiB,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Concurrency, ConcurrencyConfig } from "@jonloucks/concurrency-ts/api/Concurrency";
|
|
2
|
+
/**
|
|
3
|
+
* Create a new Concurrency
|
|
4
|
+
*
|
|
5
|
+
* @param config the concurrency configuration
|
|
6
|
+
* @return the new Concurrency
|
|
7
|
+
*/
|
|
8
|
+
export declare function create(config: ConcurrencyConfig): Concurrency;
|
|
9
|
+
//# sourceMappingURL=Concurrency.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Concurrency.impl.d.ts","sourceRoot":"","sources":["../../src/impl/Concurrency.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,iBAAiB,EAMlB,MAAM,2CAA2C,CAAC;AAiBnD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAE7D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _ConcurrencyImpl_contracts, _ConcurrencyImpl_config, _ConcurrencyImpl_closeMany, _ConcurrencyImpl_idempotent;
|
|
13
|
+
import { CONTRACT as COMPLETABLE_FACTORY } from "@jonloucks/concurrency-ts/api/CompletableFactory";
|
|
14
|
+
import { CONTRACT as STATE_MACHINE_FACTORY } from "@jonloucks/concurrency-ts/api/StateMachineFactory";
|
|
15
|
+
import { CONTRACT as WAITABLE_FACTORY } from "@jonloucks/concurrency-ts/api/WaitableFactory";
|
|
16
|
+
import { CONTRACT as AUTO_CLOSE_FACTORY } from "@jonloucks/contracts-ts/api/AutoCloseFactory";
|
|
17
|
+
import { CONTRACT as IDEMPOTENT_FACTORY } from "@jonloucks/contracts-ts/auxiliary/IdempotentFactory";
|
|
18
|
+
import { completeLater as completeLaterImpl } from "./CompleteLater.impl.js";
|
|
19
|
+
import { completeNow as completeNowImpl } from "./CompleteNow.impl.js";
|
|
20
|
+
import { create as createEvents } from "./Events.impl.js";
|
|
21
|
+
import { Internal } from "./Internal.impl.js";
|
|
22
|
+
/**
|
|
23
|
+
* Create a new Concurrency
|
|
24
|
+
*
|
|
25
|
+
* @param config the concurrency configuration
|
|
26
|
+
* @return the new Concurrency
|
|
27
|
+
*/
|
|
28
|
+
export function create(config) {
|
|
29
|
+
return ConcurrencyImpl.internalCreate(config);
|
|
30
|
+
}
|
|
31
|
+
// ---- Implementation details below ----
|
|
32
|
+
class ConcurrencyImpl {
|
|
33
|
+
open() {
|
|
34
|
+
return __classPrivateFieldGet(this, _ConcurrencyImpl_idempotent, "f").open();
|
|
35
|
+
}
|
|
36
|
+
createWaitable(config) {
|
|
37
|
+
return __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f").enforce(WAITABLE_FACTORY).createWaitable(config);
|
|
38
|
+
}
|
|
39
|
+
createStateMachine(config) {
|
|
40
|
+
return __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f").enforce(STATE_MACHINE_FACTORY).createStateMachine(config);
|
|
41
|
+
}
|
|
42
|
+
createCompletable(config) {
|
|
43
|
+
return __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f").enforce(COMPLETABLE_FACTORY).createCompletable(config);
|
|
44
|
+
}
|
|
45
|
+
completeLater(onCompletion, delegate) {
|
|
46
|
+
completeLaterImpl(onCompletion, delegate);
|
|
47
|
+
}
|
|
48
|
+
completeNow(onCompletion, successBlock) {
|
|
49
|
+
return completeNowImpl(onCompletion, successBlock);
|
|
50
|
+
}
|
|
51
|
+
static internalCreate(config) {
|
|
52
|
+
return new ConcurrencyImpl(config);
|
|
53
|
+
}
|
|
54
|
+
firstOpen() {
|
|
55
|
+
// register shutdown events last to avoid potential for events firing before everything is ready
|
|
56
|
+
__classPrivateFieldGet(this, _ConcurrencyImpl_closeMany, "f").add(this.registerEvents());
|
|
57
|
+
return __classPrivateFieldGet(this, _ConcurrencyImpl_closeMany, "f");
|
|
58
|
+
}
|
|
59
|
+
firstClose() {
|
|
60
|
+
__classPrivateFieldGet(this, _ConcurrencyImpl_closeMany, "f").close();
|
|
61
|
+
}
|
|
62
|
+
registerEvents() {
|
|
63
|
+
const events = createEvents({
|
|
64
|
+
contracts: __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f"),
|
|
65
|
+
names: __classPrivateFieldGet(this, _ConcurrencyImpl_config, "f").shutdownEvents ?? [],
|
|
66
|
+
callback: () => this.firstClose()
|
|
67
|
+
});
|
|
68
|
+
return events.open();
|
|
69
|
+
}
|
|
70
|
+
constructor(config) {
|
|
71
|
+
_ConcurrencyImpl_contracts.set(this, void 0);
|
|
72
|
+
_ConcurrencyImpl_config.set(this, void 0);
|
|
73
|
+
_ConcurrencyImpl_closeMany.set(this, void 0);
|
|
74
|
+
_ConcurrencyImpl_idempotent.set(this, void 0);
|
|
75
|
+
__classPrivateFieldSet(this, _ConcurrencyImpl_contracts, Internal.resolveContracts(config), "f");
|
|
76
|
+
__classPrivateFieldSet(this, _ConcurrencyImpl_config, { ...config, contracts: __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f") }, "f");
|
|
77
|
+
__classPrivateFieldSet(this, _ConcurrencyImpl_closeMany, __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f").enforce(AUTO_CLOSE_FACTORY).createAutoCloseMany(), "f");
|
|
78
|
+
__classPrivateFieldSet(this, _ConcurrencyImpl_idempotent, __classPrivateFieldGet(this, _ConcurrencyImpl_contracts, "f").enforce(IDEMPOTENT_FACTORY).createIdempotent({
|
|
79
|
+
open: () => this.firstOpen()
|
|
80
|
+
}), "f");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_ConcurrencyImpl_contracts = new WeakMap(), _ConcurrencyImpl_config = new WeakMap(), _ConcurrencyImpl_closeMany = new WeakMap(), _ConcurrencyImpl_idempotent = new WeakMap();
|
|
84
|
+
//# sourceMappingURL=Concurrency.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Concurrency.impl.js","sourceRoot":"","sources":["../../src/impl/Concurrency.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Config as ConcurrencyConfig } from "@jonloucks/concurrency-ts/api/Concurrency";
|
|
2
|
+
import { ConcurrencyFactory } from "@jonloucks/concurrency-ts/api/ConcurrencyFactory";
|
|
3
|
+
/**
|
|
4
|
+
* Create a new ConcurrencyFactory
|
|
5
|
+
* @param config the Concurrency Config
|
|
6
|
+
*
|
|
7
|
+
* @return the new ConcurrencyFactory
|
|
8
|
+
*/
|
|
9
|
+
export declare function create(config?: ConcurrencyConfig): ConcurrencyFactory;
|
|
10
|
+
//# sourceMappingURL=ConcurrencyFactory.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcurrencyFactory.impl.d.ts","sourceRoot":"","sources":["../../src/impl/ConcurrencyFactory.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,MAAM,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACvI,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAmBtF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAErE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _ConcurrencyFactoryImpl_concurrencyConfig;
|
|
13
|
+
import { CONTRACT as CONCURRENCY_CONTRACT } from "@jonloucks/concurrency-ts/api/Concurrency";
|
|
14
|
+
import { CONTRACT as COMPLETABLE_FACTORY } from "@jonloucks/concurrency-ts/api/CompletableFactory";
|
|
15
|
+
import { CONTRACT as STATE_MACHINE_FACTORY } from "@jonloucks/concurrency-ts/api/StateMachineFactory";
|
|
16
|
+
import { CONTRACT as WAITABLE_FACTORY } from "@jonloucks/concurrency-ts/api/WaitableFactory";
|
|
17
|
+
import { presentCheck } from "@jonloucks/contracts-ts/auxiliary/Checks";
|
|
18
|
+
import { CONTRACT as PROMISOR_FACTORY_CONTRACT } from "@jonloucks/contracts-ts/api/PromisorFactory";
|
|
19
|
+
import { CONTRACT as REPOSITORY_FACTORY_CONTRACT } from "@jonloucks/contracts-ts/api/RepositoryFactory";
|
|
20
|
+
import { create as createCompletableFactoryImpl } from "./CompletableFactory.impl.js";
|
|
21
|
+
import { create as createConcurrencyImpl } from "./Concurrency.impl.js";
|
|
22
|
+
import { wrap as wrapConcurrency } from "./ConcurrencyWrapper.impl.js";
|
|
23
|
+
import { Internal } from "./Internal.impl.js";
|
|
24
|
+
import { create as createStateMachineFactoryImpl } from "./StateMachineFactory.impl.js";
|
|
25
|
+
import { create as createWaitableFactoryImpl } from "./WaitableFactory.impl.js";
|
|
26
|
+
/**
|
|
27
|
+
* Create a new ConcurrencyFactory
|
|
28
|
+
* @param config the Concurrency Config
|
|
29
|
+
*
|
|
30
|
+
* @return the new ConcurrencyFactory
|
|
31
|
+
*/
|
|
32
|
+
export function create(config) {
|
|
33
|
+
return ConcurrencyFactoryImpl.internalCreate(config ?? {});
|
|
34
|
+
}
|
|
35
|
+
// ---- Implementation details below ----
|
|
36
|
+
class ConcurrencyFactoryImpl {
|
|
37
|
+
createConcurrency(config) {
|
|
38
|
+
const validConfig = config ?? {};
|
|
39
|
+
const contracts = Internal.resolveContracts(validConfig, __classPrivateFieldGet(this, _ConcurrencyFactoryImpl_concurrencyConfig, "f"));
|
|
40
|
+
const finalConfig = { ...__classPrivateFieldGet(this, _ConcurrencyFactoryImpl_concurrencyConfig, "f"), ...validConfig, contracts: contracts };
|
|
41
|
+
const repositoryFactory = contracts.enforce(REPOSITORY_FACTORY_CONTRACT);
|
|
42
|
+
const repository = repositoryFactory.createRepository();
|
|
43
|
+
this.installKernel(repository, finalConfig);
|
|
44
|
+
// how to bind promisors before creation?
|
|
45
|
+
// if we open the repository before creation, we risk unexpected behavior.
|
|
46
|
+
// for example, if open is never called, there will be residual bindings.
|
|
47
|
+
return wrapConcurrency(createConcurrencyImpl(finalConfig), repository);
|
|
48
|
+
}
|
|
49
|
+
install(repository, config) {
|
|
50
|
+
// potential unexpected behavior might occur when merging configs
|
|
51
|
+
const validConfig = config ?? {};
|
|
52
|
+
const contracts = Internal.resolveContracts(validConfig, __classPrivateFieldGet(this, _ConcurrencyFactoryImpl_concurrencyConfig, "f"));
|
|
53
|
+
const finalConfig = { ...__classPrivateFieldGet(this, _ConcurrencyFactoryImpl_concurrencyConfig, "f"), ...validConfig, contracts: contracts };
|
|
54
|
+
const validRepository = presentCheck(repository, "Repository must be present.");
|
|
55
|
+
const promisorFactory = contracts.enforce(PROMISOR_FACTORY_CONTRACT);
|
|
56
|
+
this.installKernel(validRepository, finalConfig);
|
|
57
|
+
validRepository.keep(CONCURRENCY_CONTRACT, promisorFactory.createLifeCycle(() => createConcurrencyImpl(finalConfig)));
|
|
58
|
+
}
|
|
59
|
+
static internalCreate(config) {
|
|
60
|
+
return new ConcurrencyFactoryImpl(config);
|
|
61
|
+
}
|
|
62
|
+
constructor(config) {
|
|
63
|
+
_ConcurrencyFactoryImpl_concurrencyConfig.set(this, void 0);
|
|
64
|
+
const contracts = Internal.resolveContracts(config);
|
|
65
|
+
__classPrivateFieldSet(this, _ConcurrencyFactoryImpl_concurrencyConfig, { ...config, contracts: contracts }, "f");
|
|
66
|
+
}
|
|
67
|
+
installKernel(repository, config) {
|
|
68
|
+
repository.keep(WAITABLE_FACTORY, createWaitableFactoryImpl(config));
|
|
69
|
+
repository.keep(STATE_MACHINE_FACTORY, createStateMachineFactoryImpl(config));
|
|
70
|
+
repository.keep(COMPLETABLE_FACTORY, createCompletableFactoryImpl(config));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
_ConcurrencyFactoryImpl_concurrencyConfig = new WeakMap();
|
|
74
|
+
//# sourceMappingURL=ConcurrencyFactory.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcurrencyFactory.impl.js","sourceRoot":"","sources":["../../src/impl/ConcurrencyFactory.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Concurrency } from "@jonloucks/concurrency-ts/api/Concurrency";
|
|
2
|
+
import { Repository } from "@jonloucks/contracts-ts/api/Repository";
|
|
3
|
+
import { RequiredType } from "@jonloucks/concurrency-ts/api/Types";
|
|
4
|
+
/**
|
|
5
|
+
* Wrapper method to create a Concurrency wrapper which is responsible for managing
|
|
6
|
+
* the lifecycle of the underlying Repository and Concurrency instances.
|
|
7
|
+
*
|
|
8
|
+
* @param concurrency the underlying Concurrency instance
|
|
9
|
+
* @param repository the underlying Repository instance
|
|
10
|
+
* @returns the Concurrency implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare function wrap(concurrency: RequiredType<Concurrency>, repository: RequiredType<Repository>): Concurrency;
|
|
13
|
+
//# sourceMappingURL=ConcurrencyWrapper.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcurrencyWrapper.impl.d.ts","sourceRoot":"","sources":["../../src/impl/ConcurrencyWrapper.impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,WAAW,EAA4E,MAAM,2CAA2C,CAAC;AAElL,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAA8B,YAAY,EAAgB,MAAM,qCAAqC,CAAC;AAE7G;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,WAAW,CAE9G"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _ConcurrencyWrapper_concurrency, _ConcurrencyWrapper_repository;
|
|
13
|
+
import { inlineAutoClose } from "@jonloucks/contracts-ts/api/AutoClose";
|
|
14
|
+
/**
|
|
15
|
+
* Wrapper method to create a Concurrency wrapper which is responsible for managing
|
|
16
|
+
* the lifecycle of the underlying Repository and Concurrency instances.
|
|
17
|
+
*
|
|
18
|
+
* @param concurrency the underlying Concurrency instance
|
|
19
|
+
* @param repository the underlying Repository instance
|
|
20
|
+
* @returns the Concurrency implementation
|
|
21
|
+
*/
|
|
22
|
+
export function wrap(concurrency, repository) {
|
|
23
|
+
return ConcurrencyWrapper.internalCreate(concurrency, repository);
|
|
24
|
+
}
|
|
25
|
+
// ---- Implementation details below ----
|
|
26
|
+
/**
|
|
27
|
+
* The Concurrency wrapper implementation
|
|
28
|
+
* Concurrency wrapper which is responsible for managing
|
|
29
|
+
* the lifecycle of the underlying Repository and Concurrency instances.
|
|
30
|
+
*/
|
|
31
|
+
class ConcurrencyWrapper {
|
|
32
|
+
static internalCreate(concurrency, repository) {
|
|
33
|
+
return new ConcurrencyWrapper(concurrency, repository);
|
|
34
|
+
}
|
|
35
|
+
autoOpen() {
|
|
36
|
+
// what if referrent also has autoOpen?
|
|
37
|
+
// maybe we detect that and chain them?
|
|
38
|
+
return this.open();
|
|
39
|
+
}
|
|
40
|
+
open() {
|
|
41
|
+
const closeRepository = __classPrivateFieldGet(this, _ConcurrencyWrapper_repository, "f").open();
|
|
42
|
+
try {
|
|
43
|
+
const closeConcurrency = __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").open();
|
|
44
|
+
return inlineAutoClose(() => {
|
|
45
|
+
try {
|
|
46
|
+
closeConcurrency.close();
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
closeRepository.close(); // ensure repository is closed
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (thrown) {
|
|
54
|
+
closeRepository.close();
|
|
55
|
+
throw thrown;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
createWaitable(config) {
|
|
59
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").createWaitable(config);
|
|
60
|
+
}
|
|
61
|
+
createStateMachine(config) {
|
|
62
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").createStateMachine(config);
|
|
63
|
+
}
|
|
64
|
+
createCompletable(config) {
|
|
65
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").createCompletable(config);
|
|
66
|
+
}
|
|
67
|
+
completeLater(onCompletion, delegate) {
|
|
68
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").completeLater(onCompletion, delegate);
|
|
69
|
+
}
|
|
70
|
+
completeNow(onCompletion, successBlock) {
|
|
71
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").completeNow(onCompletion, successBlock);
|
|
72
|
+
}
|
|
73
|
+
toString() {
|
|
74
|
+
return __classPrivateFieldGet(this, _ConcurrencyWrapper_concurrency, "f").toString();
|
|
75
|
+
}
|
|
76
|
+
constructor(concurrency, repository) {
|
|
77
|
+
_ConcurrencyWrapper_concurrency.set(this, void 0);
|
|
78
|
+
_ConcurrencyWrapper_repository.set(this, void 0);
|
|
79
|
+
__classPrivateFieldSet(this, _ConcurrencyWrapper_concurrency, concurrency, "f");
|
|
80
|
+
__classPrivateFieldSet(this, _ConcurrencyWrapper_repository, repository, "f");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_ConcurrencyWrapper_concurrency = new WeakMap(), _ConcurrencyWrapper_repository = new WeakMap();
|
|
84
|
+
;
|
|
85
|
+
//# sourceMappingURL=ConcurrencyWrapper.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcurrencyWrapper.impl.js","sourceRoot":"","sources":["../../src/impl/ConcurrencyWrapper.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAa,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAInF;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,WAAsC,EAAE,UAAoC;IAC/F,OAAO,kBAAkB,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC;AAED,yCAAyC;AAEzC;;;;GAIG;AACH,MAAM,kBAAkB;IAEtB,MAAM,CAAC,cAAc,CAAC,WAAsC,EAAE,UAAoC;QAChG,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,uCAAuC;QACvC,uCAAuC;QACvC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,MAAM,eAAe,GAAc,uBAAA,IAAI,sCAAY,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAc,uBAAA,IAAI,uCAAa,CAAC,IAAI,EAAE,CAAC;YAC7D,OAAO,eAAe,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC;oBACH,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACT,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,8BAA8B;gBACzD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,MAAM,CAAA;QACd,CAAC;IACH,CAAC;IAED,cAAc,CAAI,MAAyB;QACzC,OAAO,uBAAA,IAAI,uCAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB,CAAI,MAA6B;QACjD,OAAO,uBAAA,IAAI,uCAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,iBAAiB,CAAI,MAA4B;QAC/C,OAAO,uBAAA,IAAI,uCAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,CAAI,YAA2C,EAAE,QAAqD;QACjH,OAAO,uBAAA,IAAI,uCAAa,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,WAAW,CAAI,YAA2C,EAAE,YAA2C;QACrG,OAAO,uBAAA,IAAI,uCAAa,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IAED,QAAQ;QACN,OAAO,uBAAA,IAAI,uCAAa,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,YAAoB,WAAsC,EAAE,UAAoC;QAKvF,kDAAwC;QACxC,iDAAsC;QAL7C,uBAAA,IAAI,mCAAgB,WAAW,MAAA,CAAC;QAChC,uBAAA,IAAI,kCAAe,UAAU,MAAA,CAAC;IAChC,CAAC;CAIF;;AAAA,CAAC"}
|
package/impl/Events.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Contracts } from "@jonloucks/contracts-ts/api/Contracts";
|
|
2
|
+
import { Open } from "@jonloucks/contracts-ts/api/Open";
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for Events implementation
|
|
5
|
+
*/
|
|
6
|
+
export interface Config {
|
|
7
|
+
contracts?: Contracts;
|
|
8
|
+
names?: string[];
|
|
9
|
+
callback: (...args: unknown[]) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Event listener management interface for process-level events.
|
|
13
|
+
*
|
|
14
|
+
* Implementations manage the open/close lifecycle for registering and
|
|
15
|
+
* deregistering listeners on the Node.js process object.
|
|
16
|
+
*/
|
|
17
|
+
export interface Events extends Open {
|
|
18
|
+
/**
|
|
19
|
+
* Check if the event listeners are currently open.
|
|
20
|
+
*
|
|
21
|
+
* @returns true if the event listeners are open, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
isOpen(): boolean;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=Events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../src/impl/Events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,MAAO,SAAQ,IAAI;IAElC;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
|
|
2
|
+
import { Config, Events } from "./Events.js";
|
|
3
|
+
export { type Config, type Events };
|
|
4
|
+
/**
|
|
5
|
+
* Factory method to create Events instance.
|
|
6
|
+
*
|
|
7
|
+
* @param config the configuration for the Events implementation
|
|
8
|
+
* @returns the new Events implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare function create(config?: Config): RequiredType<Events>;
|
|
11
|
+
//# sourceMappingURL=Events.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Events.impl.d.ts","sourceRoot":"","sources":["../../src/impl/Events.impl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;AAEpC;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAE5D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _EventsImpl_names, _EventsImpl_callback, _EventsImpl_idempotent;
|
|
13
|
+
import { CONTRACT as IDEMPOTENT_FACTORY } from "@jonloucks/contracts-ts/auxiliary/IdempotentFactory";
|
|
14
|
+
import { inlineAutoClose } from "@jonloucks/contracts-ts/api/AutoClose";
|
|
15
|
+
import { configCheck, contractsCheck, presentCheck } from "@jonloucks/contracts-ts/auxiliary/Checks";
|
|
16
|
+
/**
|
|
17
|
+
* Factory method to create Events instance.
|
|
18
|
+
*
|
|
19
|
+
* @param config the configuration for the Events implementation
|
|
20
|
+
* @returns the new Events implementation
|
|
21
|
+
*/
|
|
22
|
+
export function create(config) {
|
|
23
|
+
return EventsImpl.internalCreate(config);
|
|
24
|
+
}
|
|
25
|
+
// ---- Implementation details below ----
|
|
26
|
+
/**
|
|
27
|
+
* The Events implementation
|
|
28
|
+
*/
|
|
29
|
+
class EventsImpl {
|
|
30
|
+
open() {
|
|
31
|
+
return __classPrivateFieldGet(this, _EventsImpl_idempotent, "f").open();
|
|
32
|
+
}
|
|
33
|
+
isOpen() {
|
|
34
|
+
return __classPrivateFieldGet(this, _EventsImpl_idempotent, "f").getState() === 'OPENED';
|
|
35
|
+
}
|
|
36
|
+
static internalCreate(config) {
|
|
37
|
+
return new EventsImpl(config);
|
|
38
|
+
}
|
|
39
|
+
firstOpen() {
|
|
40
|
+
__classPrivateFieldGet(this, _EventsImpl_names, "f").forEach(name => {
|
|
41
|
+
process.on(name, __classPrivateFieldGet(this, _EventsImpl_callback, "f"));
|
|
42
|
+
});
|
|
43
|
+
return inlineAutoClose(() => {
|
|
44
|
+
__classPrivateFieldGet(this, _EventsImpl_names, "f").forEach(name => {
|
|
45
|
+
process.off(name, __classPrivateFieldGet(this, _EventsImpl_callback, "f"));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
constructor(config) {
|
|
50
|
+
_EventsImpl_names.set(this, void 0);
|
|
51
|
+
_EventsImpl_callback.set(this, void 0);
|
|
52
|
+
_EventsImpl_idempotent.set(this, void 0);
|
|
53
|
+
const validConfig = configCheck(config);
|
|
54
|
+
__classPrivateFieldSet(this, _EventsImpl_callback, presentCheck(validConfig?.callback, "Callback must be present."), "f");
|
|
55
|
+
__classPrivateFieldSet(this, _EventsImpl_names, validConfig?.names ?? [], "f");
|
|
56
|
+
const contracts = contractsCheck(validConfig.contracts);
|
|
57
|
+
__classPrivateFieldSet(this, _EventsImpl_idempotent, contracts.enforce(IDEMPOTENT_FACTORY).createIdempotent({
|
|
58
|
+
open: () => this.firstOpen()
|
|
59
|
+
}), "f");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_EventsImpl_names = new WeakMap(), _EventsImpl_callback = new WeakMap(), _EventsImpl_idempotent = new WeakMap();
|
|
63
|
+
//# sourceMappingURL=Events.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Events.impl.js","sourceRoot":"","sources":["../../src/impl/Events.impl.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACrG,OAAO,EAAa,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAMrG;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,MAAe;IACpC,OAAO,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,yCAAyC;AAEzC;;GAEG;AACH,MAAM,UAAU;IAEd,IAAI;QACF,OAAO,uBAAA,IAAI,8BAAY,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,uBAAA,IAAI,8BAAY,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAA;IACjD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAe;QACnC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,SAAS;QACf,uBAAA,IAAI,yBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAA,IAAI,4BAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,GAAG,EAAE;YAC1B,uBAAA,IAAI,yBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAA,IAAI,4BAAU,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAoB,MAAe;QAU1B,oCAAiB;QACjB,uCAAwC;QACxC,yCAAwB;QAX/B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,uBAAA,IAAI,wBAAa,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,2BAA2B,CAAC,MAAA,CAAC;QAClF,uBAAA,IAAI,qBAAU,WAAW,EAAE,KAAK,IAAI,EAAE,MAAA,CAAC;QACvC,MAAM,SAAS,GAAe,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACpE,uBAAA,IAAI,0BAAe,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,CAAC;YACxE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;SAC7B,CAAC,MAAA,CAAC;IACL,CAAC;CAKF"}
|
package/impl/Events.js
ADDED