@adviser/cement 0.4.59 → 0.4.60

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 (114) hide show
  1. package/cjs/future.cjs +2 -0
  2. package/cjs/future.cjs.map +1 -1
  3. package/cjs/future.d.ts +1 -0
  4. package/cjs/future.d.ts.map +1 -1
  5. package/cjs/future.test.cjs +5 -0
  6. package/cjs/future.test.cjs.map +1 -1
  7. package/cjs/poller.cjs +87 -16
  8. package/cjs/poller.cjs.map +1 -1
  9. package/cjs/poller.d.ts +20 -10
  10. package/cjs/poller.d.ts.map +1 -1
  11. package/cjs/poller.test.cjs +2 -2
  12. package/cjs/poller.test.cjs.map +1 -1
  13. package/cjs/timeouted.cjs +119 -0
  14. package/cjs/timeouted.cjs.map +1 -0
  15. package/cjs/timeouted.d.ts +45 -0
  16. package/cjs/timeouted.d.ts.map +1 -0
  17. package/cjs/timeouted.test.cjs +581 -0
  18. package/cjs/timeouted.test.cjs.map +1 -0
  19. package/cjs/timeouted.test.d.ts +2 -0
  20. package/cjs/timeouted.test.d.ts.map +1 -0
  21. package/cjs/utils/promise-sleep.cjs +27 -26
  22. package/cjs/utils/promise-sleep.cjs.map +1 -1
  23. package/cjs/utils/promise-sleep.d.ts +28 -2
  24. package/cjs/utils/promise-sleep.d.ts.map +1 -1
  25. package/cjs/utils/promise-sleep.test.cjs +13 -13
  26. package/cjs/utils/promise-sleep.test.cjs.map +1 -1
  27. package/cjs/version.cjs +1 -1
  28. package/deno.json +1 -1
  29. package/esm/future.d.ts +1 -0
  30. package/esm/future.d.ts.map +1 -1
  31. package/esm/future.js +2 -0
  32. package/esm/future.js.map +1 -1
  33. package/esm/future.test.js +5 -0
  34. package/esm/future.test.js.map +1 -1
  35. package/esm/poller.d.ts +20 -10
  36. package/esm/poller.d.ts.map +1 -1
  37. package/esm/poller.js +87 -16
  38. package/esm/poller.js.map +1 -1
  39. package/esm/poller.test.js +2 -2
  40. package/esm/poller.test.js.map +1 -1
  41. package/esm/timeouted.d.ts +45 -0
  42. package/esm/timeouted.d.ts.map +1 -0
  43. package/esm/timeouted.js +110 -0
  44. package/esm/timeouted.js.map +1 -0
  45. package/esm/timeouted.test.d.ts +2 -0
  46. package/esm/timeouted.test.d.ts.map +1 -0
  47. package/esm/timeouted.test.js +579 -0
  48. package/esm/timeouted.test.js.map +1 -0
  49. package/esm/utils/promise-sleep.d.ts +28 -2
  50. package/esm/utils/promise-sleep.d.ts.map +1 -1
  51. package/esm/utils/promise-sleep.js +27 -26
  52. package/esm/utils/promise-sleep.js.map +1 -1
  53. package/esm/utils/promise-sleep.test.js +13 -13
  54. package/esm/utils/promise-sleep.test.js.map +1 -1
  55. package/esm/version.js +1 -1
  56. package/package.json +1 -1
  57. package/src/future.ts +5 -0
  58. package/src/poller.ts +128 -29
  59. package/src/timeouted.ts +186 -0
  60. package/src/utils/promise-sleep.ts +61 -31
  61. package/ts/cjs/future.d.ts +1 -0
  62. package/ts/cjs/future.d.ts.map +1 -1
  63. package/ts/cjs/future.js +2 -0
  64. package/ts/cjs/future.js.map +1 -1
  65. package/ts/cjs/future.test.js +5 -0
  66. package/ts/cjs/future.test.js.map +1 -1
  67. package/ts/cjs/poller.d.ts +20 -10
  68. package/ts/cjs/poller.d.ts.map +1 -1
  69. package/ts/cjs/poller.js +87 -16
  70. package/ts/cjs/poller.js.map +1 -1
  71. package/ts/cjs/poller.test.js +2 -2
  72. package/ts/cjs/poller.test.js.map +1 -1
  73. package/ts/cjs/timeouted.d.ts +45 -0
  74. package/ts/cjs/timeouted.d.ts.map +1 -0
  75. package/ts/cjs/timeouted.js +119 -0
  76. package/ts/cjs/timeouted.js.map +1 -0
  77. package/ts/cjs/timeouted.test.d.ts +2 -0
  78. package/ts/cjs/timeouted.test.d.ts.map +1 -0
  79. package/ts/cjs/timeouted.test.js +581 -0
  80. package/ts/cjs/timeouted.test.js.map +1 -0
  81. package/ts/cjs/utils/promise-sleep.d.ts +28 -2
  82. package/ts/cjs/utils/promise-sleep.d.ts.map +1 -1
  83. package/ts/cjs/utils/promise-sleep.js +27 -26
  84. package/ts/cjs/utils/promise-sleep.js.map +1 -1
  85. package/ts/cjs/utils/promise-sleep.test.js +13 -13
  86. package/ts/cjs/utils/promise-sleep.test.js.map +1 -1
  87. package/ts/cjs/version.js +1 -1
  88. package/ts/esm/future.d.ts +1 -0
  89. package/ts/esm/future.d.ts.map +1 -1
  90. package/ts/esm/future.js +2 -0
  91. package/ts/esm/future.js.map +1 -1
  92. package/ts/esm/future.test.js +5 -0
  93. package/ts/esm/future.test.js.map +1 -1
  94. package/ts/esm/poller.d.ts +20 -10
  95. package/ts/esm/poller.d.ts.map +1 -1
  96. package/ts/esm/poller.js +87 -16
  97. package/ts/esm/poller.js.map +1 -1
  98. package/ts/esm/poller.test.js +2 -2
  99. package/ts/esm/poller.test.js.map +1 -1
  100. package/ts/esm/timeouted.d.ts +45 -0
  101. package/ts/esm/timeouted.d.ts.map +1 -0
  102. package/ts/esm/timeouted.js +110 -0
  103. package/ts/esm/timeouted.js.map +1 -0
  104. package/ts/esm/timeouted.test.d.ts +2 -0
  105. package/ts/esm/timeouted.test.d.ts.map +1 -0
  106. package/ts/esm/timeouted.test.js +579 -0
  107. package/ts/esm/timeouted.test.js.map +1 -0
  108. package/ts/esm/utils/promise-sleep.d.ts +28 -2
  109. package/ts/esm/utils/promise-sleep.d.ts.map +1 -1
  110. package/ts/esm/utils/promise-sleep.js +27 -26
  111. package/ts/esm/utils/promise-sleep.js.map +1 -1
  112. package/ts/esm/utils/promise-sleep.test.js +13 -13
  113. package/ts/esm/utils/promise-sleep.test.js.map +1 -1
  114. package/ts/esm/version.js +1 -1
