1 | var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
2 | if (kind === "m") throw new TypeError("Private method is not writable");
|
3 | if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
4 | 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");
|
5 | return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
6 | };
|
7 | var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8 | if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
9 | 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");
|
10 | return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11 | };
|
12 | var _Task_task, _Task_promise, _Task_state, _TaskPromise_task, _TaskPromise_mapFn, _TaskPromise_mappedPromise, _a;
|
13 |
|
14 | import { ResolvablePromise } from '@worker-tools/resolvable-promise';
|
15 | import { pipe } from 'ts-functional-pipe';
|
16 | const id = (_) => _;
|
17 | class Task {
|
18 | constructor(task) {
|
19 | _Task_task.set(this, void 0);
|
20 | _Task_promise.set(this, void 0);
|
21 | _Task_state.set(this, 'idle');
|
22 | __classPrivateFieldSet(this, _Task_task, task, "f");
|
23 | __classPrivateFieldSet(this, _Task_promise, new ResolvablePromise(), "f");
|
24 | }
|
25 | execute() {
|
26 | if (__classPrivateFieldGet(this, _Task_state, "f") === 'idle') {
|
27 | __classPrivateFieldSet(this, _Task_state, 'pending', "f");
|
28 | __classPrivateFieldGet(this, _Task_promise, "f").resolve(__classPrivateFieldGet(this, _Task_task, "f").call(this));
|
29 | __classPrivateFieldGet(this, _Task_promise, "f").then(() => { __classPrivateFieldSet(this, _Task_state, 'fulfilled', "f"); }, () => { __classPrivateFieldSet(this, _Task_state, 'rejected', "f"); });
|
30 | }
|
31 | }
|
32 | get state() { return __classPrivateFieldGet(this, _Task_state, "f"); }
|
33 | get promise() { return __classPrivateFieldGet(this, _Task_promise, "f"); }
|
34 | }
|
35 | _Task_task = new WeakMap(), _Task_promise = new WeakMap(), _Task_state = new WeakMap();
|
36 | const lock = Symbol('key');
|
37 |
|
38 |
|
39 |
|
40 |
|
41 | export class TaskPromise {
|
42 | constructor(key, task, mapFn, thisArg) {
|
43 | _TaskPromise_task.set(this, void 0);
|
44 | _TaskPromise_mapFn.set(this, void 0);
|
45 | _TaskPromise_mappedPromise.set(this, void 0);
|
46 | Object.defineProperty(this, _a, {
|
47 | enumerable: true,
|
48 | configurable: true,
|
49 | writable: true,
|
50 | value: 'TaskPromise'
|
51 | });
|
52 | if (key !== lock)
|
53 | throw Error('Illegal constructor');
|
54 | __classPrivateFieldSet(this, _TaskPromise_task, task, "f");
|
55 | __classPrivateFieldSet(this, _TaskPromise_mapFn, mapFn, "f");
|
56 | __classPrivateFieldSet(this, _TaskPromise_mappedPromise, __classPrivateFieldGet(this, _TaskPromise_task, "f").promise.then(mapFn && (x => mapFn.call(thisArg, x, 0, this))), "f");
|
57 | }
|
58 | static from(task) {
|
59 | return new TaskPromise(lock, new Task(task));
|
60 | }
|
61 | get state() {
|
62 | return __classPrivateFieldGet(this, _TaskPromise_task, "f").state;
|
63 | }
|
64 | |
65 |
|
66 |
|
67 |
|
68 | then(onfulfilled, onrejected) {
|
69 | __classPrivateFieldGet(this, _TaskPromise_task, "f").execute();
|
70 | return __classPrivateFieldGet(this, _TaskPromise_mappedPromise, "f").then(onfulfilled, onrejected);
|
71 | }
|
72 | |
73 |
|
74 |
|
75 |
|
76 | map(mapFn, thisArg) {
|
77 | var _b;
|
78 |
|
79 | return new TaskPromise(lock, __classPrivateFieldGet(this, _TaskPromise_task, "f"), pipe((_b = __classPrivateFieldGet(this, _TaskPromise_mapFn, "f")) !== null && _b !== void 0 ? _b : id, mapFn !== null && mapFn !== void 0 ? mapFn : id), thisArg);
|
80 | }
|
81 | catch(onrejected) {
|
82 |
|
83 | return __classPrivateFieldGet(this, _TaskPromise_mappedPromise, "f").catch(onrejected);
|
84 | }
|
85 | finally(onfinally) {
|
86 |
|
87 | return __classPrivateFieldGet(this, _TaskPromise_mappedPromise, "f").finally(onfinally);
|
88 | }
|
89 | }
|
90 | _TaskPromise_task = new WeakMap(), _TaskPromise_mapFn = new WeakMap(), _TaskPromise_mappedPromise = new WeakMap(), _a = Symbol.toStringTag;
|
91 |
|
\ | No newline at end of file |