@ndriadev/futurable 2.0.2 → 2.0.4

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 CHANGED
@@ -11,7 +11,7 @@
11
11
  <div align="center">
12
12
 
13
13
  ![Statements](https://img.shields.io/badge/statements-100%25-brightgreen.svg?style=for-the-badge)
14
- ![Branches](https://img.shields.io/badge/branches-96.21%25-brightgreen.svg?style=for-the-badge)
14
+ ![Branches](https://img.shields.io/badge/branches-96.24%25-brightgreen.svg?style=for-the-badge)
15
15
  ![Functions](https://img.shields.io/badge/functions-100%25-brightgreen.svg?style=for-the-badge)
16
16
  ![Lines](https://img.shields.io/badge/lines-100%25-brightgreen.svg?style=for-the-badge)
17
17
  </div>
@@ -81,7 +81,7 @@ export default function Component() {
81
81
  //...code
82
82
 
83
83
  useEffect(() => {
84
- const f;
84
+ let f;
85
85
  function callApi() {
86
86
  f = Futurable
87
87
  .fetch("...")
@@ -139,7 +139,7 @@ They are the following:
139
139
  - [Futurable.any](#futurableanyiterable-futurableiterable-signal-abortsignal)
140
140
  - [Futurable.race](#futurableraceiterable-futurableiterable-signal-abortsignal)
141
141
 
142
- ### constructor(executor: FuturableExecutor, signal?: AbortSignal)
142
+ ### constructor(executor: FuturableExecutor<T>, signal?: AbortSignal)
143
143
  Futurable is instantiable like a classic Promise.
144
144
  ```javascript
145
145
  //Javascript Promise
@@ -191,7 +191,7 @@ Utils is an object with the following properties which mirror the methods descri
191
191
  In addition is has:
192
192
  - signal: internal futurable signal;
193
193
 
194
- ### cancel()
194
+ ### cancel(): void
195
195
  If invoked, it cancel the futurable if it is to be executed or if it is still executing.
196
196
 
197
197
  *Example*
@@ -215,7 +215,7 @@ const futurable = asynchronousOperation();
215
215
  futurable.cancel();
216
216
  ```
217
217
 
218
- ### onCancel(cb: callback)
218
+ ### onCancel(cb: callback): void
219
219
  If it is invoked, when the futurable is cancelled, it executes the callback passed as a parameter.
220
220
 
221
221
  *Example*
@@ -251,7 +251,7 @@ futurable.cancel();
251
251
  Output: Futurable cancelled
252
252
  ```
253
253
 
254
- ### sleep(timer: number)
254
+ ### sleep(timer: number): Futurable<T>
255
255
  Waits for timer parameter (in milliseconds) before returning the value.
256
256
 
257
257
  *Example*
@@ -280,7 +280,7 @@ futurable
280
280
  ```
281
281
 
282
282
  ### delay(cb: callback, timer: number)
283
- Waits for timer parameter (in milliseconds), then executes callback with the futurable value and returns the result obtained from the invocation.
283
+ Waits for timer parameter (in milliseconds), then executes callback with the futurable value and returns the result obtained from the invocation. Callback parameter, when delay is invoked as class method, has the value of futurable, like then method.
284
284
 
285
285
  *Example*
286
286
  ```javascript
@@ -465,7 +465,7 @@ Futurable.futurizable({promise: /*promise to futurizable*/, signal: controller.s
465
465
  //...code
466
466
  ```
467
467
 
468
- ### Futurable.all(iterable: FuturableIterable[], signal?: AbortSignal)
468
+ ### Futurable.all(values: T, signal?: AbortSignal)
469
469
  Extension of the static method all with cancellation support.
470
470
 
471
471
  *Example*
@@ -476,14 +476,28 @@ const controller = new AbortController();
476
476
 
477
477
  Futurable.all([
478
478
  1,
479
- Futurable.resolve(true),
479
+ Futurable.resolve(true, controlles.signal),
480
480
  new Futurable/*...*/
481
481
  ], controller.signal);
482
482
 
483
483
  //...code
484
+
485
+ controller.abort();
486
+
487
+ //OR
488
+
489
+ const f = Futurable.all([
490
+ 1,
491
+ Futurable.resolve(true),
492
+ new Futurable/*...*/
493
+ ]
494
+
495
+ //...code
496
+
497
+ f.cancel();
484
498
  ```
485
499
 
486
- ### Futurable.allSettled(iterable: FuturableIterable[], signal?: AbortSignal)
500
+ ### Futurable.allSettled(values: T, signal?: AbortSignal)
487
501
  Extension of the static method allSettled with cancellation support.
488
502
 
489
503
  *Example*
@@ -494,14 +508,28 @@ const controller = new AbortController();
494
508
 
495
509
  Futurable.allSettled([
496
510
  1,
497
- Futurable.resolve(true),
511
+ Futurable.resolve(true, controller.signal),
498
512
  new Futurable/*...*/
499
513
  ], controller.signal);
500
514
 
501
515
  //...code
516
+
517
+ controller.abort();
518
+
519
+ //OR
520
+
521
+ const f = Futurable.allSettled([
522
+ 1,
523
+ Futurable.resolve(true),
524
+ new Futurable/*...*/
525
+ ];
526
+
527
+ //...code
528
+
529
+ f.cancel();
502
530
  ```
503
531
 
504
- ### Futurable.any(iterable: FuturableIterable[], signal?: AbortSignal)
532
+ ### Futurable.any(values: T, signal?: AbortSignal)
505
533
  Extension of the static method any with cancellation support.
506
534
 
507
535
  *Example*
@@ -511,14 +539,28 @@ const controller = new AbortController();
511
539
 
512
540
  Futurable.any([
513
541
  1,
514
- Futurable.resolve(true),
542
+ Futurable.resolve(true, controller.signal),
515
543
  new Futurable/*...*/
516
544
  ], controller.signal);
517
545
 
518
546
  //...code
547
+
548
+ controller.abort();
549
+
550
+ //OR
551
+
552
+ const f = Futurable.any([
553
+ 1,
554
+ Futurable.resolve(true, controller.signal),
555
+ new Futurable/*...*/
556
+ ];
557
+
558
+ //...code
559
+
560
+ f.cancel();
519
561
  ```
520
562
 
521
- ### Futurable.race(iterable: FuturableIterable[], signal?: AbortSignal)
563
+ ### Futurable.race(values: T, signal?: AbortSignal)
522
564
  Extension of the static method race with cancellation support.
523
565
 
524
566
  *Example*
@@ -528,11 +570,25 @@ const controller = new AbortController();
528
570
 
529
571
  Futurable.race([
530
572
  1,
531
- Futurable.resolve(true),
573
+ Futurable.resolve(true, controller.signal),
532
574
  new Futurable/*...*/
533
575
  ], controller.signal);
534
576
 
535
577
  //...code
578
+
579
+ controller.abort();
580
+
581
+ //OR
582
+
583
+ const f = Futurable.race([
584
+ 1,
585
+ Futurable.resolve(true, controller.signal),
586
+ new Futurable/*...*/
587
+ ];
588
+
589
+ //...code
590
+
591
+ f.cancel();
536
592
  ```
537
593
 
538
594
 
@@ -1 +1 @@
1
- "use strict";var T=Object.defineProperty;var C=(y,g,t)=>g in y?T(y,g,{enumerable:!0,configurable:!0,writable:!0,value:t}):y[g]=t;var S=(y,g,t)=>(C(y,typeof g!="symbol"?g+"":g,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class l extends Promise{constructor(t,e){const r=e?null:new AbortController,n=e||r.signal,o=[],c=()=>{for(const s of o)clearTimeout(s)};let i;const a={signal:n,cancel:()=>{var s;return(s=this.controller)==null?void 0:s.abort()},onCancel:s=>{i=s},delay:(s,u)=>new l(d=>{o.push(setTimeout(()=>{d(s())},u))},n),sleep:s=>a.delay(()=>{},s),fetch:(s,u)=>new l((d,j)=>{fetch(s,{...u||{},signal:n}).then(w=>d(w)).catch(w=>{w.name!=="AbortError"&&j(w)})},n),futurizable:s=>new l((u,d)=>{s.then(u).catch(d)},n)};let f="pending";const p=new Promise((s,u)=>{if(n.aborted){c(),f==="pending"&&i&&i();return}else{const d=typeof n.onabort=="function"?n.onabort:()=>{};n.onabort=()=>{d(),c(),f==="pending"&&i&&i()},t(m=>{f="fulfilled",s(m)},m=>{f="rejected",u(m)},a)}});super((s,u)=>{p.then(d=>s(d)).catch(u)});S(this,"controller");S(this,"internalSignal");S(this,"idsTimeout");this.controller=r,this.internalSignal=n,this.idsTimeout=o}static get[Symbol.species](){return this}get[Symbol.toStringTag](){return"Futurable"}get signal(){return this.internalSignal}clearTimeout(){for(const t of this.idsTimeout)clearTimeout(t)}then(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,super.then(c=>{var i;if((i=this.internalSignal)!=null&&i.aborted){this.clearTimeout();return}try{r(t?t(c):c)}catch(h){n(h)}},c=>{var i;if((i=this.internalSignal)!=null&&i.aborted){this.clearTimeout();return}try{e?r(e(c)):n(c)}catch(h){n(h)}}),o}catch(t){return this.then(null,t)}finally(t){return this.then(e=>(t(),e),e=>(t(),e))}cancel(){var t,e;!((t=this.internalSignal)!=null&&t.aborted)&&((e=this.controller)==null||e.abort())}delay(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,this.then(c=>{this.idsTimeout.push(setTimeout(()=>r(t(c)),e))},c=>{n(c)}),o}sleep(t){return this.delay(e=>e,t)}fetch(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,this.then(c=>{const i=typeof t=="function"?t(c):t,h={...typeof e=="function"?e(c):e,signal:this.internalSignal};fetch(i,h).then(a=>r(a)).catch(a=>{a.name!=="AbortError"&&n(a)})}),o}onCancel(t){let e,r;const n=new l((o,c,i)=>{i.onCancel(t),e=o,r=c},this.internalSignal);return n.controller=this.controller,this.then(o=>e(o),o=>r(o)),n}futurizable(t){let e,r;const n=new l((o,c)=>{e=o,r=c},this.internalSignal);return n.controller=this.controller,this.then(o=>{(typeof t=="function"?t(o):t).then(e).catch(r)}),n}static resolve(t,e){return t?new l(r=>r(t),e):new l(r=>r(),e)}static reject(t,e){return new l((r,n)=>n(t),e)}static onCancel({cb:t,signal:e}){return new l((r,n,o)=>{o.onCancel(()=>r(t()))},e)}static delay({cb:t,timer:e,signal:r}){return new l((n,o,c)=>{c.delay(t,e).then(n,o)},r)}static sleep({timer:t,signal:e}){return l.delay({cb:()=>{},timer:t,signal:e})}static fetch(t,e){const r=(e==null?void 0:e.signal)||void 0;return e!=null&&e.signal&&delete e.signal,new l((n,o,c)=>{c.fetch(t,e).then(n)},r)}static futurizable({promise:t,signal:e}){return new l((r,n)=>{t.then(r).catch(n)},e)}static handleValues(t,e){const r=[];for(const n in t)t[n]instanceof l?r.push(t[n]):t[n]instanceof Promise?r.push(new l((o,c)=>{t[n].then(i=>o(i)).catch(c)},e)):r.push(new l(o=>o(t[n]),e));return r}static all(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.all(c).then(i=>r(i)).catch(i=>n(i)),o}static allSettled(t,e){let r;const n=new l((c,i,h)=>{r=c,h.onCancel(()=>{for(const a of o)a.cancel()})},e);e||(e=n.internalSignal);const o=l.handleValues(t,e);return super.allSettled(o).then(c=>r(c)),n}static race(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.race(c).then(i=>r(i)).catch(i=>n(i)),o}static any(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.any(c).then(i=>r(i)).catch(i=>n(i)),o}}exports.Futurable=l;
1
+ "use strict";var T=Object.defineProperty;var C=(w,g,t)=>g in w?T(w,g,{enumerable:!0,configurable:!0,writable:!0,value:t}):w[g]=t;var S=(w,g,t)=>(C(w,typeof g!="symbol"?g+"":g,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class l extends Promise{constructor(t,e){const r=e?null:new AbortController,n=e||r.signal,o=[],c=()=>{for(const s of o)clearTimeout(s)};let i;const a={signal:n,cancel:()=>{var s;return(s=this.controller)==null?void 0:s.abort()},onCancel:s=>{i=s},delay:(s,u)=>new l(d=>{o.push(setTimeout(()=>{d(s())},u))},n),sleep:s=>a.delay(()=>{},s),fetch:(s,u)=>new l((d,j)=>{fetch(s,{...u||{},signal:n}).then(y=>d(y)).catch(y=>{y.name!=="AbortError"&&j(y)})},n),futurizable:s=>new l((u,d)=>{s.then(u).catch(d)},n)};let f="pending";const p=new Promise((s,u)=>{if(n.aborted){c(),f==="pending"&&i&&i();return}else{const d=typeof n.onabort=="function"?n.onabort:()=>{};n.onabort=()=>{d(),c(),f==="pending"&&i&&i()},t(m=>{f="fulfilled",s(m)},m=>{f="rejected",u(m)},a)}});super((s,u)=>{p.then(d=>s(d)).catch(u)});S(this,"controller");S(this,"internalSignal");S(this,"idsTimeout");this.controller=r,this.internalSignal=n,this.idsTimeout=o}static get[Symbol.species](){return this}get[Symbol.toStringTag](){return"Futurable"}get signal(){return this.internalSignal}clearTimeout(){for(const t of this.idsTimeout)clearTimeout(t)}then(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,super.then(c=>{var i;if((i=this.internalSignal)!=null&&i.aborted){this.clearTimeout();return}try{r(t?t(c):c)}catch(h){n(h)}},c=>{var i;if((i=this.internalSignal)!=null&&i.aborted){this.clearTimeout();return}try{e?r(e(c)):n(c)}catch(h){n(h)}}),o}catch(t){return this.then(null,t)}finally(t){return this.then(e=>(t(),e),e=>{if(t(),e instanceof Error)throw e;return e})}cancel(){var t,e;!((t=this.internalSignal)!=null&&t.aborted)&&((e=this.controller)==null||e.abort())}delay(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,this.then(c=>{this.idsTimeout.push(setTimeout(()=>r(t(c)),e))},c=>{n(c)}),o}sleep(t){return this.delay(e=>e,t)}fetch(t,e){let r,n;const o=new l((c,i)=>{r=c,n=i},this.internalSignal);return o.controller=this.controller,this.then(c=>{const i=typeof t=="function"?t(c):t,h={...typeof e=="function"?e(c):e,signal:this.internalSignal};fetch(i,h).then(a=>r(a)).catch(a=>{a.name!=="AbortError"&&n(a)})}),o}onCancel(t){let e,r;const n=new l((o,c,i)=>{i.onCancel(t),e=o,r=c},this.internalSignal);return n.controller=this.controller,this.then(o=>e(o),o=>r(o)),n}futurizable(t){let e,r;const n=new l((o,c)=>{e=o,r=c},this.internalSignal);return n.controller=this.controller,this.then(o=>{(typeof t=="function"?t(o):t).then(e).catch(r)}),n}static resolve(t,e){return t?new l(r=>r(t),e):new l(r=>r(),e)}static reject(t,e){return new l((r,n)=>n(t),e)}static onCancel({cb:t,signal:e}){return new l((r,n,o)=>{o.onCancel(()=>r(t()))},e)}static delay({cb:t,timer:e,signal:r}){return new l((n,o,c)=>{c.delay(t,e).then(n,o)},r)}static sleep({timer:t,signal:e}){return l.delay({cb:()=>{},timer:t,signal:e})}static fetch(t,e){const r=(e==null?void 0:e.signal)||void 0;return e!=null&&e.signal&&delete e.signal,new l((n,o,c)=>{c.fetch(t,e).then(n)},r)}static futurizable({promise:t,signal:e}){return new l((r,n)=>{t.then(r).catch(n)},e)}static handleValues(t,e){const r=[];for(const n in t)t[n]instanceof l?r.push(t[n]):t[n]instanceof Promise?r.push(new l((o,c)=>{t[n].then(i=>o(i)).catch(c)},e)):r.push(new l(o=>o(t[n]),e));return r}static all(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.all(c).then(i=>r(i)).catch(i=>n(i)),o}static allSettled(t,e){let r;const n=new l((c,i,h)=>{r=c,h.onCancel(()=>{for(const a of o)a.cancel()})},e);e||(e=n.internalSignal);const o=l.handleValues(t,e);return super.allSettled(o).then(c=>r(c)),n}static race(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.race(c).then(i=>r(i)).catch(i=>n(i)),o}static any(t,e){let r,n;const o=new l((i,h,a)=>{r=i,n=h,a.onCancel(()=>{for(const f of c)f.cancel()})},e);e||(e=o.internalSignal);const c=l.handleValues(t,e);return super.any(c).then(i=>r(i)).catch(i=>n(i)),o}}exports.Futurable=l;
@@ -1,6 +1,6 @@
1
1
  var T = Object.defineProperty;
2
- var C = (w, g, t) => g in w ? T(w, g, { enumerable: !0, configurable: !0, writable: !0, value: t }) : w[g] = t;
3
- var S = (w, g, t) => (C(w, typeof g != "symbol" ? g + "" : g, t), t);
2
+ var C = (g, w, t) => w in g ? T(g, w, { enumerable: !0, configurable: !0, writable: !0, value: t }) : g[w] = t;
3
+ var S = (g, w, t) => (C(g, typeof w != "symbol" ? w + "" : w, t), t);
4
4
  class l extends Promise {
5
5
  constructor(t, e) {
6
6
  const r = e ? null : new AbortController(), n = e || r.signal, o = [], c = () => {
@@ -119,7 +119,11 @@ class l extends Promise {
119
119
  finally(t) {
120
120
  return this.then(
121
121
  (e) => (t(), e),
122
- (e) => (t(), e)
122
+ (e) => {
123
+ if (t(), e instanceof Error)
124
+ throw e;
125
+ return e;
126
+ }
123
127
  );
124
128
  }
125
129
  /**
package/dist/index.d.ts CHANGED
@@ -171,6 +171,6 @@ export declare class Futurable<T> extends Promise<T> {
171
171
  * given futurables are rejected. It resolves all elements of the passed iterable to futurables as
172
172
  * it runs this algorithm.
173
173
  */
174
- static any<T extends readonly unknown[] | []>(value: T, signal?: AbortSignal): Futurable<Awaited<T[number]>>;
174
+ static any<T extends readonly unknown[] | []>(values: T, signal?: AbortSignal): Futurable<Awaited<T[number]>>;
175
175
  }
176
176
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@ndriadev/futurable",
3
3
  "description": "Extension Javascript's Promise API with more functionalities",
4
4
  "private": false,
5
- "version": "2.0.2",
5
+ "version": "2.0.4",
6
6
  "type": "module",
7
7
  "files": [
8
8
  "dist/",
@@ -20,28 +20,29 @@
20
20
  }
21
21
  }
22
22
  },
23
- "main": "./src/index.ts",
24
- "types": "./src/index.d.ts",
23
+ "main": "./dist/futurable.cjs.js",
24
+ "module": "./dist/futurable.mjs.js",
25
+ "types": "./dist/index.d.ts",
25
26
  "//scripts": {
26
27
  "preinstall": "node ./scripts/preinstall.js --foreground-script",
27
28
  "postinstall": "echo 'postinstall executed'"
28
29
  },
29
30
  "devDependencies": {
30
- "@babel/preset-typescript": "^7.21.5",
31
- "@jest/globals": "^29.5.0",
32
- "@types/node": "^20.1.1",
33
- "@typescript-eslint/eslint-plugin": "^5.59.5",
34
- "@typescript-eslint/parser": "^5.59.5",
35
- "eslint": "^8.40.0",
31
+ "@babel/preset-typescript": "^7.22.5",
32
+ "@jest/globals": "^29.6.1",
33
+ "@types/node": "^20.4.5",
34
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
35
+ "@typescript-eslint/parser": "^5.62.0",
36
+ "eslint": "^8.45.0",
36
37
  "eslint-config-prettier": "^8.8.0",
37
38
  "eslint-plugin-import": "^2.27.5",
38
39
  "eslint-plugin-prettier": "^4.2.1",
39
- "jest": "^29.5.0",
40
+ "jest": "^29.6.1",
40
41
  "prettier": "^2.8.8",
41
- "ts-jest": "^29.1.0",
42
+ "ts-jest": "^29.1.1",
42
43
  "ts-node": "^10.9.1",
43
- "typescript": "^5.0.2",
44
- "vite": "^4.3.2",
44
+ "typescript": "^5.1.6",
45
+ "vite": "^4.4.7",
45
46
  "vite-plugin-dts": "^2.3.0",
46
47
  "vite-plugin-linter": "^2.0.2",
47
48
  "vite-tsconfig-paths": "^4.2.0"
@@ -79,14 +80,18 @@
79
80
  },
80
81
  "homepage": "https://github.com/nDriaDev/futurable",
81
82
  "license": "MIT",
83
+ "dependencies": {
84
+ "typedoc": "^0.24.8"
85
+ },
82
86
  "scripts": {
83
87
  "build": "tsc && vite build",
84
88
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
85
89
  "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
86
90
  "lint:fix": "eslint --fix 'src/**/*.{jsx,ts,tsx}'",
91
+ "docs": "typedoc src/index.ts --out docs",
87
92
  "release:patch": "pnpm version patch",
88
93
  "release:minor": "pnpm version minor",
89
94
  "release:major": "pnpm version major",
90
- "postversion": "git push && git push origin --tags && pnpm publish --access public"
95
+ "postversion": "pnpm run docs && git add . && git commit -m '[FIX] docs' && git push && git push origin --tags && pnpm publish --access public"
91
96
  }
92
97
  }
package/src/index.ts DELETED
@@ -1,563 +0,0 @@
1
- export interface FuturableLike<T> {
2
- /**
3
- * Attaches callbacks for the resolution and/or rejection of the Futurable.
4
- * @param onfulfilled The callback to execute when the Futurable is resolved.
5
- * @param onrejected The callback to execute when the Futurable is rejected.
6
- * @returns A Futurable for the completion of which ever callback is executed.
7
- */
8
- then<TResult1 = T, TResult2 = never>(
9
- onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1> | FuturableLike<TResult1>) | undefined | null,
10
- onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2> | FuturableLike<TResult2>) | undefined | null
11
- ): FuturableLike<TResult1 | TResult2>;
12
- }
13
- export interface FuturableResolve<T> {
14
- (value: T | FuturableLike<T> | PromiseLike<T>): void;
15
- }
16
-
17
- export interface FuturableReject {
18
- (reason?: any): void;
19
- }
20
-
21
- export interface FuturableUtils<T> {
22
- /**
23
- * Internal futurable signal
24
- */
25
- signal: AbortSignal;
26
- /**
27
- * Cancel the futurable if it is to be executed or if it is still executing.
28
- */
29
- cancel: () => void;
30
- /**
31
- * Executes the callback passed as a parameter when the futurable is cancelled.
32
- * @param cb: callback
33
- */
34
- onCancel: (cb: () => void) => void;
35
- /**
36
- * Waits for timer, then executes callback with the futurable value and returns the result obtained from the invocation.
37
- * @param cb: callback executed after timer
38
- * @param timer: timer to wait (in milliseconds)
39
- */
40
- delay: <TResult=T, TResult2=never>(cb: () => TResult, timer: number) => FuturableLike<TResult | TResult2>;
41
- /**
42
- * Waits for timer parameter (in milliseconds) before returning the value.
43
- * @param timer: timer to wait (in milliseconds)
44
- */
45
- sleep: (timer: number) => FuturableLike<void>;
46
- /**
47
- * Extension of the fetch API with cancellation support. Url parameter can be a string or a function with receive value from futurable chaining as paremeter.
48
- * @param url: url to fetch
49
- * @param opts: fetch options
50
- */
51
- fetch: (url: string, opts?: RequestInit) => Futurable<Response>;
52
- /**
53
- * Takes a promise and transforms it into a futurizable. Promise can be also a function that receives value from futurable chaining as parameter.
54
- * @param promise: Promise to futurize
55
- */
56
- futurizable: <TResult=any>(promise: Promise<TResult>) => Futurable<TResult>;
57
- }
58
-
59
- export type FuturableExecutor<T> = (
60
- resolve: FuturableResolve<T>,
61
- reject: FuturableReject,
62
- /**
63
- * Object containing implemented functionalities.
64
- */
65
- utils: FuturableUtils<T>
66
- ) => void;
67
-
68
- export type FuturableIterable<T = any> = Iterable<FuturableLike<T> | PromiseLike<T> | T>;
69
-
70
- enum FUTURABLE_STATUS {
71
- PENDING = "pending",
72
- FULFILLED = "fulfilled",
73
- REJECTED = "rejected"
74
- }
75
-
76
- export class Futurable<T> extends Promise<T> {
77
- private controller;
78
- private internalSignal;
79
- private idsTimeout;
80
-
81
- constructor(executor: FuturableExecutor<T>, signal?: AbortSignal) {
82
- const controller: AbortController | null = signal ? null : new AbortController();
83
- const sign = signal || controller!.signal;
84
- const idsTimeout: ReturnType<typeof setTimeout>[] = [];
85
-
86
- const abortTimeout = () => {
87
- for (const timeout of idsTimeout) {
88
- clearTimeout(timeout);
89
- }
90
- };
91
-
92
- let abort: () => void;
93
-
94
- const onCancel = (cb: () => void): void => {
95
- abort = cb;
96
- };
97
-
98
- const utils: FuturableUtils<T> = {
99
- signal: sign,
100
- cancel: (): void => this.controller?.abort(),
101
- onCancel,
102
- delay: (cb, timer) => {
103
- return new Futurable(res => {
104
- idsTimeout.push(setTimeout(() => {
105
- res(cb());
106
- }, timer));
107
- }, sign);
108
- },
109
- sleep: (timer) => {
110
- return utils.delay(() => { }, timer);
111
- },
112
- fetch: (url: string, opts?: RequestInit): Futurable<Response> => {
113
- return new Futurable<Response>((res, rej) => {
114
- fetch(url, { ...(opts || {}), signal: sign })
115
- .then(val => res(val))
116
- .catch(err => {
117
- if (err.name === "AbortError") {
118
- return;
119
- } else {
120
- rej(err);
121
- }
122
- });
123
- }, sign);
124
- },
125
- futurizable: (promise) => {
126
- return new Futurable((res, rej) => {
127
- promise
128
- .then(res)
129
- .catch(rej);
130
- }, sign);
131
- }
132
- };
133
-
134
- let status = FUTURABLE_STATUS.PENDING;
135
-
136
- const p = new Promise<T>((resolve, reject) => {
137
- if (!sign.aborted) {
138
- const func: (() => void) = typeof sign.onabort === "function" ? sign.onabort as () => void : () => { };
139
- sign.onabort = () => {
140
- func();
141
- abortTimeout();
142
- if (status === FUTURABLE_STATUS.PENDING) {
143
- abort && abort();
144
- }
145
- return;
146
- };
147
-
148
- const res: FuturableResolve<T> = (val) => {
149
- status = FUTURABLE_STATUS.FULFILLED;
150
- resolve(val as T | PromiseLike<T>);
151
- };
152
-
153
- const rej: FuturableReject = (reason) => {
154
- status = FUTURABLE_STATUS.REJECTED;
155
- reject(reason);
156
- };
157
-
158
- executor(res, rej, utils);
159
- } else {
160
- abortTimeout();
161
- status === FUTURABLE_STATUS.PENDING && abort && abort();
162
- return;
163
- }
164
- });
165
- super((resolve, reject) => {
166
- p.then(val => resolve(val)).catch(reject);
167
- });
168
- this.controller = controller;
169
- this.internalSignal = sign;
170
- this.idsTimeout = idsTimeout;
171
- }
172
-
173
- static get [Symbol.species]() {
174
- return this;
175
- }
176
-
177
- get [Symbol.toStringTag]() {
178
- return 'Futurable';
179
- }
180
-
181
- /**
182
- * Return internal futurable signal
183
- */
184
- get signal() {
185
- return this.internalSignal;
186
- }
187
-
188
- private clearTimeout() {
189
- for (const timeout of this.idsTimeout) {
190
- clearTimeout(timeout);
191
- }
192
- }
193
-
194
- /**
195
- * Attaches callbacks for the resolution and/or rejection of the Futurable.
196
- */
197
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1> | FuturableLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2> | FuturableLike<TResult2>) | undefined | null): Futurable<TResult1 | TResult2> {
198
- let resolve: FuturableResolve<TResult1|TResult2>, reject: FuturableReject;
199
- const p = new Futurable<TResult1|TResult2>((res, rej) => {
200
- resolve = res;
201
- reject = rej;
202
- }, this.internalSignal);
203
- p.controller = this.controller;
204
- super.then(val => {
205
- if (this.internalSignal?.aborted) {
206
- this.clearTimeout();
207
- return;
208
- }
209
- try {
210
- if (onfulfilled) {
211
- resolve(onfulfilled(val));
212
- } else {
213
- resolve(val as unknown as TResult1);
214
- }
215
- } catch (error) {
216
- reject(error);
217
- }
218
- }, reason => {
219
- if (this.internalSignal?.aborted) {
220
- this.clearTimeout();
221
- return;
222
- }
223
- try {
224
- if (onrejected) {
225
- resolve(onrejected(reason));
226
- } else {
227
- reject(reason);
228
- }
229
- } catch (error) {
230
- reject(error);
231
- }
232
- });
233
- return p;
234
- }
235
-
236
- /**
237
- * Attaches a callback for only the rejection of the Futurable.
238
- */
239
- catch<TResult2 = never>(onRejected: ((reason: any) => TResult2 | PromiseLike<TResult2> | FuturableLike<TResult2>) | undefined | null): Futurable<T | TResult2> {
240
- return this.then(null, onRejected);
241
- }
242
-
243
- /**
244
- * Attaches a callback that is invoked when the Futurable is settled (fulfilled or rejected).
245
- * The resolved value cannot be modified from the callback.
246
- */
247
- finally(onfinally: () => void | undefined | null): Futurable<T> {
248
- return this.then(
249
- (val) => {
250
- onfinally();
251
- return val;
252
- },
253
- (reason) => {
254
- onfinally();
255
- return reason;
256
- }
257
- );
258
- }
259
-
260
- /**
261
- * Cancel the futurable if it is to be executed or if it is still executing.
262
- */
263
- cancel(): void {
264
- !this.internalSignal?.aborted && this.controller?.abort();
265
- }
266
-
267
- /**
268
- * Waits for timer, then executes callback with the futurable value and returns the result obtained from the invocation.
269
- * @param cb: callback executed after timer with futurable chain value as parameter
270
- * @param timer: timer to wait (in milliseconds)
271
- */
272
- delay<TResult1 = T, TResult2 = never>(cb: (val: T) => TResult1 | PromiseLike<TResult1> | FuturableLike<TResult1>, timer: number): Futurable<TResult1 | TResult2> {
273
- let resolve: FuturableResolve<TResult1 | TResult2>, reject: FuturableReject;
274
- const p = new Futurable<TResult1 | TResult2>((res, rej) => {
275
- resolve = res;
276
- reject = rej;
277
- }, this.internalSignal);
278
- p.controller = this.controller;
279
- this.then(
280
- val => {
281
- this.idsTimeout.push(setTimeout(() => resolve(cb(val)), timer));
282
- },
283
- reason => {
284
- reject(reason);
285
- }
286
- );
287
- return p;
288
- }
289
-
290
- /**
291
- * Waits for timer parameter (in milliseconds) before returning the value.
292
- * @param timer: timer to wait (in milliseconds)
293
- */
294
- sleep(timer: number): Futurable<T> {
295
- return this.delay(val => val, timer);
296
- }
297
-
298
- /**
299
- * Extension of the fetch API with cancellation support. Url parameter can be a string or a function with receive value from futurable chaining as paremeter.
300
- * @param url: url to fetch or function with futurable chaining value that returns url to fetch
301
- * @param opts: fetch options or function with futurable chaining value that return fetch options
302
- */
303
- fetch(url: string | ((val?: T) => string), opts?: object | RequestInit | ((val?: T) => RequestInit)): Futurable<Response> {
304
- let resolve: FuturableResolve<Response>, reject: FuturableReject;
305
- const p = new Futurable<Response>((res, rej) => {
306
- resolve = res;
307
- reject = rej;
308
- }, this.internalSignal);
309
- p.controller = this.controller;
310
- this.then(val => {
311
- const urlFetch = typeof url === "function" ? url(val) : url,
312
- optsFetch = { ...(typeof opts === "function" ? opts(val) : opts), signal: this.internalSignal };
313
-
314
- fetch(urlFetch, optsFetch).then(val => resolve(val)).catch(err => {
315
- if (err.name === "AbortError") {
316
- return;
317
- } else {
318
- reject(err);
319
- }
320
- });
321
- });
322
- return p;
323
- }
324
-
325
- /**
326
- * Executes the callback passed as a parameter when the futurable is cancelled.
327
- * @param cb: callback
328
- */
329
- onCancel<TResult1 = void, TResult2 = never>(cb: () => void): Futurable<TResult1 | TResult2> {
330
- let resolve: FuturableResolve<TResult1 | TResult2>, reject: FuturableReject;
331
- const f = new Futurable<TResult1 | TResult2>((res, rej, utils) => {
332
- utils.onCancel(cb);
333
- resolve = res;
334
- reject = rej;
335
- }, this.internalSignal);
336
- f.controller = this.controller;
337
-
338
- this.then(
339
- val => resolve(val as unknown as TResult1),
340
- reason => reject(reason)
341
- );
342
- return f;
343
- }
344
-
345
- // promisify<TResult1 = T, TResult2 = never>(): Promise<TResult1 | TResult2> {
346
- // return new Promise((res, rej) => {
347
- // if (this.#signal.aborted) {
348
- // this.#clearTimeout();
349
- // return;
350
- // } else {
351
- // this.then(
352
- // val => res(val),
353
- // reason => rej(reason)
354
- // );
355
- // }
356
- // });
357
- // }
358
-
359
- /**
360
- * Takes a promise and transforms it into a futurizable. Promise can be also a function that receives value from futurable chaining as parameter.
361
- * @param promise: Promise to futurize or function that return promise with futurable chaining value as parameter
362
- */
363
- futurizable<TResult1 = T, TResult2 = never>(promise: Promise<TResult1> | ((val?: T) => Promise<TResult1>)): Futurable<TResult1 | TResult2> {
364
- let resolve: FuturableResolve<TResult1 | TResult2>, reject: FuturableReject;
365
- const f = new Futurable<TResult1 | TResult2>((res, rej) => {
366
- resolve = res;
367
- reject = rej;
368
- }, this.internalSignal);
369
- f.controller = this.controller;
370
- this.then(val => {
371
- const p = typeof promise === "function" ? promise(val) : promise;
372
- p
373
- .then(resolve)
374
- .catch(reject);
375
- });
376
- return f;
377
- }
378
-
379
- static resolve(): Futurable<void>;
380
- static resolve<T=any>(value: T | PromiseLike<T> | FuturableLike<T>, signal?: AbortSignal): Futurable<T>;
381
- static resolve<T=any>(value?: T | PromiseLike<T> | FuturableLike<T>, signal?: AbortSignal): Futurable<T|void> {
382
- return value
383
- ? new Futurable(res => res(value), signal)
384
-
385
- : new Futurable<void>(res=> res(), signal);
386
- }
387
-
388
- static reject<T = never>(reason?: any, signal?: AbortSignal): Futurable<T> {
389
- return new Futurable((res, rej) => rej(reason), signal);
390
- }
391
-
392
- /**
393
- * OnCancel static method. It accepts a callback or a object with cb property and an optional signal.
394
- */
395
- static onCancel<T=void>({ cb, signal }: {cb: () => T, signal?: AbortSignal}): Futurable<T> {
396
- return new Futurable((res, rej, utils) => {
397
- utils.onCancel(() => res(cb()));
398
- }, signal);
399
- }
400
-
401
- /**
402
- * Delay static method. It accepts a object with timer and cb properties and an optional signal property.
403
- */
404
- static delay<T = any, TResult2 = never>({ cb, timer, signal }: { cb: () => any, timer: number, signal?: AbortSignal }): Futurable<T | TResult2> {
405
- return new Futurable((res, rej, utils) => {
406
- utils.delay(cb, timer).then(res, rej);
407
- }, signal)
408
- }
409
-
410
- /**
411
- * Sleep static method. It accepts a timer or a object with timer property and an optional signal.
412
- */
413
- static sleep({ timer, signal }: { timer: number, signal?: AbortSignal }): Futurable<void> {
414
- return Futurable.delay<void>({
415
- cb: () => { },
416
- timer,
417
- signal
418
- });
419
- }
420
-
421
- /**
422
- * Fetch static method.
423
- */
424
- static fetch(url: string, opts?: RequestInit): Futurable<Response> {
425
- const signal = opts?.signal || undefined;
426
- opts?.signal && delete opts.signal;
427
- return new Futurable((res, rej, utils) => {
428
- utils.fetch(url, opts).then(res);
429
- }, signal)
430
- }
431
-
432
- /**
433
- * Futurizable static method.
434
- */
435
- static futurizable<TResult1=any, TResult2=never>({ promise, signal }: { promise: Promise<TResult1>, signal?: AbortSignal }): Futurable<TResult1 | TResult2> {
436
- return new Futurable((res, rej) => {
437
- promise
438
- .then(res)
439
- .catch(rej);
440
- }, signal);
441
- }
442
-
443
- private static handleValues<T extends readonly unknown[] | []>(values: T, signal?: AbortSignal): Futurable<T>[] {
444
- const array: Futurable<T>[] = [];
445
-
446
- for (const i in values) {
447
- if ((values[i] instanceof Futurable)) {
448
- array.push(values[i] as Futurable<{ -readonly [P in keyof T]: T[P] }>);
449
- }
450
- else if ((values[i] instanceof Promise)) {
451
- array.push(
452
- new Futurable<{ - readonly [P in keyof T]: T[P] }>(
453
- (res, rej) => {
454
- (values[i] as Promise<{ -readonly [P in keyof T]: T[P] }>)
455
- .then((val) => res(val))
456
- .catch(rej);
457
- },
458
- signal
459
- )
460
- );
461
- } else {
462
- array.push(
463
- new Futurable<{ - readonly [P in keyof T]: T[P] }>(
464
- res => res(values[i] as { -readonly [P in keyof T]: T[P] | FuturableLike<T[P]> | PromiseLike<T[P]> }),
465
- signal
466
- )
467
- );
468
- }
469
- }
470
-
471
- return array;
472
- }
473
-
474
- /**
475
- * Creates a Futurable with cancellation support that is resolved with an array of results when all of the provided Futurables resolve, or rejected when any Futurable is rejected.
476
- */
477
- static all<T extends readonly unknown[] | []>(values: T, signal?: AbortSignal): Futurable<{ -readonly [P in keyof T]: Awaited<T[P]>; }> {
478
- let resolve: FuturableResolve<{ -readonly [P in keyof T]: Awaited<T[P]> }>, reject: FuturableReject;
479
- const f = new Futurable<{ -readonly [P in keyof T]: Awaited<T[P]> }>((res, rej, utils) => {
480
- resolve = res;
481
- reject = rej;
482
- utils.onCancel(() => {
483
- for (const futurable of array) {
484
- futurable.cancel();
485
- }
486
- })
487
- }, signal);
488
- signal ||= f.internalSignal;
489
- const array = Futurable.handleValues(values, signal);
490
-
491
- super.all(array).then(val => resolve(val as { -readonly [P in keyof T]: Awaited<T[P]>; })).catch(reason => reject(reason));
492
-
493
- return f;
494
- }
495
-
496
- /**
497
- * Creates a Futurable with cancellation support that is resolved with an array of results when all of the provided Futurables resolve or reject.
498
- */
499
- static allSettled<T extends readonly unknown[] | []>(values: T, signal?: AbortSignal): Futurable<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }> {
500
- let resolve: FuturableResolve<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>; }>;
501
- const f = new Futurable<{ - readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }>((res, rej, utils) => {
502
- resolve = res;
503
- utils.onCancel(() => {
504
- for (const futurable of array) {
505
- futurable.cancel();
506
- }
507
- })
508
- }, signal);
509
- signal ||= f.internalSignal;
510
- const array = Futurable.handleValues(values, signal);
511
-
512
- super.allSettled(array).then(val => resolve(val as { -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>; }));
513
-
514
- return f;
515
- }
516
-
517
- /**
518
- * Creates a Futurable with cancellation support that is resolved or rejected when any of the provided Futurables are resolved or rejected.
519
- */
520
- static race<T extends readonly unknown[] | []>(values: T, signal?: AbortSignal): Futurable<Awaited<T[number]>> {
521
- let resolve: FuturableResolve<Awaited<T[number]>>, reject: FuturableReject;
522
- const f = new Futurable<Awaited<T[number]>>((res, rej, utils) => {
523
- resolve = res;
524
- reject = rej;
525
- utils.onCancel(() => {
526
- for (const futurable of array) {
527
- futurable.cancel();
528
- }
529
- })
530
- }, signal);
531
- signal ||= f.internalSignal;
532
- const array = Futurable.handleValues(values, signal);
533
-
534
- super.race(array).then(val => resolve(val)).catch(reason => reject(reason));
535
-
536
- return f;
537
- }
538
-
539
- /**
540
- * The any function returns a futurable with cancellation support that is fulfilled by the first given futurable to be fulfilled,
541
- * or rejected with an AggregateError containing an array of rejection reasons if all of the
542
- * given futurables are rejected. It resolves all elements of the passed iterable to futurables as
543
- * it runs this algorithm.
544
- */
545
- static any<T extends readonly unknown[] | []>(value: T, signal?: AbortSignal): Futurable<Awaited<T[number]>> {
546
- let resolve: FuturableResolve<Awaited<T[number]>>, reject: FuturableReject;
547
- const f = new Futurable<Awaited<T[number]>>((res, rej, utils) => {
548
- resolve = res;
549
- reject = rej;
550
- utils.onCancel(() => {
551
- for (const futurable of array) {
552
- futurable.cancel();
553
- }
554
- })
555
- }, signal);
556
- signal ||= f.internalSignal;
557
- const array = Futurable.handleValues(value, signal);
558
-
559
- super.any(array).then(val => resolve(val)).catch(reason => reject(reason));
560
-
561
- return f;
562
- }
563
- }