@adviser/cement 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/cjs/option.cjs +12 -4
  2. package/cjs/option.cjs.map +1 -1
  3. package/cjs/option.d.ts +1 -1
  4. package/cjs/option.d.ts.map +1 -1
  5. package/cjs/version.cjs +1 -1
  6. package/cjs/wait-for-value.cjs +20 -11
  7. package/cjs/wait-for-value.cjs.map +1 -1
  8. package/cjs/wait-for-value.d.ts +1 -0
  9. package/cjs/wait-for-value.d.ts.map +1 -1
  10. package/cjs/wait-for-value.test.cjs +49 -0
  11. package/cjs/wait-for-value.test.cjs.map +1 -1
  12. package/deno.json +1 -1
  13. package/esm/option.d.ts +1 -1
  14. package/esm/option.d.ts.map +1 -1
  15. package/esm/option.js +12 -4
  16. package/esm/option.js.map +1 -1
  17. package/esm/version.js +1 -1
  18. package/esm/wait-for-value.d.ts +1 -0
  19. package/esm/wait-for-value.d.ts.map +1 -1
  20. package/esm/wait-for-value.js +20 -11
  21. package/esm/wait-for-value.js.map +1 -1
  22. package/esm/wait-for-value.test.js +50 -1
  23. package/esm/wait-for-value.test.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/option.ts +19 -4
  26. package/src/wait-for-value.ts +26 -12
  27. package/ts/cjs/option.d.ts +1 -1
  28. package/ts/cjs/option.d.ts.map +1 -1
  29. package/ts/cjs/option.js +12 -4
  30. package/ts/cjs/option.js.map +1 -1
  31. package/ts/cjs/version.js +1 -1
  32. package/ts/cjs/wait-for-value.d.ts +1 -0
  33. package/ts/cjs/wait-for-value.d.ts.map +1 -1
  34. package/ts/cjs/wait-for-value.js +20 -11
  35. package/ts/cjs/wait-for-value.js.map +1 -1
  36. package/ts/cjs/wait-for-value.test.js +49 -0
  37. package/ts/cjs/wait-for-value.test.js.map +1 -1
  38. package/ts/esm/option.d.ts +1 -1
  39. package/ts/esm/option.d.ts.map +1 -1
  40. package/ts/esm/option.js +12 -4
  41. package/ts/esm/option.js.map +1 -1
  42. package/ts/esm/version.js +1 -1
  43. package/ts/esm/wait-for-value.d.ts +1 -0
  44. package/ts/esm/wait-for-value.d.ts.map +1 -1
  45. package/ts/esm/wait-for-value.js +20 -11
  46. package/ts/esm/wait-for-value.js.map +1 -1
  47. package/ts/esm/wait-for-value.test.js +50 -1
  48. package/ts/esm/wait-for-value.test.js.map +1 -1
