@adviser/cement 0.4.58 → 0.4.59

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/base-sys-abstraction.d.ts +1 -1
  2. package/cjs/base-sys-abstraction.d.ts.map +1 -1
  3. package/cjs/on-func.test.cjs +1 -1
  4. package/cjs/on-func.test.cjs.map +1 -1
  5. package/cjs/poller.cjs +24 -6
  6. package/cjs/poller.cjs.map +1 -1
  7. package/cjs/poller.d.ts +14 -2
  8. package/cjs/poller.d.ts.map +1 -1
  9. package/cjs/poller.test.cjs +44 -0
  10. package/cjs/poller.test.cjs.map +1 -1
  11. package/cjs/version.cjs +1 -1
  12. package/deno.json +1 -1
  13. package/esm/base-sys-abstraction.d.ts +1 -1
  14. package/esm/base-sys-abstraction.d.ts.map +1 -1
  15. package/esm/on-func.test.js +1 -1
  16. package/esm/on-func.test.js.map +1 -1
  17. package/esm/poller.d.ts +14 -2
  18. package/esm/poller.d.ts.map +1 -1
  19. package/esm/poller.js +24 -6
  20. package/esm/poller.js.map +1 -1
  21. package/esm/poller.test.js +44 -0
  22. package/esm/poller.test.js.map +1 -1
  23. package/esm/version.js +1 -1
  24. package/package.json +8 -8
  25. package/src/base-sys-abstraction.ts +1 -1
  26. package/src/poller.ts +44 -7
  27. package/ts/cjs/base-sys-abstraction.d.ts +1 -1
  28. package/ts/cjs/base-sys-abstraction.d.ts.map +1 -1
  29. package/ts/cjs/on-func.test.js +1 -1
  30. package/ts/cjs/on-func.test.js.map +1 -1
  31. package/ts/cjs/poller.d.ts +14 -2
  32. package/ts/cjs/poller.d.ts.map +1 -1
  33. package/ts/cjs/poller.js +24 -6
  34. package/ts/cjs/poller.js.map +1 -1
  35. package/ts/cjs/poller.test.js +44 -0
  36. package/ts/cjs/poller.test.js.map +1 -1
  37. package/ts/cjs/version.js +1 -1
  38. package/ts/esm/base-sys-abstraction.d.ts +1 -1
  39. package/ts/esm/base-sys-abstraction.d.ts.map +1 -1
  40. package/ts/esm/on-func.test.js +1 -1
  41. package/ts/esm/on-func.test.js.map +1 -1
  42. package/ts/esm/poller.d.ts +14 -2
  43. package/ts/esm/poller.d.ts.map +1 -1
  44. package/ts/esm/poller.js +24 -6
  45. package/ts/esm/poller.js.map +1 -1
  46. package/ts/esm/poller.test.js +44 -0
  47. package/ts/esm/poller.test.js.map +1 -1
  48. package/ts/esm/version.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.4.58",
3
+ "version": "0.4.59",
4
4
  "description": "better try/catch/finally handling",
5
5
  "main": "./cjs/index.js",
6
6
  "type": "module",
@@ -84,20 +84,20 @@
84
84
  "yaml": "^2.7.1"
85
85
  },
