@adviser/cement 0.4.23 → 0.4.26

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 (103) hide show
  1. package/cjs/future.cjs +1 -1
  2. package/cjs/future.cjs.map +1 -1
  3. package/cjs/future.d.ts.map +1 -1
  4. package/cjs/is-promise.cjs +4 -0
  5. package/cjs/is-promise.cjs.map +1 -1
  6. package/cjs/is-promise.d.ts +2 -0
  7. package/cjs/is-promise.d.ts.map +1 -1
  8. package/cjs/logger.test.cjs +20 -2
  9. package/cjs/logger.test.cjs.map +1 -1
  10. package/cjs/option.cjs +3 -0
  11. package/cjs/option.cjs.map +1 -1
  12. package/cjs/option.d.ts +1 -0
  13. package/cjs/option.d.ts.map +1 -1
  14. package/cjs/resolve-once.cjs +265 -93
  15. package/cjs/resolve-once.cjs.map +1 -1
  16. package/cjs/resolve-once.d.ts +48 -18
  17. package/cjs/resolve-once.d.ts.map +1 -1
  18. package/cjs/resolve-once.test.cjs +115 -9
  19. package/cjs/resolve-once.test.cjs.map +1 -1
  20. package/cjs/utils/console-write-stream.cjs +25 -13
  21. package/cjs/utils/console-write-stream.cjs.map +1 -1
  22. package/cjs/utils/console-write-stream.d.ts +7 -0
  23. package/cjs/utils/console-write-stream.d.ts.map +1 -1
  24. package/cjs/version.cjs +1 -1
  25. package/deno.json +1 -1
  26. package/esm/future.d.ts.map +1 -1
  27. package/esm/future.js +1 -1
  28. package/esm/future.js.map +1 -1
  29. package/esm/is-promise.d.ts +2 -0
  30. package/esm/is-promise.d.ts.map +1 -1
  31. package/esm/is-promise.js +3 -0
  32. package/esm/is-promise.js.map +1 -1
  33. package/esm/logger.test.js +21 -3
  34. package/esm/logger.test.js.map +1 -1
  35. package/esm/option.d.ts +1 -0
  36. package/esm/option.d.ts.map +1 -1
  37. package/esm/option.js +3 -0
  38. package/esm/option.js.map +1 -1
  39. package/esm/resolve-once.d.ts +48 -18
  40. package/esm/resolve-once.d.ts.map +1 -1
  41. package/esm/resolve-once.js +262 -92
  42. package/esm/resolve-once.js.map +1 -1
  43. package/esm/resolve-once.test.js +116 -10
  44. package/esm/resolve-once.test.js.map +1 -1
  45. package/esm/utils/console-write-stream.d.ts +7 -0
  46. package/esm/utils/console-write-stream.d.ts.map +1 -1
  47. package/esm/utils/console-write-stream.js +25 -13
  48. package/esm/utils/console-write-stream.js.map +1 -1
  49. package/esm/version.js +1 -1
  50. package/package.json +3 -3
  51. package/src/future.ts +2 -1
  52. package/src/is-promise.ts +6 -0
  53. package/src/option.ts +4 -0
  54. package/src/resolve-once.ts +342 -114
  55. package/src/utils/console-write-stream.ts +36 -16
  56. package/ts/cjs/future.d.ts.map +1 -1
  57. package/ts/cjs/future.js +1 -1
  58. package/ts/cjs/future.js.map +1 -1
  59. package/ts/cjs/is-promise.d.ts +2 -0
  60. package/ts/cjs/is-promise.d.ts.map +1 -1
  61. package/ts/cjs/is-promise.js +4 -0
  62. package/ts/cjs/is-promise.js.map +1 -1
  63. package/ts/cjs/logger.test.js +20 -2
  64. package/ts/cjs/logger.test.js.map +1 -1
  65. package/ts/cjs/option.d.ts +1 -0
  66. package/ts/cjs/option.d.ts.map +1 -1
  67. package/ts/cjs/option.js +3 -0
  68. package/ts/cjs/option.js.map +1 -1
  69. package/ts/cjs/resolve-once.d.ts +48 -18
  70. package/ts/cjs/resolve-once.d.ts.map +1 -1
  71. package/ts/cjs/resolve-once.js +265 -93
  72. package/ts/cjs/resolve-once.js.map +1 -1
  73. package/ts/cjs/resolve-once.test.js +115 -9
  74. package/ts/cjs/resolve-once.test.js.map +1 -1
  75. package/ts/cjs/utils/console-write-stream.d.ts +7 -0
  76. package/ts/cjs/utils/console-write-stream.d.ts.map +1 -1
  77. package/ts/cjs/utils/console-write-stream.js +25 -13
  78. package/ts/cjs/utils/console-write-stream.js.map +1 -1
  79. package/ts/cjs/version.js +1 -1
  80. package/ts/esm/future.d.ts.map +1 -1
  81. package/ts/esm/future.js +1 -1
  82. package/ts/esm/future.js.map +1 -1
  83. package/ts/esm/is-promise.d.ts +2 -0
  84. package/ts/esm/is-promise.d.ts.map +1 -1
  85. package/ts/esm/is-promise.js +3 -0
  86. package/ts/esm/is-promise.js.map +1 -1
  87. package/ts/esm/logger.test.js +21 -3
  88. package/ts/esm/logger.test.js.map +1 -1
  89. package/ts/esm/option.d.ts +1 -0
  90. package/ts/esm/option.d.ts.map +1 -1
  91. package/ts/esm/option.js +3 -0
  92. package/ts/esm/option.js.map +1 -1
  93. package/ts/esm/resolve-once.d.ts +48 -18
  94. package/ts/esm/resolve-once.d.ts.map +1 -1
  95. package/ts/esm/resolve-once.js +262 -92
  96. package/ts/esm/resolve-once.js.map +1 -1
  97. package/ts/esm/resolve-once.test.js +116 -10
  98. package/ts/esm/resolve-once.test.js.map +1 -1
  99. package/ts/esm/utils/console-write-stream.d.ts +7 -0
  100. package/ts/esm/utils/console-write-stream.d.ts.map +1 -1
  101. package/ts/esm/utils/console-write-stream.js +25 -13
  102. package/ts/esm/utils/console-write-stream.js.map +1 -1
  103. package/ts/esm/version.js +1 -1
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeyedResolvSeq = exports.KeyedResolvOnce = exports.Keyed = exports.ResolveOnce = exports.ResolveSeq = void 0;
3
+ exports.KeyedResolvSeq = exports.KeyedResolvOnce = exports.Keyed = exports.ResolveOnce = exports.AsyncResolveOnce = exports.SyncResolveOnce = exports.ResolveSeq = void 0;
4
4
  exports.Lazy = Lazy;