@@ -0,0 +1,110 @@
1
+ import { Future } from "./future.js";
2
+ import { isPromise } from "./is-promise.js";
3
+ import { sleep } from "./utils/promise-sleep.js";
4
+ export function isSuccess(result) {
5
+ return result.state === "success";
6
+ }
7
+ export function isTimeout(result) {
8
+ return result.state === "timeout";
9
+ }
10
+ export function isAborted(result) {
11
+ return result.state === "aborted";
12
+ }
13
+ export function isError(result) {
14
+ return result.state === "error";
15
+ }
16
+ export function unwrap(result) {
17
+ if (isSuccess(result)) {
18
+ return result.value;
19
+ }
20
+ throw new Error(`TimeoutResult is not success: ${result.state}`);
21
+ }
22
+ export function unwrapOr(result, defaultValue) {
23
+ return isSuccess(result) ? result.value : defaultValue;
24
+ }
25
+ export async function timeouted(action, options = {}) {
26
+ const { timeout = 30000, signal, controller: externalController, ctx, onTimeout, onAbort, onError, onAbortAction } = options;
27
+ const controller = externalController || new AbortController();
28
+ const startTime = Date.now();
29
+ const toRemoveEventListeners = [];
30
+ if (signal) {
31
+ function abortAction() {
32
+ controller.abort(signal?.reason);
33
+ }
34
+ toRemoveEventListeners.push(() => {
35
+ signal?.removeEventListener("abort", abortAction);
36
+ });
37
+ signal.addEventListener("abort", abortAction);
38
+ }
39
+ function cleanup(result, skipCleanupAction = false) {
40
+ for (const evtFn of toRemoveEventListeners) {
41
+ evtFn();
42
+ }
43
+ toRemoveEventListeners.length = 0;
44
+ if (!skipCleanupAction) {
45
+ void onAbortAction?.(signal?.reason);
46
+ controller.abort(new Error("Timeouted Abort Action"));
47
+ }
48
+ return {
49
+ ...result,
50
+ duration: Date.now() - startTime,
51
+ ctx: ctx,
52
+ };
53
+ }
54
+ let toAwait;
55
+ if (isPromise(action)) {
56
+ toAwait = action;
57
+ }
58
+ else {
59
+ try {
60
+ toAwait = action(controller);
61
+ }
62
+ catch (error) {
63
+ return cleanup({
64
+ state: "error",
65
+ error: error instanceof Error ? error : new Error(error),
66
+ });
67
+ }
68
+ }
69
+ const abortToAwait = new Future();
70
+ function onAbortHandler() {
71
+ abortToAwait.resolve({ state: "aborted", reason: controller.signal.reason });
72
+ }
73
+ controller.signal.addEventListener("abort", onAbortHandler);
74
+ toRemoveEventListeners.push(() => {
75
+ controller.signal.removeEventListener("abort", onAbortHandler);
76
+ });
77
+ const toRace = [
78
+ toAwait.then((value) => ({ state: "success", value })).catch((error) => ({ state: "error", error })),
79
+ abortToAwait.asPromise(),
80
+ ];
81
+ if (timeout > 0) {
82
+ toRace.push(sleep(timeout, controller.signal).then((r) => {
83
+ switch (true) {
84
+ case r.isOk:
85
+ return { state: "timeout" };
86
+ case r.isErr:
87
+ return { state: "error", error: r.error };
88
+ case r.isAborted:
89
+ return { state: "aborted", reason: r.reason };
90
+ }
91
+ throw new Error("Unreachable code in timeoutAction");
92
+ }));
93
+ }
94
+ const res = await Promise.race(toRace);
95
+ switch (true) {
96
+ case res.state === "success":
97
+ return cleanup(res, true);
98
+ case res.state === "aborted":
99
+ onAbort?.(res.reason);
100
+ return cleanup(res);
101
+ case res.state === "error":
102
+ onError?.(res.error);
103
+ return cleanup(res);
104
+ case res.state === "timeout":
105
+ onTimeout?.();
106
+ return cleanup(res);
107
+ }
108
+ throw new Error("Unreachable code in timeoutAction");
109
+ }
110
+ //# sourceMappingURL=timeouted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeouted.js","sourceRoot":"","sources":["../../../src/timeouted.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=timeouted.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeouted.test.d.ts","sourceRoot":"","sources":["../../../src/timeouted.test.ts"],"names":[],"mappings":""}