86
86
  "devDependencies": {
87
- "@cloudflare/vitest-pool-workers": "^0.9.1",
88
- "@eslint/js": "^9.20.0",
87
+ "@cloudflare/vitest-pool-workers": "^0.10.3",
88
+ "@eslint/js": "^9.39.1",
89
89
  "@types/deno": "^2.3.0",
90
90
  "@types/fs-extra": "^11.0.4",
91
91
  "@types/node": "^24.4.0",
92
92
  "@types/semver": "^7.7.1",
93
- "@typescript-eslint/eslint-plugin": "^8.7.0",
94
- "@typescript-eslint/parser": "^8.7.0",
95
- "@typescript/native-preview": "7.0.0-dev.20251027.1",
93
+ "@typescript-eslint/eslint-plugin": "^8.46.3",
94
+ "@typescript-eslint/parser": "^8.46.3",
95
+ "@typescript/native-preview": "7.0.0-dev.20251102.1",
96
96
  "@vitest/browser": "^3.2.4",
97
97
  "@vitest/runner": "^3.2.4",
98
98
  "cmd-ts": "^0.14.1",
99
99
  "deno": "^2.5.1",
100
- "eslint": "^9.35.0",
100
+ "eslint": "^9.39.1",
101
101
  "jscodeshift": "^17.3.0",
102
102
  "playwright": "^1.54.1",
103
103
  "prettier": "^3.6.2",
@@ -105,7 +105,7 @@
105
105
  "tsup": "^8.3.0",
106
106
  "tsx": "^4.19.1",
107
107
  "typescript": "^5.9.2",
108
- "typescript-eslint": "^8.44.0",
108
+ "typescript-eslint": "^8.46.3",
109
109
  "vite": "^7.0.4",
110
110
  "vite-tsconfig-paths": "^5.0.1",
111
111
  "vitest": "^3.2.4",
@@ -7,7 +7,7 @@ import {
7
7
  SystemService,
8
8
  VoidFunc,
9
9
  BasicSysAbstraction,
10
- BasicRuntimeService,
10
+ type BasicRuntimeService,
11
11
  } from "./sys-abstraction.js";
12
12
  import { Time } from "./time.js";
13
13
  import { TxtEnDecoder } from "./txt-en-decoder.js";
package/src/poller.ts CHANGED
@@ -1,21 +1,38 @@
1
1
  import { sleep } from "./utils/promise-sleep.js";
2
2
  import { Writable } from "ts-essentials";
3
3
 
4
+ export interface PollerStats {
5
+ readonly attempts: number;
6
+ readonly lastIntervalMs: number;
7
+ readonly totalElapsedMs: number;
8
+ }
9
+
4
10
  export interface PollWaitingActionResult {
5
11
  readonly state: "waiting";
12
+ readonly stats: PollerStats;
6
13
  }
7
14
 
8
15
  export interface PollSuccessActionResult<T> {
9
16
  readonly state: "success";
10
17
  readonly result: T;
18
+ readonly stats: PollerStats;
11
19
  }
12
20
 
13
21
  export interface PollErrorActionResult {
14
22
  readonly state: "error";
15
23
  readonly error: Error;
24
+ readonly stats: PollerStats;
25
+ }
26
+
27
+ export interface PollTimeoutActionResult {
28
+ readonly state: "timeout";
29
+ readonly stats: PollerStats;
16
30
  }
17
31
 
18
- export type PollActionResult<T> = PollWaitingActionResult | PollSuccessActionResult<T> | PollErrorActionResult;
32
+ export type PollActionResult<T> =
33
+ | Omit<PollWaitingActionResult, "stats">
34
+ | Omit<PollSuccessActionResult<T>, "stats">
35
+ | Omit<PollErrorActionResult, "stats">;
19
36
 
20
37
  export const FOREVER = 2147483647; // Maximum setTimeout delay
21
38
  export interface PollerOptions {
@@ -25,15 +42,26 @@ export interface PollerOptions {
25
42
  readonly abortSignal?: AbortSignal;
26
43
  }
27
44
 
28
- export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult;
45
+ export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult | PollTimeoutActionResult;
46
+
47
+ function doneStats(stats: Writable<PollerStats> & { startTime: number }): PollerStats {
48
+ stats.totalElapsedMs = Date.now() - stats.startTime;
49
+ return {
50
+ attempts: stats.attempts,
51
+ lastIntervalMs: stats.lastIntervalMs,
52
+ totalElapsedMs: stats.totalElapsedMs,
53
+ };
54
+ }
29
55
 
30
56
  async function interPoller<T>(
31
57
  fn: (abortSignal?: AbortSignal) => Promise<PollActionResult<T>>,
32
58
  options: Writable<PollerOptions>,
59
+ stats: Writable<PollerStats> & { readonly startTime: number },
33
60
  ): Promise<PollerResult<T>> {
34
61
  do {
35
62
  let result: PollActionResult<T>;
36
63
  try {
64
+ stats.attempts += 1;
37
65
  result = await fn(options.abortSignal);
38
66
  switch (result.state) {
39
67
  case "waiting":
@@ -41,24 +69,27 @@ async function interPoller<T>(
41
69
  if (options.exponentialBackoff) {
42
70
  options.intervalMs = Math.min(options.intervalMs * 2, FOREVER);
43
71
  }
72
+ stats.lastIntervalMs = options.intervalMs;
44
73
  const err = await sleep(options.intervalMs, options.abortSignal);
45
74
  if (err.isErr()) {
46
75
  return {
47
76
  state: "error",
48
77
  error: err.Err(),
78
+ stats: doneStats(stats),
49
79
  };
50
80
  }
51
81
  }
52
82
  break;
53
83
  case "success":
54
- return result;
84
+ return { ...result, stats: doneStats(stats) };
55
85
  case "error":
56
- return result;
86
+ return { ...result, stats: doneStats(stats) };
57
87
  }
58
88
  } catch (err) {
59
89
  return {
60
90
  state: "error",
61
91
  error: err as Error,
92
+ stats: doneStats(stats),
62
93
  };
63
94
  }
64
95
  // eslint-disable-next-line no-constant-condition
@@ -76,10 +107,16 @@ export async function poller<T>(
76
107
  exponentialBackoff:
77
108
  typeof ioptions.exponentialBackoff === "boolean" ? ioptions.exponentialBackoff : ioptions.timeoutMs === FOREVER,
78
109
  };
110
+ const stats = {
111
+ attempts: 0,
112
+ startTime: Date.now(),
113
+ lastIntervalMs: 0,
114
+ totalElapsedMs: 0,
115
+ };
79
116
  return Promise.race([
80
- interPoller(fn, options),
117
+ interPoller(fn, options, stats),
81
118
  sleep(options.timeoutMs, options.abortSignal)
82
- .then(() => ({ state: "error" as const, error: new Error("Polling timed out") }))
83
- .catch((e: Error) => ({ state: "error" as const, error: e })),
119
+ .then(() => ({ state: "timeout" as const, stats: doneStats(stats) }))
120
+ .catch((e: Error) => ({ state: "error" as const, error: e, stats: doneStats(stats) })),
84
121
  ]);
85
122
  }
@@ -1,5 +1,5 @@
1
1
  import { FileService } from "./file-service.js";
2
- import { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, BasicSysAbstraction, BasicRuntimeService } from "./sys-abstraction.js";
2
+ import { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, BasicSysAbstraction, type BasicRuntimeService } from "./sys-abstraction.js";
3
3
  import { Time } from "./time.js";
4
4
  import { TxtEnDecoder } from "./txt-en-decoder.js";
5
5
  import { Env } from "./sys-env.js";
@@ -1 +1 @@
1
- {"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ it("OnFunctionTest", async () => {
34
34
  const start = performance.now();
35
35
  await test.onFunAction.invokeAsync(2, "34");
36
36
  const duration = performance.now() - start;
37
- expect(duration).toBeGreaterThanOrEqual(10);
37
+ expect(duration).toBeGreaterThanOrEqual(9);
38
38
  for (const fn of [...asyncFns, ...fns]) {
39
39
  expect(fn.mock.calls).toEqual([[2, "34"]]);
40
40
  fn.mock.calls.length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,27 @@
1
+ export interface PollerStats {
2
+ readonly attempts: number;
3
+ readonly lastIntervalMs: number;
4
+ readonly totalElapsedMs: number;
5
+ }
1
6
  export interface PollWaitingActionResult {
2
7
  readonly state: "waiting";
8
+ readonly stats: PollerStats;
3
9
  }
4
10
  export interface PollSuccessActionResult<T> {
5
11
  readonly state: "success";
6
12
  readonly result: T;
13
+ readonly stats: PollerStats;
7
14
  }
8
15
  export interface PollErrorActionResult {
9
16
  readonly state: "error";
10
17
  readonly error: Error;
18
+ readonly stats: PollerStats;
19
+ }
20
+ export interface PollTimeoutActionResult {
21
+ readonly state: "timeout";
22
+ readonly stats: PollerStats;
11
23
  }
12
- export type PollActionResult<T> = PollWaitingActionResult | PollSuccessActionResult<T> | PollErrorActionResult;
24
+ export type PollActionResult<T> = Omit<PollWaitingActionResult, "stats"> | Omit<PollSuccessActionResult<T>, "stats"> | Omit<PollErrorActionResult, "stats">;
13
25
  export declare const FOREVER = 2147483647;
14
26
  export interface PollerOptions {
15
27
  readonly intervalMs: number;
@@ -17,6 +29,6 @@ export interface PollerOptions {
17
29
  readonly exponentialBackoff: boolean;
18
30
  readonly abortSignal?: AbortSignal;
19
31
  }
20
- export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult;
32
+ export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult | PollTimeoutActionResult;
21
33
  export declare function poller<T>(fn: () => Promise<PollActionResult<T>>, ioptions?: Partial<PollerOptions>): Promise<PollerResult<T>>;
22
34
  //# sourceMappingURL=poller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,uBAAuB,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAE/G,eAAO,MAAM,OAAO,aAAa,CAAC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAwCjF,wBAAsB,MAAM,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAE,OAAO,CAAC,aAAa,CAAM,GACpC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAc1B"}
1
+ {"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,GACtC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GACzC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAEzC,eAAO,MAAM,OAAO,aAAa,CAAC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAsD3G,wBAAsB,MAAM,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAE,OAAO,CAAC,aAAa,CAAM,GACpC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAoB1B"}
package/ts/cjs/poller.js CHANGED
@@ -4,10 +4,19 @@ exports.FOREVER = void 0;
4
4
  exports.poller = poller;
5
5
  const promise_sleep_js_1 = require("./utils/promise-sleep.js");
6
6
  exports.FOREVER = 2147483647;
7
- async function interPoller(fn, options) {
7
+ function doneStats(stats) {
8
+ stats.totalElapsedMs = Date.now() - stats.startTime;
9
+ return {
10
+ attempts: stats.attempts,
11
+ lastIntervalMs: stats.lastIntervalMs,
12
+ totalElapsedMs: stats.totalElapsedMs,
13
+ };
14
+ }
15
+ async function interPoller(fn, options, stats) {
8
16
  do {
9
17
  let result;
10
18
  try {
19
+ stats.attempts += 1;
11
20
  result = await fn(options.abortSignal);
12
21
  switch (result.state) {
13
22
  case "waiting":
@@ -15,25 +24,28 @@ async function interPoller(fn, options) {
15
24
  if (options.exponentialBackoff) {
16
25
  options.intervalMs = Math.min(options.intervalMs * 2, exports.FOREVER);
17
26
  }
27
+ stats.lastIntervalMs = options.intervalMs;
18
28
  const err = await (0, promise_sleep_js_1.sleep)(options.intervalMs, options.abortSignal);
19
29
  if (err.isErr()) {
20
30
  return {
21
31
  state: "error",
22
32
  error: err.Err(),
33
+ stats: doneStats(stats),
23
34
  };
24
35
  }
25
36
  }
26
37
  break;
27
38
  case "success":
28
- return result;
39
+ return { ...result, stats: doneStats(stats) };
29
40
  case "error":
30
- return result;
41
+ return { ...result, stats: doneStats(stats) };
31
42
  }
32
43
  }
33
44
  catch (err) {
34
45
  return {
35
46
  state: "error",
36
47
  error: err,
48
+ stats: doneStats(stats),
37
49
  };
38
50
  }
39
51
  // eslint-disable-next-line no-constant-condition
@@ -46,11 +58,17 @@ async function poller(fn, ioptions = {}) {
46
58
  ...ioptions,
47
59
  exponentialBackoff: typeof ioptions.exponentialBackoff === "boolean" ? ioptions.exponentialBackoff : ioptions.timeoutMs === exports.FOREVER,
48
60
  };
61
+ const stats = {
62
+ attempts: 0,
63
+ startTime: Date.now(),
64
+ lastIntervalMs: 0,
65
+ totalElapsedMs: 0,
66
+ };
49
67
  return Promise.race([
50
- interPoller(fn, options),
68
+ interPoller(fn, options, stats),
51
69
  (0, promise_sleep_js_1.sleep)(options.timeoutMs, options.abortSignal)
52
- .then(() => ({ state: "error", error: new Error("Polling timed out") }))
53
- .catch((e) => ({ state: "error", error: e })),
70
+ .then(() => ({ state: "timeout", stats: doneStats(stats) }))
71
+ .catch((e) => ({ state: "error", error: e, stats: doneStats(stats) })),
54
72
  ]);
55
73
  }
56
74
  //# sourceMappingURL=poller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":";;;;AAAA,+DAAiD;AAmBpC,QAAA,OAAO,GAAG,UAAU,CAAC;AAUlC,KAAK,UAAU,WAAW,CACxB,EAA+D,EAC/D,OAAgC,EACN;IAC1B,GAAG,CAAC;QACF,IAAI,MAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,SAAS;oBACZ,CAAC;wBACC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;4BAC/B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,QAAA,OAAO,CAAC,CAAC;wBACjE,CAAC;wBACD,MAAM,GAAG,GAAG,MAAM,IAAA,wBAAK,EAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;wBACjE,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;4BAChB,OAAO;gCACL,KAAK,EAAE,OAAO;gCACd,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE;6BACjB,CAAC;wBACJ,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC;gBAChB,KAAK,OAAO;oBACV,OAAO,MAAM,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAY;aACpB,CAAC;QACJ,CAAC;QACD,iDAAiD;IACnD,CAAC,QAAQ,IAAI,EAAE;AAAA,CAChB;AAEM,KAAK,iBACV,EAAsC,EACtC,QAAQ,GAA2B,EAAE,EACX;IAC1B,MAAM,OAAO,GAAG;QACd,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,GAAG,QAAQ;QACX,kBAAkB,EAChB,OAAO,QAAQ,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAA,OAAO;KAClH,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;QACxB,IAAA,wBAAK,EAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC;aAC1C,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;aAChF,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;KAChE,CAAC,CAAC;AAAA,CACJ"}
1
+ {"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,11 @@ it("polls until success", async () => {
28
28
  expect(result).toEqual({
29
29
  state: "success",
30
30
  result: "final result",
31
+ stats: {
32
+ attempts: expect.any(Number),
33
+ lastIntervalMs: expect.any(Number),
34
+ totalElapsedMs: expect.any(Number),
35
+ },
31
36
  });
32
37
  });
33
38
  it("polls action throws error", async () => {
@@ -53,6 +58,11 @@ it("polls action throws error", async () => {
53
58
  expect(result).toEqual({
54
59
  state: "error",
55
60
  error: new Error("action error"),
61
+ stats: {
62
+ attempts: expect.any(Number),
63
+ lastIntervalMs: expect.any(Number),
64
+ totalElapsedMs: expect.any(Number),
65
+ },
56
66
  });
57
67
  });
58
68
  it("polls until error", async () => {
@@ -81,6 +91,11 @@ it("polls until error", async () => {
81
91
  expect(result).toEqual({
82
92
  state: "error",
83
93
  error: new Error("final error"),
94
+ stats: {
95
+ attempts: expect.any(Number),
96
+ lastIntervalMs: expect.any(Number),
97
+ totalElapsedMs: expect.any(Number),
98
+ },
84
99
  });
85
100
  });
86
101
  it("pass result type", async () => {
@@ -92,6 +107,30 @@ it("pass result type", async () => {
92
107
  });
93
108
  expectTypeOf(result).toEqualTypeOf();
94
109
  });
110
+ it("times out", async () => {
111
+ const called = vi.fn();
112
+ const start = performance.now();
113
+ const result = await (0, poller_js_1.poller)(() => {
114
+ called();
115
+ return Promise.resolve({
116
+ state: "waiting",
117
+ });
118
+ }, {
119
+ intervalMs: 10,
120
+ timeoutMs: 50,
121
+ });
122
+ const duration = performance.now() - start;
123
+ expect(duration).toBeGreaterThanOrEqual(48);
124
+ expect(result).toEqual({
125
+ state: "timeout",
126
+ stats: {
127
+ attempts: called.mock.calls.length,
128
+ lastIntervalMs: expect.any(Number),
129
+ totalElapsedMs: expect.any(Number),
130
+ },
131
+ });
132
+ expect(called.mock.calls.length).toBeGreaterThanOrEqual(5);
133
+ });
95
134
  it("has infinite polling", async () => {
96
135
  const called = vi.fn();
97
136
  const abortController = new AbortController();
@@ -113,6 +152,11 @@ it("has infinite polling", async () => {
113
152
  expect(result).toEqual({
114
153
  state: "error",
115
154
  error: new Error("sleep aborted"),
155
+ stats: {
156
+ attempts: called.mock.calls.length,
157
+ lastIntervalMs: expect.any(Number),
158
+ totalElapsedMs: expect.any(Number),
159
+ },
116
160
  });
117
161
  await (0, promise_sleep_js_1.sleep)(200);
118
162
  expect(called.mock.calls.length).toBe(4);
@@ -1 +1 @@
1
- {"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":";;AAAA,2CAAqG;AACrG,+DAAiD;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAA,wBAAK,EAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAM,EAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAA,wBAAK,EAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAAA,CACjC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAM,EAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC;KACjC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAA,wBAAK,EAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;SAChC,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAmC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAM,EAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAM,EAAC,GAA2C,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACvB,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;IACH,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,EAAiC,CAAC;AAAA,CACrE,CAAC,CAAC;AAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAA,kBAAM,EACxB,GAA+C,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IAAA,CACJ,EACD;QACE,UAAU,EAAE,EAAE;QACd,kBAAkB,EAAE,IAAI;QACxB,SAAS,EAAE,mBAAO;QAClB,WAAW,EAAE,eAAe,CAAC,MAAM;KACpC,CACF,CAAC;IACF,MAAM,IAAA,wBAAK,EAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;IACjC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAA,wBAAK,EAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAAA,CAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"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"}
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.4.58";
4
+ exports.VERSION = "0.4.59";
5
5
  //# sourceMappingURL=version.js.map
@@ -1,5 +1,5 @@
1
1
  import { FileService } from "./file-service.js";
2
- import { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, BasicSysAbstraction, BasicRuntimeService } from "./sys-abstraction.js";
2
+ import { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, BasicSysAbstraction, type BasicRuntimeService } from "./sys-abstraction.js";
3
3
  import { Time } from "./time.js";
4
4
  import { TxtEnDecoder } from "./txt-en-decoder.js";
5
5
  import { Env } from "./sys-env.js";
@@ -1 +1 @@
1
- {"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ it("OnFunctionTest", async () => {
32
32
  const start = performance.now();
33
33
  await test.onFunAction.invokeAsync(2, "34");
34
34
  const duration = performance.now() - start;
35
- expect(duration).toBeGreaterThanOrEqual(10);
35
+ expect(duration).toBeGreaterThanOrEqual(9);
36
36
  for (const fn of [...asyncFns, ...fns]) {
37
37
  expect(fn.mock.calls).toEqual([[2, "34"]]);
38
38
  fn.mock.calls.length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,27 @@
1
+ export interface PollerStats {
2
+ readonly attempts: number;
3
+ readonly lastIntervalMs: number;
4
+ readonly totalElapsedMs: number;
5
+ }
1
6
  export interface PollWaitingActionResult {
2
7
  readonly state: "waiting";
8
+ readonly stats: PollerStats;
3
9
  }
4
10
  export interface PollSuccessActionResult<T> {
5
11
  readonly state: "success";
6
12
  readonly result: T;
13
+ readonly stats: PollerStats;
7
14
  }
8
15
  export interface PollErrorActionResult {
9
16
  readonly state: "error";
10
17
  readonly error: Error;
18
+ readonly stats: PollerStats;
19
+ }
20
+ export interface PollTimeoutActionResult {
21
+ readonly state: "timeout";
22
+ readonly stats: PollerStats;
11
23
  }
12
- export type PollActionResult<T> = PollWaitingActionResult | PollSuccessActionResult<T> | PollErrorActionResult;
24
+ export type PollActionResult<T> = Omit<PollWaitingActionResult, "stats"> | Omit<PollSuccessActionResult<T>, "stats"> | Omit<PollErrorActionResult, "stats">;
13
25
  export declare const FOREVER = 2147483647;
14
26
  export interface PollerOptions {
15
27
  readonly intervalMs: number;
@@ -17,6 +29,6 @@ export interface PollerOptions {
17
29
  readonly exponentialBackoff: boolean;
18
30
  readonly abortSignal?: AbortSignal;
19
31
  }
20
- export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult;
32
+ export type PollerResult<T> = PollSuccessActionResult<T> | PollErrorActionResult | PollTimeoutActionResult;
21
33
  export declare function poller<T>(fn: () => Promise<PollActionResult<T>>, ioptions?: Partial<PollerOptions>): Promise<PollerResult<T>>;
22
34
  //# sourceMappingURL=poller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,uBAAuB,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAE/G,eAAO,MAAM,OAAO,aAAa,CAAC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAwCjF,wBAAsB,MAAM,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAE,OAAO,CAAC,aAAa,CAAM,GACpC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAc1B"}
1
+ {"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../src/poller.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,GACtC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GACzC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAEzC,eAAO,MAAM,OAAO,aAAa,CAAC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAsD3G,wBAAsB,MAAM,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAE,OAAO,CAAC,aAAa,CAAM,GACpC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAoB1B"}
package/ts/esm/poller.js CHANGED
@@ -1,9 +1,18 @@
1
1
  import { sleep } from "./utils/promise-sleep.js";
2
2
  export const FOREVER = 2147483647;
3
- async function interPoller(fn, options) {
3
+ function doneStats(stats) {
4
+ stats.totalElapsedMs = Date.now() - stats.startTime;
5
+ return {
6
+ attempts: stats.attempts,
7
+ lastIntervalMs: stats.lastIntervalMs,
8
+ totalElapsedMs: stats.totalElapsedMs,
9
+ };
10
+ }
11
+ async function interPoller(fn, options, stats) {
4
12
  do {
5
13
  let result;
6
14
  try {
15
+ stats.attempts += 1;
7
16
  result = await fn(options.abortSignal);
8
17
  switch (result.state) {
9
18
  case "waiting":
@@ -11,25 +20,28 @@ async function interPoller(fn, options) {
11
20
  if (options.exponentialBackoff) {
12
21
  options.intervalMs = Math.min(options.intervalMs * 2, FOREVER);
13
22
  }
23
+ stats.lastIntervalMs = options.intervalMs;
14
24
  const err = await sleep(options.intervalMs, options.abortSignal);
15
25
  if (err.isErr()) {
16
26
  return {
17
27
  state: "error",
18
28
  error: err.Err(),
29
+ stats: doneStats(stats),
19
30
  };
20
31
  }
21
32
  }
22
33
  break;
23
34
  case "success":
24
- return result;
35
+ return { ...result, stats: doneStats(stats) };
25
36
  case "error":
26
- return result;
37
+ return { ...result, stats: doneStats(stats) };
27
38
  }
28
39
  }
29
40
  catch (err) {
30
41
  return {
31
42
  state: "error",
32
43
  error: err,
44
+ stats: doneStats(stats),
33
45
  };
34
46
  }
35
47
  // eslint-disable-next-line no-constant-condition
@@ -42,11 +54,17 @@ export async function poller(fn, ioptions = {}) {
42
54
  ...ioptions,
43
55
  exponentialBackoff: typeof ioptions.exponentialBackoff === "boolean" ? ioptions.exponentialBackoff : ioptions.timeoutMs === FOREVER,
44
56
  };
57
+ const stats = {
58
+ attempts: 0,
59
+ startTime: Date.now(),
60
+ lastIntervalMs: 0,
61
+ totalElapsedMs: 0,
62
+ };
45
63
  return Promise.race([
46
- interPoller(fn, options),
64
+ interPoller(fn, options, stats),
47
65
  sleep(options.timeoutMs, options.abortSignal)
48
- .then(() => ({ state: "error", error: new Error("Polling timed out") }))
49
- .catch((e) => ({ state: "error", error: e })),
66
+ .then(() => ({ state: "timeout", stats: doneStats(stats) }))
67
+ .catch((e) => ({ state: "error", error: e, stats: doneStats(stats) })),
50
68
  ]);
51
69
  }
52
70
  //# sourceMappingURL=poller.js.map