5
5
  const future_js_1 = require("./future.js");
6
6
  const is_promise_js_1 = require("./is-promise.js");
7
7
  const lru_map_set_js_1 = require("./lru-map-set.js");
8
8
  const result_js_1 = require("./result.js");
9
+ const option_js_1 = require("./option.js");
9
10
  class ResolveSeq {
10
11
  ctx;
11
12
  constructor(ctx) {
@@ -22,24 +23,33 @@ class ResolveSeq {
22
23
  }
23
24
  return Promise.resolve();
24
25
  }
25
- _step(item) {
26
+ async _step(item) {
26
27
  if (!item) {
27
28
  this._flushWaiting.forEach((f) => f.resolve());
28
29
  this._flushWaiting?.splice(0, this._flushWaiting.length);
29
30
  return Promise.resolve();
30
31
  }
31
- item
32
- .fn(this.ctx)
33
- .then((value) => item.future.resolve(value))
34
- .catch((e) => item.future.reject(e))
35
- .finally(() => {
32
+ let value;
33
+ try {
34
+ const promiseOrValue = item.fn(this.ctx);
35
+ if ((0, is_promise_js_1.isPromise)(promiseOrValue)) {
36
+ value = await promiseOrValue;
37
+ }
38
+ else {
39
+ value = promiseOrValue;
40
+ }
41
+ item.future.resolve(value);
42
+ }
43
+ catch (e) {
44
+ item.future.reject(e);
45
+ }
46
+ finally {
36
47
  this._seqFutures.shift();
37
- void this._step(this._seqFutures[0]);
38
- });
39
- return Promise.resolve();
48
+ }
49
+ return this._step(this._seqFutures[0]);
40
50
  }
41
51
  _seqFutures = [];
42
- async add(fn, id) {
52
+ add(fn, id) {
43
53
  const future = new future_js_1.Future();
44
54
  this._seqFutures.push({ future, fn, id });
45
55
  if (this._seqFutures.length === 1) {
@@ -49,110 +59,269 @@ class ResolveSeq {
49
59
  }
50
60
  }
51
61
  exports.ResolveSeq = ResolveSeq;
52
- class ResolveOnce {
53
- _onceDone = false;
54
- _onceFutures = [];
55
- _onceOk = false;
56
- _onceValue;
57
- _onceError;
58
- _isPromise = false;
59
- _inProgress;
60
- ctx;
61
- constructor(ctx) {
62
- this.ctx = ctx;
62
+ class SyncResolveOnce {
63
+ state = "initial";
64
+ #value;
65
+ #error;
66
+ queueLength = 0;
67
+ get value() {
68
+ return this.#value;
69
+ }
70
+ get error() {
71
+ return this.#error;
63
72
  }
64
73
  get ready() {
65
- return this._onceDone;
74
+ return this.state === "processed";
66
75
  }
67
- get value() {
68
- return this._onceDone ? this._onceValue : undefined;
76
+ #ctx;
77
+ constructor(ctx) {
78
+ this.#ctx = ctx;
69
79
  }
70
- reset() {
71
- this._onceDone = false;
72
- this._onceOk = false;
73
- this._onceValue = undefined;
74
- this._onceError = undefined;
75
- if (this._inProgress) {
76
- const idx = this._onceFutures.findIndex((f) => f === this._inProgress);
77
- if (idx >= 0) {
78
- this._onceFutures.push(...this._onceFutures.splice(2).slice(1));
80
+ resolve(fn) {
81
+ if (this.state === "initial") {
82
+ this.state = "processed";
83
+ try {
84
+ this.#value = fn(this.#ctx);
85
+ }
86
+ catch (e) {
87
+ this.#error = e;
88
+ }
89
+ if ((0, is_promise_js_1.isPromise)(this.value)) {
90
+ throw new Error("SyncResolveOnce.once fn returned a promise");
79
91
  }
80
92
  }
81
- else {
82
- this._onceFutures.length = 0;
93
+ if (this.#error) {
94
+ throw this.#error;
83
95
  }
96
+ return this.#value;
84
97
  }
85
- once(fn) {
86
- if (this._onceDone) {
87
- if (this._onceError) {
88
- if (this._isPromise) {
89
- return Promise.reject(this._onceError);
90
- }
91
- else {
92
- throw this._onceError;
98
+ reset(fn) {
99
+ this.state = "initial";
100
+ this.#value = undefined;
101
+ this.#error = undefined;
102
+ if (fn) {
103
+ return this.resolve(fn);
104
+ }
105
+ return undefined;
106
+ }
107
+ }
108
+ exports.SyncResolveOnce = SyncResolveOnce;
109
+ class AsyncResolveItem {
110
+ id = Math.random();
111
+ #state = "initial";
112
+ #toResolve;
113
+ #value = option_js_1.Option.None();
114
+ #error;
115
+ constructor(fn) {
116
+ this.#toResolve = fn;
117
+ }
118
+ get value() {
119
+ return this.#value.IsSome() ? this.#value.unwrap() : undefined;
120
+ }
121
+ get error() {
122
+ return this.#error;
123
+ }
124
+ #queue = [];
125
+ get queuelength() {
126
+ return this.#queue.length;
127
+ }
128
+ isDisposable() {
129
+ return this.#state === "processed" && this.#queue.length === 0;
130
+ }
131
+ #resolveFuture(future) {
132
+ if (!future) {
133
+ return;
134
+ }
135
+ if (this.#error) {
136
+ future.reject(this.#error);
137
+ return;
138
+ }
139
+ if (this.#value.IsSome()) {
140
+ future.resolve(this.#value.Unwrap());
141
+ }
142
+ }
143
+ #promiseResult() {
144
+ if (this.#error) {
145
+ return Promise.reject(this.#error);
146
+ }
147
+ if (this.#value.IsSome()) {
148
+ return Promise.resolve(this.#value.Unwrap());
149
+ }
150
+ throw new Error("AsyncResolveItem.#promiseResult impossible");
151
+ }
152
+ resolve() {
153
+ if (this.#state === "initial") {
154
+ this.#state = "waiting";
155
+ const future = new future_js_1.Future();
156
+ this.#queue.push(future);
157
+ this.#toResolve
158
+ .then((value) => {
159
+ this.#value = option_js_1.Option.Some(value);
160
+ })
161
+ .catch((e) => {
162
+ this.#error = e;
163
+ })
164
+ .finally(() => {
165
+ this.#state = "processed";
166
+ while (this.#queue.length > 0) {
167
+ this.#resolveFuture(this.#queue.shift());
93
168
  }
94
- }
95
- if (this._onceOk) {
96
- if (this._isPromise) {
97
- return Promise.resolve(this._onceValue);
169
+ });
170
+ return future.asPromise();
171
+ }
172
+ if (this.#state === "processed") {
173
+ return this.#promiseResult();
174
+ }
175
+ if (this.#state === "waiting") {
176
+ const future = new future_js_1.Future();
177
+ this.#queue.push(future);
178
+ return future.asPromise();
179
+ }
180
+ throw new Error("AsyncResolveItem.resolve impossible");
181
+ }
182
+ }
183
+ class AsyncResolveOnce {
184
+ state = "initial";
185
+ #queue = [];
186
+ #ctx;
187
+ constructor(ctx) {
188
+ this.#ctx = ctx;
189
+ }
190
+ #active() {
191
+ const r = this.#queue[this.#queue.length - 1];
192
+ if (!r) {
193
+ throw new Error("AsyncResolveOnce.#active impossible");
194
+ }
195
+ return r;
196
+ }
197
+ get queueLength() {
198
+ return this.#queue.reduce((acc, r) => acc + r.queuelength, this.#queue.length);
199
+ }
200
+ get ready() {
201
+ return this.state !== "initial";
202
+ }
203
+ get value() {
204
+ if (this.state === "initial") {
205
+ return undefined;
206
+ }
207
+ return this.#active().value;
208
+ }
209
+ get error() {
210
+ if (this.state === "initial") {
211
+ return undefined;
212
+ }
213
+ return this.#active().error;
214
+ }
215
+ resolve(fn) {
216
+ if (this.state === "initial") {
217
+ this.state = "waiting";
218
+ let promiseResult;
219
+ try {
220
+ const couldBePromise = fn(this.#ctx);
221
+ if (!(0, is_promise_js_1.isPromise)(couldBePromise)) {
222
+ promiseResult = Promise.resolve(couldBePromise);
98
223
  }
99
224
  else {
100
- return this._onceValue;
225
+ promiseResult = couldBePromise;
101
226
  }
102
227
  }
103
- throw new Error("ResolveOnce.once impossible");
228
+ catch (e) {
229
+ promiseResult = Promise.reject(e);
230
+ }
231
+ this.#queue.push(new AsyncResolveItem(promiseResult));
104
232
  }
105
- const future = new future_js_1.Future();
106
- this._onceFutures.push(future);
107
- if (this._onceFutures.length === 1) {
108
- const okFn = (value) => {
109
- this._onceValue = value;
110
- this._onceOk = true;
111
- this._onceDone = true;
112
- if (this._isPromise) {
113
- this._onceFutures.forEach((f) => f.resolve(this._onceValue));
114
- }
115
- this._onceFutures.length = 0;
116
- };
117
- const catchFn = (e) => {
118
- this._onceError = e;
119
- this._onceOk = false;
120
- this._onceValue = undefined;
121
- this._onceDone = true;
122
- if (this._isPromise) {
123
- this._onceFutures.forEach((f) => f.reject(this._onceError));
124
- }
125
- this._onceFutures.length = 0;
126
- };
127
- this._inProgress = future;
233
+ this.#queue
234
+ .slice(0, -1)
235
+ .map((i, idx) => (i.isDisposable() ? idx : undefined))
236
+ .filter((i) => i !== undefined)
237
+ .reverse()
238
+ .forEach((idx) => this.#queue.splice(idx, 1));
239
+ return this.#active().resolve();
240
+ }
241
+ reset(fn) {
242
+ this.state = "initial";
243
+ if (fn) {
244
+ return this.resolve(fn);
245
+ }
246
+ return undefined;
247
+ }
248
+ }
249
+ exports.AsyncResolveOnce = AsyncResolveOnce;
250
+ class ResolveOnce {
251
+ #state = "initial";
252
+ #syncOrAsync = option_js_1.Option.None();
253
+ #ctx;
254
+ constructor(ctx) {
255
+ this.#ctx = ctx;
256
+ }
257
+ get ready() {
258
+ return this.#state !== "initial" && this.#syncOrAsync.Unwrap().ready;
259
+ }
260
+ get value() {
261
+ if (this.#state === "initial") {
262
+ return undefined;
263
+ }
264
+ return this.#syncOrAsync.Unwrap().value;
265
+ }
266
+ get queueLength() {
267
+ if (this.#state === "initial") {
268
+ return 0;
269
+ }
270
+ return this.#syncOrAsync.Unwrap().queueLength;
271
+ }
272
+ get error() {
273
+ if (this.#state === "initial") {
274
+ return undefined;
275
+ }
276
+ return this.#syncOrAsync.Unwrap().error;
277
+ }
278
+ get state() {
279
+ if (this.#state === "initial") {
280
+ return "initial";
281
+ }
282
+ return this.#syncOrAsync.Unwrap().state;
283
+ }
284
+ once(fn) {
285
+ let resultFn;
286
+ if (this.#state === "initial") {
287
+ this.#state = "processing";
128
288
  try {
129
- const ret = fn(this.ctx);
130
- if ((0, is_promise_js_1.isPromise)(ret)) {
131
- this._isPromise = true;
132
- ret
133
- .then(okFn)
134
- .catch(catchFn)
135
- .finally(() => {
136
- this._inProgress = undefined;
137
- });
289
+ const isSyncOrAsync = fn(this.#ctx);
290
+ if ((0, is_promise_js_1.isPromise)(isSyncOrAsync)) {
291
+ this.#syncOrAsync = option_js_1.Option.Some(new AsyncResolveOnce(this.#ctx));
138
292
  }
139
293
  else {
140
- okFn(ret);
294
+ this.#syncOrAsync = option_js_1.Option.Some(new SyncResolveOnce(this.#ctx));
141
295
  }
296
+ resultFn = () => isSyncOrAsync;
142
297
  }
143
298
  catch (e) {
144
- catchFn(e);
299
+ this.#syncOrAsync = option_js_1.Option.Some(new SyncResolveOnce(this.#ctx));
300
+ resultFn = () => {
301
+ throw e;
302
+ };
145
303
  }
146
- if (!this._isPromise) {
147
- this._inProgress = undefined;
304
+ finally {
305
+ this.#state = "processed";
148
306
  }
149
307
  }
150
- if (this._isPromise) {
151
- return future.asPromise();
152
- }
153
308
  else {
309
+ resultFn = fn;
310
+ }
311
+ if (!this.#syncOrAsync) {
312
+ throw new Error("ResolveOnce.once impossible");
313
+ }
314
+ return this.#syncOrAsync.Unwrap().resolve(resultFn);
315
+ }
316
+ reset(fn) {
317
+ if (this.#state === "initial") {
154
318
  return this.once(fn);
155
319
  }
320
+ if (this.#state === "processing") {
321
+ console.warn("ResolveOnce.reset dropped was called while processing");
322
+ return undefined;
323
+ }
324
+ return this.#syncOrAsync.Unwrap().reset(fn);
156
325
  }
157
326
  }
158
327
  exports.ResolveOnce = ResolveOnce;
@@ -192,6 +361,9 @@ class Keyed {
192
361
  }
193
362
  return this._map.has(key);
194
363
  }
364
+ delete(key) {
365
+ this._map.delete(key);
366
+ }
195
367
  unget(key) {
196
368
  const keyed = this._map.get(key);
197
369
  keyed?.reset();
@@ -209,14 +381,14 @@ class KeyedResolvOnce extends Keyed {
209
381
  }
210
382
  *entries() {
211
383
  for (const [k, v] of this._map.entries()) {
212
- if (!v._onceDone) {
384
+ if (!v.ready) {
213
385
  continue;
214
386
  }
215
- if (v._onceError) {
216
- yield { key: k, value: result_js_1.Result.Err(v._onceError) };
387
+ if (v.error) {
388
+ yield { key: k, value: result_js_1.Result.Err(v.error) };
217
389
  }
218
390
  else {
219
- yield { key: k, value: result_js_1.Result.Ok(v._onceValue) };
391
+ yield { key: k, value: result_js_1.Result.Ok(v.value) };
220
392
  }
221
393
  }
222
394
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-once.js","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-once.js","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,8 @@ describe("resolve-once", () => {
43
43
  expect(diff).toBeGreaterThanOrEqual(99);
44
44
  expect(diff).toBeLessThan(150);
45
45
  });
46
- it("works with void", async () => {
46
+ it("async works with void", async () => {
47
+ const cnt = 1;
47
48
  const once = new cement_1.ResolveOnce();
48
49
  const reallyOnce = vi.fn(async () => {
49
50
  return new Promise((resolve) => {
@@ -52,16 +53,27 @@ describe("resolve-once", () => {
52
53
  }, 100);
53
54
  });
54
55
  });
55
- const fn = () => once.once(async () => reallyOnce());
56
+ const fn = () => once.once(() => {
57
+ return reallyOnce();
58
+ });
56
59
  const start = Date.now();
57
- expect(await Promise.all(Array(100)
60
+ expect(await Promise.all(Array(cnt)
58
61
  .fill(fn)
59
- .map((fn) => fn()))).toEqual(Array(100).fill(undefined));
62
+ .map((fn) => fn()))).toEqual(Array(cnt).fill(undefined));
60
63
  expect(reallyOnce).toHaveBeenCalledTimes(1);
61
64
  const diff = Date.now() - start;
62
- expect(diff).toBeGreaterThanOrEqual(99);
65
+ expect(diff).toBeGreaterThanOrEqual(95);
63
66
  expect(diff).toBeLessThan(150);
64
67
  });
68
+ it("sync works with void", () => {
69
+ const once = new cement_1.ResolveOnce();
70
+ const reallyOnce = vi.fn(() => 19);
71
+ const val = once.once(() => {
72
+ reallyOnce();
73
+ });
74
+ expect(Array(100).fill(val)).toEqual(Array(100).fill(undefined));
75
+ expect(reallyOnce).toHaveBeenCalledTimes(1);
76
+ });
65
77
  it("throws", async () => {
66
78
  const once = new cement_1.ResolveOnce();
67
79
  const reallyOnce = vi.fn(async () => {
@@ -157,13 +169,13 @@ describe("resolve-once", () => {
157
169
  await once.once(orderFn);
158
170
  await once.once(orderFn);
159
171
  await once.once(orderFn);
160
- once.reset();
172
+ void once.reset();
161
173
  await once.once(orderFn);
162
174
  await once.once(orderFn);
163
- once.reset();
175
+ void once.reset();
164
176
  await once.once(orderFn);
165
177
  await once.once(orderFn);
166
- once.reset();
178
+ void once.reset();
167
179
  expect(orderFn).toHaveBeenCalledTimes(3);
168
180
  });
169
181
  it("keyed", async () => {
@@ -426,7 +438,18 @@ describe("resolve-once", () => {
426
438
  once.once(() => 42);
427
439
  expect(once.ready).toBe(true);
428
440
  expect(once.value).toBe(42);
429
- once.reset();
441
+ void once.reset();
442
+ expect(once.ready).toBe(false);
443
+ expect(once.value).toBe(undefined);
444
+ });
445
+ it("async resolve once serves ready and value", async () => {
446
+ const once = new cement_1.ResolveOnce();
447
+ expect(once.ready).toBe(false);
448
+ expect(once.value).toBe(undefined);
449
+ await once.once(() => Promise.resolve(42));
450
+ expect(once.ready).toBe(true);
451
+ expect(once.value).toBe(42);
452
+ void once.reset();
430
453
  expect(once.ready).toBe(false);
431
454
  expect(once.value).toBe(undefined);
432
455
  });
@@ -460,6 +483,89 @@ class MyLazy {
460
483
  };
461
484
  }
462
485
  }
486
+ describe("Reset does not remove pending futures", () => {
487
+ it("reset are queued", async () => {
488
+ const once = new cement_1.ResolveOnce();
489
+ const actions = [];
490
+ const actionCnt = 3;
491
+ const onceCallCnt = 3;
492
+ for (let i = 0; i < actionCnt; i++) {
493
+ const loop = i;
494
+ const futures = Array(onceCallCnt)
495
+ .fill(0)
496
+ .map(() => {
497
+ const f = new cement_1.Future();
498
+ return f;
499
+ });
500
+ actions.push({
501
+ futures,
502
+ results: Array(onceCallCnt)
503
+ .fill(0)
504
+ .map((_, fidx) => once.once(() => futures[fidx].asPromise().then(() => {
505
+ const ret = loop ? fidx + loop + 42 : fidx + loop + 63;
506
+ return ret;
507
+ }))),
508
+ reset: once.reset(() => {
509
+ const ret = loop + 97;
510
+ return Promise.resolve(ret);
511
+ }),
512
+ });
513
+ }
514
+ expect(once.queueLength).toBe(actionCnt * onceCallCnt + actionCnt + actionCnt + 1);
515
+ [...actions].reverse().forEach((a) => {
516
+ [...a.futures].reverse().forEach((f) => {
517
+ f.resolve();
518
+ });
519
+ });
520
+ await Promise.all(actions.map((a) => a.reset));
521
+ expect(once.queueLength).toBe(actionCnt + 1);
522
+ for (let i = 0; i < actionCnt; i++) {
523
+ const a = actions[i];
524
+ expect(await Promise.all(a.results)).toEqual(Array(onceCallCnt)
525
+ .fill(0)
526
+ .map(() => (i ? i + 96 : i + 63)));
527
+ }
528
+ });
529
+ it("Reset does not remove pending futures", async () => {
530
+ const cnt = 10;
531
+ const once = new cement_1.ResolveOnce();
532
+ const releaseOnce = new cement_1.Future();
533
+ const waiting = Promise.all(Array(cnt)
534
+ .fill(0)
535
+ .map(() => {
536
+ return once.once(() => releaseOnce.asPromise().then(() => 24));
537
+ }));
538
+ const newValue = new cement_1.Future();
539
+ let newWaiting;
540
+ const never = vi.fn();
541
+ const resetResult = once.reset(async () => {
542
+ newWaiting = Promise.all(Array(cnt)
543
+ .fill(0)
544
+ .map(() => once.once(() => {
545
+ never();
546
+ return 46;
547
+ })));
548
+ await newValue.asPromise();
549
+ return 42;
550
+ });
551
+ releaseOnce.resolve();
552
+ newValue.resolve();
553
+ expect(await resetResult).toBe(42);
554
+ const resWaiting = await waiting;
555
+ expect(resWaiting).toEqual(Array(cnt).fill(24));
556
+ const newWaitingResult = await newWaiting;
557
+ expect(newWaitingResult).toEqual(Array(cnt).fill(24));
558
+ expect(never).not.toHaveBeenCalled();
559
+ const resolvedReset = await resetResult;
560
+ expect(resolvedReset).toBe(42);
561
+ expect(await Promise.all(Array(cnt)
562
+ .fill(0)
563
+ .map(() => once.once(() => {
564
+ never();
565
+ return 49;
566
+ })))).toEqual(Array(cnt).fill(42));
567
+ });
568
+ });
463
569
  describe("Lazy Initialization", () => {
464
570
  it("ResolveOnce could be used for LazyInitialization", async () => {
465
571
  const my = new MyLazy();