package/cjs/option.cjs CHANGED
@@ -11,11 +11,19 @@ class Option {
11
11
  static Is(t) {
12
12
  return t instanceof Option;
13
13
  }
14
- static From(t) {
15
- if (!t) {
16
- return new None();
14
+ static From(...args) {
15
+ const t = args.length >= 1 ? args[0] : undefined;
16
+ switch (typeof t) {
17
+ case "undefined":
18
+ return new None();
19
+ case "object":
20
+ if (t === null) {
21
+ return new None();
22
+ }
23
+ return new Some(t);
24
+ default:
25
+ return new Some(t);
17
26
  }
18
- return new Some(t);
19
27
  }
20
28
  toValue() {
21
29
  return this.is_some() ? this.unwrap() : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":";;;AA2BA;IACE,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAI,CAAK,EAAa;QAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CACpB;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;;AAED,UAAqB,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;;AAED,UAAqB,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":";;;AA2BA;IACE,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAW,GAAG,IAA8B,EAAa;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,QAAQ,OAAO,CAAC,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,IAAI,IAAI,EAAE,CAAC;YAQpB,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB;gBACE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;;AAED,UAAqB,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;;AAED,UAAqB,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
package/cjs/option.d.ts CHANGED
@@ -2,7 +2,7 @@ export declare abstract class Option<T> {
2
2
  static Some<T = void>(...args: T[]): Option<T>;
3
3
  static None<T>(): Option<T>;
4
4
  static Is<T>(t: unknown): t is Option<T>;
5
- static From<T>(t?: T): Option<T>;
5
+ static From<T = void>(...args: (T | undefined | null)[]): Option<T>;
6
6
  toValue(): T | undefined;
7
7
  IsNone(): boolean;
8
8
  IsSome(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/B;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoBlE;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/cjs/version.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.5.4";
4
+ exports.VERSION = "0.5.5";
5
5
  //# sourceMappingURL=version.js.map
@@ -13,31 +13,40 @@ class WaitingForValue {
13
13
  }
14
14
  init(presetValue = option_js_1.Option.None()) {
15
15
  this.#value = presetValue;
16
+ if (presetValue.IsSome() && this.#waitFuture) {
17
+ this.#waitFuture.resolve(presetValue.unwrap());
18
+ }
16
19
  if (this.#value.IsSome()) {
17
- return this.setValue(this.#value);
20
+ this.#waitFuture = undefined;
21
+ const resolveOnce = new resolve_once_js_1.ResolveOnce();
22
+ this.#waitValue = () => resolveOnce.once(() => Promise.resolve(presetValue.unwrap()));
23
+ return;
18
24
  }
19
25
  const myFuture = (this.#waitFuture = new future_js_1.Future());
20
26
  const resolveOnce = new resolve_once_js_1.ResolveOnce();
21
27
  this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
22
28
  }
23
29
  setValue(value) {
24
- if (value.IsNone()) {
25
- return;
26
- }
27
30
  switch (true) {
28
31
  case this.#value.IsNone():
29
32
  this.#value = value;
30
- this.#waitFuture?.resolve(value.unwrap());
33
+ if (value.IsSome()) {
34
+ this.#waitFuture?.resolve(value.unwrap());
35
+ }
31
36
  break;
32
- case this.#value.IsSome(): {
33
- this.#value = value;
34
- this.#waitFuture = undefined;
35
- const resolveOnce = new resolve_once_js_1.ResolveOnce();
36
- this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
37
+ case this.#value.IsSome():
38
+ this.init(value);
37
39
  break;
38
- }
39
40
  }
40
41
  }
42
+ setError(err) {
43
+ if (this.#value.IsSome()) {
44
+ console.warn("WaitingForValue.setError called but value is already set, ignoring error", err);
45
+ return;
46
+ }
47
+ this.#waitFuture?.reject(err);
48
+ this.init();
49
+ }
41
50
  waitValue() {
42
51
  return this.#waitValue();
43
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,2CAAqC;AACrC,uDAAgD;AAkChD;IACE,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,kBAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
1
+ {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,2CAAqC;AACrC,uDAAgD;AAkChD;IACE,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,kBAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;QACV,CAAC;IAAA,CACF;IAED,QAAQ,CAAC,GAAU,EAAQ;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAGzB,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;IAAA,CACb;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
@@ -7,6 +7,7 @@ export declare class WaitingForValue<T = void> {
7
7
  constructor(opts?: WaitingForValueProps<T>);
8
8
  init(presetValue?: Option<T>): void;
9
9
  setValue(value: Option<T>): void;
10
+ setError(err: Error): void;
10
11
  waitValue(): Promise<T>;
11
12
  value(): Option<T>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAQjD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAkB/B;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
1
+ {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAejD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAc/B;IAED,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CASzB;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
@@ -83,4 +83,53 @@ const vitest_1 = require("vitest");
83
83
  (0, vitest_1.expect)(results).toHaveBeenCalledTimes(2);
84
84
  (0, vitest_1.expect)(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
85
85
  });
86
+ (0, vitest_1.it)("waitfor setError", async () => {
87
+ const wfv = new cement_1.WaitingForValue();
88
+ const size = 10;
89
+ const promiseWaits = Promise.allSettled(Array(size)
90
+ .fill(0)
91
+ .map(() => wfv.waitValue()));
92
+ const results = vitest_1.vi.fn();
93
+ const errors = vitest_1.vi.fn();
94
+ void promiseWaits.then(results);
95
+ await (0, cement_1.sleep)(10);
96
+ (0, vitest_1.expect)(results).not.toHaveBeenCalled();
97
+ (0, vitest_1.expect)(errors).not.toHaveBeenCalled();
98
+ wfv.setError(new Error("Test Error"));
99
+ await (0, cement_1.sleep)(10);
100
+ await promiseWaits;
101
+ (0, vitest_1.expect)(results).toHaveBeenCalledTimes(1);
102
+ (0, vitest_1.expect)(results.mock.calls).toEqual([
103
+ [
104
+ Array(size).fill(vitest_1.expect.objectContaining({
105
+ status: "rejected",
106
+ reason: vitest_1.expect.objectContaining({ message: "Test Error" }),
107
+ })),
108
+ ],
109
+ ]);
110
+ });
111
+ (0, vitest_1.it)("waitfor reset to longer wait", async () => {
112
+ const tokenFN = vitest_1.vi.fn(() => {
113
+ return futureToken.asPromise();
114
+ });
115
+ const wfv = new cement_1.WaitingForValue();
116
+ wfv.setValue(cement_1.Option.Some("initial-token"));
117
+ const you = await wfv.waitValue();
118
+ (0, vitest_1.expect)(you).toBe("initial-token");
119
+ wfv.setValue(cement_1.Option.None());
120
+ const futureToken = new cement_1.Future();
121
+ const result = vitest_1.vi.fn();
122
+ const secondResult = wfv.waitValue().then(result);
123
+ const started = performance.now();
124
+ void (0, cement_1.sleep)(20).then(() => {
125
+ void tokenFN().then((token) => {
126
+ wfv.setValue(cement_1.Option.Some(token));
127
+ });
128
+ });
129
+ futureToken.resolve("valid-token-second");
130
+ await secondResult;
131
+ const duration = performance.now() - started;
132
+ (0, vitest_1.expect)(duration).toBeGreaterThanOrEqual(8);
133
+ (0, vitest_1.expect)(result).toHaveBeenCalledWith("valid-token-second");
134
+ });
86
135
  //# sourceMappingURL=wait-for-value.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
package/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "license": "AFL-2.0",
5
5
  "exports": {
6
6
  ".": "./src/index.ts",
package/esm/option.d.ts CHANGED
@@ -2,7 +2,7 @@ export declare abstract class Option<T> {
2
2
  static Some<T = void>(...args: T[]): Option<T>;
3
3
  static None<T>(): Option<T>;
4
4
  static Is<T>(t: unknown): t is Option<T>;
5
- static From<T>(t?: T): Option<T>;
5
+ static From<T = void>(...args: (T | undefined | null)[]): Option<T>;
6
6
  toValue(): T | undefined;
7
7
  IsNone(): boolean;
8
8
  IsSome(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/B;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoBlE;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/esm/option.js CHANGED
@@ -8,11 +8,19 @@ export class Option {
8
8
  static Is(t) {
9
9
  return t instanceof Option;
10
10
  }
11
- static From(t) {
12
- if (!t) {
13
- return new None();
11
+ static From(...args) {
12
+ const t = args.length >= 1 ? args[0] : undefined;
13
+ switch (typeof t) {
14
+ case "undefined":
15
+ return new None();
16
+ case "object":
17
+ if (t === null) {
18
+ return new None();
19
+ }
20
+ return new Some(t);
21
+ default:
22
+ return new Some(t);
14
23
  }
15
- return new Some(t);
16
24
  }
17
25
  toValue() {
18
26
  return this.is_some() ? this.unwrap() : undefined;
package/esm/option.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAgB,MAAM;IAC1B,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAI,CAAK,EAAa;QAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CACpB;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAgB,MAAM;IAC1B,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAW,GAAG,IAA8B,EAAa;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,QAAQ,OAAO,CAAC,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,IAAI,IAAI,EAAE,CAAC;YAQpB,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB;gBACE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
package/esm/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.5.4";
1
+ export const VERSION = "0.5.5";
2
2
  //# sourceMappingURL=version.js.map
@@ -7,6 +7,7 @@ export declare class WaitingForValue<T = void> {
7
7
  constructor(opts?: WaitingForValueProps<T>);
8
8
  init(presetValue?: Option<T>): void;
9
9
  setValue(value: Option<T>): void;
10
+ setError(err: Error): void;
10
11
  waitValue(): Promise<T>;
11
12
  value(): Option<T>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAQjD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAkB/B;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
1
+ {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAejD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAc/B;IAED,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CASzB;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
@@ -10,31 +10,40 @@ export class WaitingForValue {
10
10
  }
11
11
  init(presetValue = Option.None()) {
12
12
  this.#value = presetValue;
13
+ if (presetValue.IsSome() && this.#waitFuture) {
14
+ this.#waitFuture.resolve(presetValue.unwrap());
15
+ }
13
16
  if (this.#value.IsSome()) {
14
- return this.setValue(this.#value);
17
+ this.#waitFuture = undefined;
18
+ const resolveOnce = new ResolveOnce();
19
+ this.#waitValue = () => resolveOnce.once(() => Promise.resolve(presetValue.unwrap()));
20
+ return;
15
21
  }
16
22
  const myFuture = (this.#waitFuture = new Future());
17
23
  const resolveOnce = new ResolveOnce();
18
24
  this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
19
25
  }
20
26
  setValue(value) {
21
- if (value.IsNone()) {
22
- return;
23
- }
24
27
  switch (true) {
25
28
  case this.#value.IsNone():
26
29
  this.#value = value;
27
- this.#waitFuture?.resolve(value.unwrap());
30
+ if (value.IsSome()) {
31
+ this.#waitFuture?.resolve(value.unwrap());
32
+ }
28
33
  break;
29
- case this.#value.IsSome(): {
30
- this.#value = value;
31
- this.#waitFuture = undefined;
32
- const resolveOnce = new ResolveOnce();
33
- this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
34
+ case this.#value.IsSome():
35
+ this.init(value);
34
36
  break;
35
- }
36
37
  }
37
38
  }
39
+ setError(err) {
40
+ if (this.#value.IsSome()) {
41
+ console.warn("WaitingForValue.setError called but value is already set, ignoring error", err);
42
+ return;
43
+ }
44
+ this.#waitFuture?.reject(err);
45
+ this.init();
46
+ }
38
47
  waitValue() {
39
48
  return this.#waitValue();
40
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
1
+ {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;QACV,CAAC;IAAA,CACF;IAED,QAAQ,CAAC,GAAU,EAAQ;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAGzB,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;IAAA,CACb;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
@@ -1,4 +1,4 @@
1
- import { WaitingForValue, sleep, Option } from "@adviser/cement";
1
+ import { WaitingForValue, sleep, Option, Future } from "@adviser/cement";
2
2
  import { it, vi, expect } from "vitest";
3
3
  it("waitFor void", async () => {
4
4
  const wfv = new WaitingForValue();
@@ -81,4 +81,53 @@ it("waitFor preset value", async () => {
81
81
  expect(results).toHaveBeenCalledTimes(2);
82
82
  expect(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
83
83
  });
84
+ it("waitfor setError", async () => {
85
+ const wfv = new WaitingForValue();
86
+ const size = 10;
87
+ const promiseWaits = Promise.allSettled(Array(size)
88
+ .fill(0)
89
+ .map(() => wfv.waitValue()));
90
+ const results = vi.fn();
91
+ const errors = vi.fn();
92
+ void promiseWaits.then(results);
93
+ await sleep(10);
94
+ expect(results).not.toHaveBeenCalled();
95
+ expect(errors).not.toHaveBeenCalled();
96
+ wfv.setError(new Error("Test Error"));
97
+ await sleep(10);
98
+ await promiseWaits;
99
+ expect(results).toHaveBeenCalledTimes(1);
100
+ expect(results.mock.calls).toEqual([
101
+ [
102
+ Array(size).fill(expect.objectContaining({
103
+ status: "rejected",
104
+ reason: expect.objectContaining({ message: "Test Error" }),
105
+ })),
106
+ ],
107
+ ]);
108
+ });
109
+ it("waitfor reset to longer wait", async () => {
110
+ const tokenFN = vi.fn(() => {
111
+ return futureToken.asPromise();
112
+ });
113
+ const wfv = new WaitingForValue();
114
+ wfv.setValue(Option.Some("initial-token"));
115
+ const you = await wfv.waitValue();
116
+ expect(you).toBe("initial-token");
117
+ wfv.setValue(Option.None());
118
+ const futureToken = new Future();
119
+ const result = vi.fn();
120
+ const secondResult = wfv.waitValue().then(result);
121
+ const started = performance.now();
122
+ void sleep(20).then(() => {
123
+ void tokenFN().then((token) => {
124
+ wfv.setValue(Option.Some(token));
125
+ });
126
+ });
127
+ futureToken.resolve("valid-token-second");
128
+ await secondResult;
129
+ const duration = performance.now() - started;
130
+ expect(duration).toBeGreaterThanOrEqual(8);
131
+ expect(result).toHaveBeenCalledWith("valid-token-second");
132
+ });
84
133
  //# sourceMappingURL=wait-for-value.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "better try/catch/finally handling",
5
5
  "main": "./cjs/index.js",
6
6
  "type": "module",
package/src/option.ts CHANGED
@@ -38,11 +38,26 @@ export abstract class Option<T> {
38
38
  return t instanceof Option;
39
39
  }
40
40
 
41
- static From<T>(t?: T): Option<T> {
42
- if (!t) {
43
- return new None();
41
+ static From<T = void>(...args: (T | undefined | null)[]): Option<T> {
42
+ const t = args.length >= 1 ? args[0] : undefined;
43
+ switch (typeof t) {
44
+ case "undefined":
45
+ return new None();
46
+ // case "boolean":
47
+ // case "number":
48
+ // case "bigint":
49
+ // case "string":
50
+ // case "symbol":
51
+ // case "function":
52
+ // return new Some(t);
53
+ case "object":
54
+ if (t === null) {
55
+ return new None();
56
+ }
57
+ return new Some(t);
58
+ default:
59
+ return new Some(t);
44
60
  }
45
- return new Some(t);
46
61
  }
47
62
 
48
63
  toValue(): T | undefined {
@@ -57,8 +57,15 @@ export class WaitingForValue<T = void> {
57
57
  */
58
58
  init(presetValue: Option<T> = Option.None()): void {
59
59
  this.#value = presetValue;
60
+ if (presetValue.IsSome() && this.#waitFuture) {
61
+ this.#waitFuture.resolve(presetValue.unwrap());
62
+ }
60
63
  if (this.#value.IsSome()) {
61
- return this.setValue(this.#value);
64
+ // console.log("setValue: 3-Some:", this.#value, value)
65
+ this.#waitFuture = undefined;
66
+ const resolveOnce = new ResolveOnce();
67
+ this.#waitValue = (): Promise<T> => resolveOnce.once(() => Promise.resolve(presetValue.unwrap()));
68
+ return;
62
69
  }
63
70
  const myFuture = (this.#waitFuture = new Future<T>());
64
71
  const resolveOnce = new ResolveOnce<T>();
@@ -74,25 +81,32 @@ export class WaitingForValue<T = void> {
74
81
  * @param value - The value to set (wrapped in Option)
75
82
  */
76
83
  setValue(value: Option<T>): void {
77
- if (value.IsNone()) {
78
- return;
79
- }
84
+ // console.log("setValue", value, this.#value)
80
85
  switch (true) {
81
86
  case this.#value.IsNone():
82
- // need to resolve waiters
87
+ // console.log("setValue: 2")
83
88
  this.#value = value;
84
- this.#waitFuture?.resolve(value.unwrap());
89
+ if (value.IsSome()) {
90
+ this.#waitFuture?.resolve(value.unwrap());
91
+ }
85
92
  break;
86
- case this.#value.IsSome(): {
87
- this.#value = value;
88
- this.#waitFuture = undefined;
89
- const resolveOnce = new ResolveOnce<T>();
90
- this.#waitValue = (): Promise<T> => resolveOnce.once(() => Promise.resolve(value.unwrap()));
93
+ case this.#value.IsSome():
94
+ this.init(value);
91
95
  break;
92
- }
93
96
  }
94
97
  }
95
98
 
99
+ setError(err: Error): void {
100
+ if (this.#value.IsSome()) {
101
+ // ignore error if value is already set
102
+ // eslint-disable-next-line no-console
103
+ console.warn("WaitingForValue.setError called but value is already set, ignoring error", err);
104
+ return;
105
+ }
106
+ this.#waitFuture?.reject(err);
107
+ this.init();
108
+ }
109
+
96
110
  /**
97
111
  * Returns a promise that resolves when the value becomes available.
98
112
  * If the value is already set, returns a promise that resolves immediately.
@@ -2,7 +2,7 @@ export declare abstract class Option<T> {
2
2
  static Some<T = void>(...args: T[]): Option<T>;
3
3
  static None<T>(): Option<T>;
4
4
  static Is<T>(t: unknown): t is Option<T>;
5
- static From<T>(t?: T): Option<T>;
5
+ static From<T = void>(...args: (T | undefined | null)[]): Option<T>;
6
6
  toValue(): T | undefined;
7
7
  IsNone(): boolean;
8
8
  IsSome(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/B;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoBlE;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/ts/cjs/option.js CHANGED
@@ -11,11 +11,19 @@ class Option {
11
11
  static Is(t) {
12
12
  return t instanceof Option;
13
13
  }
14
- static From(t) {
15
- if (!t) {
16
- return new None();
14
+ static From(...args) {
15
+ const t = args.length >= 1 ? args[0] : undefined;
16
+ switch (typeof t) {
17
+ case "undefined":
18
+ return new None();
19
+ case "object":
20
+ if (t === null) {
21
+ return new None();
22
+ }
23
+ return new Some(t);
24
+ default:
25
+ return new Some(t);
17
26
  }
18
- return new Some(t);
19
27
  }
20
28
  toValue() {
21
29
  return this.is_some() ? this.unwrap() : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":";;;AA2BA;IACE,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAI,CAAK,EAAa;QAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CACpB;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;;AAED,UAAqB,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;;AAED,UAAqB,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":";;;AA2BA;IACE,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAW,GAAG,IAA8B,EAAa;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,QAAQ,OAAO,CAAC,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,IAAI,IAAI,EAAE,CAAC;YAQpB,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB;gBACE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;;AAED,UAAqB,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;;AAED,UAAqB,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
package/ts/cjs/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.5.4";
4
+ exports.VERSION = "0.5.5";
5
5
  //# sourceMappingURL=version.js.map
@@ -7,6 +7,7 @@ export declare class WaitingForValue<T = void> {
7
7
  constructor(opts?: WaitingForValueProps<T>);
8
8
  init(presetValue?: Option<T>): void;
9
9
  setValue(value: Option<T>): void;
10
+ setError(err: Error): void;
10
11
  waitValue(): Promise<T>;
11
12
  value(): Option<T>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAQjD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAkB/B;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
1
+ {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAejD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAc/B;IAED,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CASzB;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
@@ -13,31 +13,40 @@ class WaitingForValue {
13
13
  }
14
14
  init(presetValue = option_js_1.Option.None()) {
15
15
  this.#value = presetValue;
16
+ if (presetValue.IsSome() && this.#waitFuture) {
17
+ this.#waitFuture.resolve(presetValue.unwrap());
18
+ }
16
19
  if (this.#value.IsSome()) {
17
- return this.setValue(this.#value);
20
+ this.#waitFuture = undefined;
21
+ const resolveOnce = new resolve_once_js_1.ResolveOnce();
22
+ this.#waitValue = () => resolveOnce.once(() => Promise.resolve(presetValue.unwrap()));
23
+ return;
18
24
  }
19
25
  const myFuture = (this.#waitFuture = new future_js_1.Future());
20
26
  const resolveOnce = new resolve_once_js_1.ResolveOnce();
21
27
  this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
22
28
  }
23
29
  setValue(value) {
24
- if (value.IsNone()) {
25
- return;
26
- }
27
30
  switch (true) {
28
31
  case this.#value.IsNone():
29
32
  this.#value = value;
30
- this.#waitFuture?.resolve(value.unwrap());
33
+ if (value.IsSome()) {
34
+ this.#waitFuture?.resolve(value.unwrap());
35
+ }
31
36
  break;
32
- case this.#value.IsSome(): {
33
- this.#value = value;
34
- this.#waitFuture = undefined;
35
- const resolveOnce = new resolve_once_js_1.ResolveOnce();
36
- this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
37
+ case this.#value.IsSome():
38
+ this.init(value);
37
39
  break;
38
- }
39
40
  }
40
41
  }
42
+ setError(err) {
43
+ if (this.#value.IsSome()) {
44
+ console.warn("WaitingForValue.setError called but value is already set, ignoring error", err);
45
+ return;
46
+ }
47
+ this.#waitFuture?.reject(err);
48
+ this.init();
49
+ }
41
50
  waitValue() {
42
51
  return this.#waitValue();
43
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,2CAAqC;AACrC,uDAAgD;AAkChD;IACE,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,kBAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
1
+ {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,2CAAqC;AACrC,uDAAgD;AAkChD;IACE,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,kBAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,6BAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;QACV,CAAC;IAAA,CACF;IAED,QAAQ,CAAC,GAAU,EAAQ;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAGzB,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;IAAA,CACb;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
@@ -83,4 +83,53 @@ const vitest_1 = require("vitest");
83
83
  (0, vitest_1.expect)(results).toHaveBeenCalledTimes(2);
84
84
  (0, vitest_1.expect)(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
85
85
  });
86
+ (0, vitest_1.it)("waitfor setError", async () => {
87
+ const wfv = new cement_1.WaitingForValue();
88
+ const size = 10;
89
+ const promiseWaits = Promise.allSettled(Array(size)
90
+ .fill(0)
91
+ .map(() => wfv.waitValue()));
92
+ const results = vitest_1.vi.fn();
93
+ const errors = vitest_1.vi.fn();
94
+ void promiseWaits.then(results);
95
+ await (0, cement_1.sleep)(10);
96
+ (0, vitest_1.expect)(results).not.toHaveBeenCalled();
97
+ (0, vitest_1.expect)(errors).not.toHaveBeenCalled();
98
+ wfv.setError(new Error("Test Error"));
99
+ await (0, cement_1.sleep)(10);
100
+ await promiseWaits;
101
+ (0, vitest_1.expect)(results).toHaveBeenCalledTimes(1);
102
+ (0, vitest_1.expect)(results.mock.calls).toEqual([
103
+ [
104
+ Array(size).fill(vitest_1.expect.objectContaining({
105
+ status: "rejected",
106
+ reason: vitest_1.expect.objectContaining({ message: "Test Error" }),
107
+ })),
108
+ ],
109
+ ]);
110
+ });
111
+ (0, vitest_1.it)("waitfor reset to longer wait", async () => {
112
+ const tokenFN = vitest_1.vi.fn(() => {
113
+ return futureToken.asPromise();
114
+ });
115
+ const wfv = new cement_1.WaitingForValue();
116
+ wfv.setValue(cement_1.Option.Some("initial-token"));
117
+ const you = await wfv.waitValue();
118
+ (0, vitest_1.expect)(you).toBe("initial-token");
119
+ wfv.setValue(cement_1.Option.None());
120
+ const futureToken = new cement_1.Future();
121
+ const result = vitest_1.vi.fn();
122
+ const secondResult = wfv.waitValue().then(result);
123
+ const started = performance.now();
124
+ void (0, cement_1.sleep)(20).then(() => {
125
+ void tokenFN().then((token) => {
126
+ wfv.setValue(cement_1.Option.Some(token));
127
+ });
128
+ });
129
+ futureToken.resolve("valid-token-second");
130
+ await secondResult;
131
+ const duration = performance.now() - started;
132
+ (0, vitest_1.expect)(duration).toBeGreaterThanOrEqual(8);
133
+ (0, vitest_1.expect)(result).toHaveBeenCalledWith("valid-token-second");
134
+ });
86
135
  //# sourceMappingURL=wait-for-value.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export declare abstract class Option<T> {
2
2
  static Some<T = void>(...args: T[]): Option<T>;
3
3
  static None<T>(): Option<T>;
4
4
  static Is<T>(t: unknown): t is Option<T>;
5
- static From<T>(t?: T): Option<T>;
5
+ static From<T = void>(...args: (T | undefined | null)[]): Option<T>;
6
6
  toValue(): T | undefined;
7
7
  IsNone(): boolean;
8
8
  IsSome(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/B;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,8BAAsB,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAE1B;IAED,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAEvC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoBlE;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,OAAO,CAEhB;IACD,MAAM,IAAI,CAAC,CAEV;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACtB;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAI;IACd,YAAY,EAAE,EAAE,CAAC,EAGhB;IAED,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAEjB;IACD,OAAO,IAAI,OAAO,CAEjB;IACD,MAAM,IAAI,CAAC,CAEV;CACF;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/ts/esm/option.js CHANGED
@@ -8,11 +8,19 @@ export class Option {
8
8
  static Is(t) {
9
9
  return t instanceof Option;
10
10
  }
11
- static From(t) {
12
- if (!t) {
13
- return new None();
11
+ static From(...args) {
12
+ const t = args.length >= 1 ? args[0] : undefined;
13
+ switch (typeof t) {
14
+ case "undefined":
15
+ return new None();
16
+ case "object":
17
+ if (t === null) {
18
+ return new None();
19
+ }
20
+ return new Some(t);
21
+ default:
22
+ return new Some(t);
14
23
  }
15
- return new Some(t);
16
24
  }
17
25
  toValue() {
18
26
  return this.is_some() ? this.unwrap() : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAgB,MAAM;IAC1B,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAI,CAAK,EAAa;QAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CACpB;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../src/option.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAgB,MAAM;IAC1B,MAAM,CAAC,IAAI,CAAW,GAAG,IAAS,EAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAI,SAAyB,CAAC,CAAC;IAAA,CACzF;IAED,MAAM,CAAC,IAAI,GAAiB;QAC1B,OAAO,IAAI,IAAI,EAAE,CAAC;IAAA,CACnB;IAED,MAAM,CAAC,EAAE,CAAI,CAAU,EAAkB;QACvC,OAAO,CAAC,YAAY,MAAM,CAAC;IAAA,CAC5B;IAED,MAAM,CAAC,IAAI,CAAW,GAAG,IAA8B,EAAa;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,QAAQ,OAAO,CAAC,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,IAAI,IAAI,EAAE,CAAC;YAQpB,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB;gBACE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;IAED,OAAO,GAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IAED,MAAM,GAAY;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAAA,CACvB;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAAA,CACtB;CAKF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IAC5B,EAAE,CAAI;IACd,YAAY,EAAK,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAAA,CACd;IAED,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,MAAM,GAAM;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IAAA,CAChB;CACF;AAED,MAAM,OAAO,IAAQ,SAAQ,MAAS;IACpC,OAAO,GAAY;QACjB,OAAO,IAAI,CAAC;IAAA,CACb;IACD,OAAO,GAAY;QACjB,OAAO,KAAK,CAAC;IAAA,CACd;IACD,MAAM,GAAM;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAAA,CAChC;CACF"}
package/ts/esm/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.5.4";
1
+ export const VERSION = "0.5.5";
2
2
  //# sourceMappingURL=version.js.map
@@ -7,6 +7,7 @@ export declare class WaitingForValue<T = void> {
7
7
  constructor(opts?: WaitingForValueProps<T>);
8
8
  init(presetValue?: Option<T>): void;
9
9
  setValue(value: Option<T>): void;
10
+ setError(err: Error): void;
10
11
  waitValue(): Promise<T>;
11
12
  value(): Option<T>;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAQjD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAkB/B;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
1
+ {"version":3,"file":"wait-for-value.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IAKrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC;AAuBD,qBAAa,eAAe,CAAC,CAAC,GAAG,IAAI;;IAUnC,YAAY,IAAI,GAAE,oBAAoB,CAAC,CAAC,CAAM,EAE7C;IASD,IAAI,CAAC,WAAW,GAAE,MAAM,CAAC,CAAC,CAAiB,GAAG,IAAI,CAejD;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAc/B;IAED,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CASzB;IAUD,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAEtB;IAED,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAEjB;CACF"}
@@ -10,31 +10,40 @@ export class WaitingForValue {
10
10
  }
11
11
  init(presetValue = Option.None()) {
12
12
  this.#value = presetValue;
13
+ if (presetValue.IsSome() && this.#waitFuture) {
14
+ this.#waitFuture.resolve(presetValue.unwrap());
15
+ }
13
16
  if (this.#value.IsSome()) {
14
- return this.setValue(this.#value);
17
+ this.#waitFuture = undefined;
18
+ const resolveOnce = new ResolveOnce();
19
+ this.#waitValue = () => resolveOnce.once(() => Promise.resolve(presetValue.unwrap()));
20
+ return;
15
21
  }
16
22
  const myFuture = (this.#waitFuture = new Future());
17
23
  const resolveOnce = new ResolveOnce();
18
24
  this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
19
25
  }
20
26
  setValue(value) {
21
- if (value.IsNone()) {
22
- return;
23
- }
24
27
  switch (true) {
25
28
  case this.#value.IsNone():
26
29
  this.#value = value;
27
- this.#waitFuture?.resolve(value.unwrap());
30
+ if (value.IsSome()) {
31
+ this.#waitFuture?.resolve(value.unwrap());
32
+ }
28
33
  break;
29
- case this.#value.IsSome(): {
30
- this.#value = value;
31
- this.#waitFuture = undefined;
32
- const resolveOnce = new ResolveOnce();
33
- this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
34
+ case this.#value.IsSome():
35
+ this.init(value);
34
36
  break;
35
- }
36
37
  }
37
38
  }
39
+ setError(err) {
40
+ if (this.#value.IsSome()) {
41
+ console.warn("WaitingForValue.setError called but value is already set, ignoring error", err);
42
+ return;
43
+ }
44
+ this.#waitFuture?.reject(err);
45
+ this.init();
46
+ }
38
47
  waitValue() {
39
48
  return this.#waitValue();
40
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
1
+ {"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;QACV,CAAC;IAAA,CACF;IAED,QAAQ,CAAC,GAAU,EAAQ;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAGzB,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;IAAA,CACb;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
@@ -1,4 +1,4 @@
1
- import { WaitingForValue, sleep, Option } from "@adviser/cement";
1
+ import { WaitingForValue, sleep, Option, Future } from "@adviser/cement";
2
2
  import { it, vi, expect } from "vitest";
3
3
  it("waitFor void", async () => {
4
4
  const wfv = new WaitingForValue();
@@ -81,4 +81,53 @@ it("waitFor preset value", async () => {
81
81
  expect(results).toHaveBeenCalledTimes(2);
82
82
  expect(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
83
83
  });
84
+ it("waitfor setError", async () => {
85
+ const wfv = new WaitingForValue();
86
+ const size = 10;
87
+ const promiseWaits = Promise.allSettled(Array(size)
88
+ .fill(0)
89
+ .map(() => wfv.waitValue()));
90
+ const results = vi.fn();
91
+ const errors = vi.fn();
92
+ void promiseWaits.then(results);
93
+ await sleep(10);
94
+ expect(results).not.toHaveBeenCalled();
95
+ expect(errors).not.toHaveBeenCalled();
96
+ wfv.setError(new Error("Test Error"));
97
+ await sleep(10);
98
+ await promiseWaits;
99
+ expect(results).toHaveBeenCalledTimes(1);
100
+ expect(results.mock.calls).toEqual([
101
+ [
102
+ Array(size).fill(expect.objectContaining({
103
+ status: "rejected",
104
+ reason: expect.objectContaining({ message: "Test Error" }),
105
+ })),
106
+ ],
107
+ ]);
108
+ });
109
+ it("waitfor reset to longer wait", async () => {
110
+ const tokenFN = vi.fn(() => {
111
+ return futureToken.asPromise();
112
+ });
113
+ const wfv = new WaitingForValue();
114
+ wfv.setValue(Option.Some("initial-token"));
115
+ const you = await wfv.waitValue();
116
+ expect(you).toBe("initial-token");
117
+ wfv.setValue(Option.None());
118
+ const futureToken = new Future();
119
+ const result = vi.fn();
120
+ const secondResult = wfv.waitValue().then(result);
121
+ const started = performance.now();
122
+ void sleep(20).then(() => {
123
+ void tokenFN().then((token) => {
124
+ wfv.setValue(Option.Some(token));
125
+ });
126
+ });
127
+ futureToken.resolve("valid-token-second");
128
+ await secondResult;
129
+ const duration = performance.now() - started;
130
+ expect(duration).toBeGreaterThanOrEqual(8);
131
+ expect(result).toHaveBeenCalledWith("valid-token-second");
132
+ });
84
133
  //# sourceMappingURL=wait-for-value.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,IAAI,CAAC;aACR,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,KAAK,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,YAAY,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAElE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAW,CAAC,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,CAAC;aACR,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,aAAa,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AAAA,CACF,CAAC,CAAC;AAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,eAAe,EAE3B,CAAC;IACL,MAAM,IAAI,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,IAAI,CAAC;aACR,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,KAAK,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,YAAY,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,CAAC;aACR,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,aAAa,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AAAA,CACF,CAAC,CAAC;AAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,eAAe,CAAS,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,EAAE,CAAC;IAEhB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,IAAI,CAAC;SACR,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACxB,KAAK,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,YAAY,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,CAAC;SACR,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,aAAa,CAAC;IACpB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CACrF,CAAC,CAAC"}
1
+ {"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}