@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,9 +1,11 @@
1
1
  import { Future } from "./future.js";
2
+ import { UnPromisify } from "./is-promise.js";
3
+ import { Promisable } from "./is-promise.js";
2
4
  import { LRUMap, LRUParam, UnregFn } from "./lru-map-set.js";
3
5
  import { Result } from "./result.js";
4
- interface ResolveSeqItem<T, C> {
6
+ interface ResolveSeqItem<T, C, R extends Promisable<T>> {
5
7
  readonly future: Future<T>;
6
- readonly fn: (c?: C) => Promise<T>;
8
+ readonly fn: (c?: C) => R;
7
9
  readonly id?: number;
8
10
  }
9
11
  export declare class ResolveSeq<T, C = void> {
@@ -12,24 +14,51 @@ export declare class ResolveSeq<T, C = void> {
12
14
  reset(): void;
13
15
  readonly _flushWaiting: Future<void>[];
14
16
  flush(): Promise<void>;
15
- _step(item?: ResolveSeqItem<T, C>): Promise<void>;
16
- readonly _seqFutures: ResolveSeqItem<T, C>[];
17
- add(fn: (c?: C) => Promise<T>, id?: number): Promise<T>;
17
+ _step<R extends Promisable<T>>(item?: ResolveSeqItem<T, C, R>): Promise<void>;
18
+ readonly _seqFutures: ResolveSeqItem<T, C, Promisable<T>>[];
19
+ add<R extends Promisable<T>>(fn: (c?: C) => R, id?: number): Promise<UnPromisify<R>>;
18
20
  }
19
- export declare class ResolveOnce<T, CTX = void> {
20
- _onceDone: boolean;
21
- readonly _onceFutures: Future<T>[];
22
- _onceOk: boolean;
23
- _onceValue?: T;
24
- _onceError?: Error;
25
- _isPromise: boolean;
26
- _inProgress?: Future<T>;
27
- readonly ctx?: CTX;
28
- constructor(ctx?: CTX);
21
+ type ResolveState = "initial" | "processed" | "waiting" | "processing";
22
+ interface ResolveOnceIf<T extends Promisable<unknown>, CTX = void> {
29
23
  get ready(): boolean;
24
+ get value(): UnPromisify<T> | undefined;
25
+ get error(): Error | undefined;
26
+ get state(): ResolveState;
27
+ once<R extends Promisable<UnPromisify<T>>>(fn: (c?: CTX) => R): R;
28
+ reset<R extends Promisable<UnPromisify<T>>>(fn?: (c?: CTX) => R): R;
29
+ }
30
+ export declare class SyncResolveOnce<T extends Promisable<unknown>, CTX = void> {
31
+ #private;
32
+ state: ResolveState;
33
+ readonly queueLength: number;
30
34
  get value(): T | undefined;
31
- reset(): void;
32
- once<R>(fn: (c?: CTX) => R): R;
35
+ get error(): Error | undefined;
36
+ get ready(): boolean;
37
+ constructor(ctx?: CTX);
38
+ resolve(fn: (ctx?: CTX) => T): T;
39
+ reset(fn?: (c?: CTX) => T): T | undefined;
40
+ }
41
+ export declare class AsyncResolveOnce<T extends Promisable<unknown>, CTX = void> {
42
+ #private;
43
+ state: ResolveState;
44
+ constructor(ctx?: CTX);
45
+ get queueLength(): number;
46
+ get ready(): boolean;
47
+ get value(): UnPromisify<T> | undefined;
48
+ get error(): Error | undefined;
49
+ resolve(fn: (ctx?: CTX) => T): T;
50
+ reset(fn?: (c?: CTX) => T): T;
51
+ }
52
+ export declare class ResolveOnce<T extends Promisable<unknown>, CTX = void> implements ResolveOnceIf<T, CTX> {
53
+ #private;
54
+ constructor(ctx?: CTX);
55
+ get ready(): boolean;
56
+ get value(): UnPromisify<T> | undefined;
57
+ get queueLength(): number;
58
+ get error(): Error | undefined;
59
+ get state(): ResolveState;
60
+ once<R extends Promisable<UnPromisify<T>>>(fn: (c?: CTX) => R): R;
61
+ reset<R extends Promisable<UnPromisify<T>>>(fn?: (c?: CTX) => R): R;
33
62
  }
34
63
  export interface KeyedParam {
35
64
  readonly lru: Partial<LRUParam>;
@@ -46,6 +75,7 @@ export declare class Keyed<T extends {
46
75
  asyncGet(key: () => Promise<K>): Promise<T>;
47
76
  get(key: K | (() => K)): T;
48
77
  has(key: K | (() => K)): boolean;
78
+ delete(key: K): void;
49
79
  unget(key: K): void;
50
80
  reset(): void;
51
81
  }
@@ -61,6 +91,6 @@ export declare class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T,
61
91
  export declare class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {
62
92
  constructor(kp?: Partial<KeyedParam>);
63
93
  }
64
- export declare function Lazy<R>(fn: () => R): () => ReturnType<typeof fn>;
94
+ export declare function Lazy<R extends Promisable<unknown>>(fn: () => R): () => ReturnType<typeof fn>;
65
95
  export {};
66
96
  //# sourceMappingURL=resolve-once.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-once.d.ts","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-once.d.ts","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { Future } from "./future.js";
2
2
  import { isPromise } from "./is-promise.js";
3
3
  import { LRUMap } from "./lru-map-set.js";
4
4
  import { Result } from "./result.js";
5
+ import { Option } from "./option.js";
5
6
  export class ResolveSeq {
6
7
  ctx;
7
8
  constructor(ctx) {
@@ -18,24 +19,33 @@ export class ResolveSeq {
18
19
  }
19
20
  return Promise.resolve();
20
21
  }
21
- _step(item) {
22
+ async _step(item) {
22
23
  if (!item) {
23
24
  this._flushWaiting.forEach((f) => f.resolve());
24
25
  this._flushWaiting?.splice(0, this._flushWaiting.length);
25
26
  return Promise.resolve();
26
27
  }
27
- item
28
- .fn(this.ctx)
29
- .then((value) => item.future.resolve(value))
30
- .catch((e) => item.future.reject(e))
31
- .finally(() => {
28
+ let value;
29
+ try {
30
+ const promiseOrValue = item.fn(this.ctx);
31
+ if (isPromise(promiseOrValue)) {
32
+ value = await promiseOrValue;
33
+ }
34
+ else {
35
+ value = promiseOrValue;
36
+ }
37
+ item.future.resolve(value);
38
+ }
39
+ catch (e) {
40
+ item.future.reject(e);
41
+ }
42
+ finally {
32
43
  this._seqFutures.shift();
33
- void this._step(this._seqFutures[0]);
34
- });
35
- return Promise.resolve();
44
+ }
45
+ return this._step(this._seqFutures[0]);
36
46
  }
37
47
  _seqFutures = [];
38
- async add(fn, id) {
48
+ add(fn, id) {
39
49
  const future = new Future();
40
50
  this._seqFutures.push({ future, fn, id });
41
51
  if (this._seqFutures.length === 1) {
@@ -44,110 +54,267 @@ export class ResolveSeq {
44
54
  return future.asPromise();
45
55
  }
46
56
  }
47
- export class ResolveOnce {
48
- _onceDone = false;
49
- _onceFutures = [];
50
- _onceOk = false;
51
- _onceValue;
52
- _onceError;
53
- _isPromise = false;
54
- _inProgress;
55
- ctx;
56
- constructor(ctx) {
57
- this.ctx = ctx;
57
+ export class SyncResolveOnce {
58
+ state = "initial";
59
+ #value;
60
+ #error;
61
+ queueLength = 0;
62
+ get value() {
63
+ return this.#value;
64
+ }
65
+ get error() {
66
+ return this.#error;
58
67
  }
59
68
  get ready() {
60
- return this._onceDone;
69
+ return this.state === "processed";
61
70
  }
62
- get value() {
63
- return this._onceDone ? this._onceValue : undefined;
71
+ #ctx;
72
+ constructor(ctx) {
73
+ this.#ctx = ctx;
64
74
  }
65
- reset() {
66
- this._onceDone = false;
67
- this._onceOk = false;
68
- this._onceValue = undefined;
69
- this._onceError = undefined;
70
- if (this._inProgress) {
71
- const idx = this._onceFutures.findIndex((f) => f === this._inProgress);
72
- if (idx >= 0) {
73
- this._onceFutures.push(...this._onceFutures.splice(2).slice(1));
75
+ resolve(fn) {
76
+ if (this.state === "initial") {
77
+ this.state = "processed";
78
+ try {
79
+ this.#value = fn(this.#ctx);
80
+ }
81
+ catch (e) {
82
+ this.#error = e;
83
+ }
84
+ if (isPromise(this.value)) {
85
+ throw new Error("SyncResolveOnce.once fn returned a promise");
74
86
  }
75
87
  }
76
- else {
77
- this._onceFutures.length = 0;
88
+ if (this.#error) {
89
+ throw this.#error;
78
90
  }
91
+ return this.#value;
79
92
  }
80
- once(fn) {
81
- if (this._onceDone) {
82
- if (this._onceError) {
83
- if (this._isPromise) {
84
- return Promise.reject(this._onceError);
85
- }
86
- else {
87
- throw this._onceError;
93
+ reset(fn) {
94
+ this.state = "initial";
95
+ this.#value = undefined;
96
+ this.#error = undefined;
97
+ if (fn) {
98
+ return this.resolve(fn);
99
+ }
100
+ return undefined;
101
+ }
102
+ }
103
+ class AsyncResolveItem {
104
+ id = Math.random();
105
+ #state = "initial";
106
+ #toResolve;
107
+ #value = Option.None();
108
+ #error;
109
+ constructor(fn) {
110
+ this.#toResolve = fn;
111
+ }
112
+ get value() {
113
+ return this.#value.IsSome() ? this.#value.unwrap() : undefined;
114
+ }
115
+ get error() {
116
+ return this.#error;
117
+ }
118
+ #queue = [];
119
+ get queuelength() {
120
+ return this.#queue.length;
121
+ }
122
+ isDisposable() {
123
+ return this.#state === "processed" && this.#queue.length === 0;
124
+ }
125
+ #resolveFuture(future) {
126
+ if (!future) {
127
+ return;
128
+ }
129
+ if (this.#error) {
130
+ future.reject(this.#error);
131
+ return;
132
+ }
133
+ if (this.#value.IsSome()) {
134
+ future.resolve(this.#value.Unwrap());
135
+ }
136
+ }
137
+ #promiseResult() {
138
+ if (this.#error) {
139
+ return Promise.reject(this.#error);
140
+ }
141
+ if (this.#value.IsSome()) {
142
+ return Promise.resolve(this.#value.Unwrap());
143
+ }
144
+ throw new Error("AsyncResolveItem.#promiseResult impossible");
145
+ }
146
+ resolve() {
147
+ if (this.#state === "initial") {
148
+ this.#state = "waiting";
149
+ const future = new Future();
150
+ this.#queue.push(future);
151
+ this.#toResolve
152
+ .then((value) => {
153
+ this.#value = Option.Some(value);
154
+ })
155
+ .catch((e) => {
156
+ this.#error = e;
157
+ })
158
+ .finally(() => {
159
+ this.#state = "processed";
160
+ while (this.#queue.length > 0) {
161
+ this.#resolveFuture(this.#queue.shift());
88
162
  }
89
- }
90
- if (this._onceOk) {
91
- if (this._isPromise) {
92
- return Promise.resolve(this._onceValue);
163
+ });
164
+ return future.asPromise();
165
+ }
166
+ if (this.#state === "processed") {
167
+ return this.#promiseResult();
168
+ }
169
+ if (this.#state === "waiting") {
170
+ const future = new Future();
171
+ this.#queue.push(future);
172
+ return future.asPromise();
173
+ }
174
+ throw new Error("AsyncResolveItem.resolve impossible");
175
+ }
176
+ }
177
+ export class AsyncResolveOnce {
178
+ state = "initial";
179
+ #queue = [];
180
+ #ctx;
181
+ constructor(ctx) {
182
+ this.#ctx = ctx;
183
+ }
184
+ #active() {
185
+ const r = this.#queue[this.#queue.length - 1];
186
+ if (!r) {
187
+ throw new Error("AsyncResolveOnce.#active impossible");
188
+ }
189
+ return r;
190
+ }
191
+ get queueLength() {
192
+ return this.#queue.reduce((acc, r) => acc + r.queuelength, this.#queue.length);
193
+ }
194
+ get ready() {
195
+ return this.state !== "initial";
196
+ }
197
+ get value() {
198
+ if (this.state === "initial") {
199
+ return undefined;
200
+ }
201
+ return this.#active().value;
202
+ }
203
+ get error() {
204
+ if (this.state === "initial") {
205
+ return undefined;
206
+ }
207
+ return this.#active().error;
208
+ }
209
+ resolve(fn) {
210
+ if (this.state === "initial") {
211
+ this.state = "waiting";
212
+ let promiseResult;
213
+ try {
214
+ const couldBePromise = fn(this.#ctx);
215
+ if (!isPromise(couldBePromise)) {
216
+ promiseResult = Promise.resolve(couldBePromise);
93
217
  }
94
218
  else {
95
- return this._onceValue;
219
+ promiseResult = couldBePromise;
96
220
  }
97
221
  }
98
- throw new Error("ResolveOnce.once impossible");
222
+ catch (e) {
223
+ promiseResult = Promise.reject(e);
224
+ }
225
+ this.#queue.push(new AsyncResolveItem(promiseResult));
99
226
  }
100
- const future = new Future();
101
- this._onceFutures.push(future);
102
- if (this._onceFutures.length === 1) {
103
- const okFn = (value) => {
104
- this._onceValue = value;
105
- this._onceOk = true;
106
- this._onceDone = true;
107
- if (this._isPromise) {
108
- this._onceFutures.forEach((f) => f.resolve(this._onceValue));
109
- }
110
- this._onceFutures.length = 0;
111
- };
112
- const catchFn = (e) => {
113
- this._onceError = e;
114
- this._onceOk = false;
115
- this._onceValue = undefined;
116
- this._onceDone = true;
117
- if (this._isPromise) {
118
- this._onceFutures.forEach((f) => f.reject(this._onceError));
119
- }
120
- this._onceFutures.length = 0;
121
- };
122
- this._inProgress = future;
227
+ this.#queue
228
+ .slice(0, -1)
229
+ .map((i, idx) => (i.isDisposable() ? idx : undefined))
230
+ .filter((i) => i !== undefined)
231
+ .reverse()
232
+ .forEach((idx) => this.#queue.splice(idx, 1));
233
+ return this.#active().resolve();
234
+ }
235
+ reset(fn) {
236
+ this.state = "initial";
237
+ if (fn) {
238
+ return this.resolve(fn);
239
+ }
240
+ return undefined;
241
+ }
242
+ }
243
+ export class ResolveOnce {
244
+ #state = "initial";
245
+ #syncOrAsync = Option.None();
246
+ #ctx;
247
+ constructor(ctx) {
248
+ this.#ctx = ctx;
249
+ }
250
+ get ready() {
251
+ return this.#state !== "initial" && this.#syncOrAsync.Unwrap().ready;
252
+ }
253
+ get value() {
254
+ if (this.#state === "initial") {
255
+ return undefined;
256
+ }
257
+ return this.#syncOrAsync.Unwrap().value;
258
+ }
259
+ get queueLength() {
260
+ if (this.#state === "initial") {
261
+ return 0;
262
+ }
263
+ return this.#syncOrAsync.Unwrap().queueLength;
264
+ }
265
+ get error() {
266
+ if (this.#state === "initial") {
267
+ return undefined;
268
+ }
269
+ return this.#syncOrAsync.Unwrap().error;
270
+ }
271
+ get state() {
272
+ if (this.#state === "initial") {
273
+ return "initial";
274
+ }
275
+ return this.#syncOrAsync.Unwrap().state;
276
+ }
277
+ once(fn) {
278
+ let resultFn;
279
+ if (this.#state === "initial") {
280
+ this.#state = "processing";
123
281
  try {
124
- const ret = fn(this.ctx);
125
- if (isPromise(ret)) {
126
- this._isPromise = true;
127
- ret
128
- .then(okFn)
129
- .catch(catchFn)
130
- .finally(() => {
131
- this._inProgress = undefined;
132
- });
282
+ const isSyncOrAsync = fn(this.#ctx);
283
+ if (isPromise(isSyncOrAsync)) {
284
+ this.#syncOrAsync = Option.Some(new AsyncResolveOnce(this.#ctx));
133
285
  }
134
286
  else {
135
- okFn(ret);
287
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce(this.#ctx));
136
288
  }
289
+ resultFn = () => isSyncOrAsync;
137
290
  }
138
291
  catch (e) {
139
- catchFn(e);
292
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce(this.#ctx));
293
+ resultFn = () => {
294
+ throw e;
295
+ };
140
296
  }
141
- if (!this._isPromise) {
142
- this._inProgress = undefined;
297
+ finally {
298
+ this.#state = "processed";
143
299
  }
144
300
  }
145
- if (this._isPromise) {
146
- return future.asPromise();
147
- }
148
301
  else {
302
+ resultFn = fn;
303
+ }
304
+ if (!this.#syncOrAsync) {
305
+ throw new Error("ResolveOnce.once impossible");
306
+ }
307
+ return this.#syncOrAsync.Unwrap().resolve(resultFn);
308
+ }
309
+ reset(fn) {
310
+ if (this.#state === "initial") {
149
311
  return this.once(fn);
150
312
  }
313
+ if (this.#state === "processing") {
314
+ console.warn("ResolveOnce.reset dropped was called while processing");
315
+ return undefined;
316
+ }
317
+ return this.#syncOrAsync.Unwrap().reset(fn);
151
318
  }
152
319
  }
153
320
  export class Keyed {
@@ -186,6 +353,9 @@ export class Keyed {
186
353
  }
187
354
  return this._map.has(key);
188
355
  }
356
+ delete(key) {
357
+ this._map.delete(key);
358
+ }
189
359
  unget(key) {
190
360
  const keyed = this._map.get(key);
191
361
  keyed?.reset();
@@ -202,14 +372,14 @@ export class KeyedResolvOnce extends Keyed {
202
372
  }
203
373
  *entries() {
204
374
  for (const [k, v] of this._map.entries()) {
205
- if (!v._onceDone) {
375
+ if (!v.ready) {
206
376
  continue;
207
377
  }
208
- if (v._onceError) {
209
- yield { key: k, value: Result.Err(v._onceError) };
378
+ if (v.error) {
379
+ yield { key: k, value: Result.Err(v.error) };
210
380
  }
211
381
  else {
212
- yield { key: k, value: Result.Ok(v._onceValue) };
382
+ yield { key: k, value: Result.Ok(v.value) };
213
383
  }
214
384
  }
215
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-once.js","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAqB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,MAAM,OAAO,UAAU;IACZ,GAAG,CAAK;IACjB,YAAY,GAAO,EAAE;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAAA,CAChB;IACD,KAAK,GAAS;IAAC,CAEd;IAEQ,aAAa,GAAmB,EAAE,CAAC;IAC5C,KAAK,GAAkB;QACrB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,IAAI,MAAM,EAAQ,CAAC;YACxC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAAA,CAC1B;IACD,KAAK,CAAC,IAA2B,EAAiB;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YAEV,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI;aACD,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACZ,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC3C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAU,CAAC,CAAC;aAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAAA,CACtC,CAAC,CAAC;QACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAAA,CAC1B;IACQ,WAAW,GAA2B,EAAE,CAAC;IAClD,KAAK,CAAC,GAAG,CAAC,EAAyB,EAAE,EAAW,EAAc;QAC5D,MAAM,MAAM,GAAG,IAAI,MAAM,EAAK,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAAA,CAC3B;CACF;AAED,MAAM,OAAO,WAAW;IACtB,SAAS,GAAG,KAAK,CAAC;IACT,YAAY,GAAgB,EAAE,CAAC;IACxC,OAAO,GAAG,KAAK,CAAC;IAChB,UAAU,CAAK;IACf,UAAU,CAAS;IACnB,UAAU,GAAG,KAAK,CAAC;IACnB,WAAW,CAAa;IAEf,GAAG,CAAO;IAEnB,YAAY,GAAS,EAAE;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAAA,CAChB;IAED,IAAI,KAAK,GAAY;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IAAA,CACvB;IAED,IAAI,KAAK,GAAkB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACrD;IAED,KAAK,GAAS;QACZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBAEb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,CAAC;IAAA,CACF;IAGD,IAAI,CAAI,EAAkB,EAAK;QAC7B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAiB,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,UAAU,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAiB,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC,UAA0B,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,KAAQ,EAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAEpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAAA,CAC9B,CAAC;YACF,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAEpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAAA,CAC9B,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAE1B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAEtB,GAAkB;yBAChB,IAAI,CAAC,IAAI,CAAC;yBACV,KAAK,CAAC,OAAO,CAAC;yBACd,OAAO,CAAC,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;oBAAA,CAC9B,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAmB,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,CAAU,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,SAAS,EAAkB,CAAC;QAC5C,CAAC;aAAM,CAAC;YAEN,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;CACF;AAMD,MAAM,OAAO,KAAK;IACG,IAAI,CAAe;IAE7B,OAAO,CAAgB;IAChC,YAAY,OAAsB,EAAE,MAA2B,EAAE;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAO,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAAA,CACjE;IAED,KAAK,CAAC,EAA8B,EAAW;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAA,CAC5B;IAED,QAAQ,CAAC,EAA8B,EAAW;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAAA,CAC/B;IAED,QAAQ,CAAC,MAAkB,EAAQ;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAAA,CAChC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAqB,EAAc;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAAA,CAC9B;IAED,GAAG,CAAC,GAAkB,EAAK;QACzB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,GAAG,GAAI,GAAe,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IAAA,CACd;IAED,GAAG,CAAC,GAAkB,EAAW;QAC/B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,GAAG,GAAI,GAAe,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAA,CAC3B;IAED,KAAK,CAAC,GAAM,EAAQ;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAAA,CACvB;IAED,KAAK,GAAS;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAAA,CACnB;CACF;AAOD,MAAM,OAAO,eAA+B,SAAQ,KAA2B;IAC7E,YAAY,EAAE,GAAwB,EAAE,EAAE;QACxC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,WAAW,CAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAAA,CAChD;IAED,CAAC,OAAO,GAAoC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,CAAC;iBAAM,CAAC;gBAEN,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAI,CAAC,CAAC,UAAW,CAAC,EAAE,CAAC;YACvD,CAAC;QACH,CAAC;IAAA,CACF;IAMD,MAAM,GAAoB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAAA,CACnC;CACF;AAED,MAAM,OAAO,cAA8B,SAAQ,KAA0B;IAC3E,YAAY,EAAE,GAAwB,EAAE,EAAE;QACxC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAAA,CAC/C;CACF;AAED,MAAM,aAAa;IACR,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;IAE5C,IAAI,CAAI,EAAW,EAA+B;QAChD,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAAA,CACxC;CACF;AAED,MAAM,UAAU,IAAI,CAAI,EAAW,EAA+B;IAChE,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,CACtB"}
1
+ {"version":3,"file":"resolve-once.js","sourceRoot":"","sources":["../../../src/resolve-once.ts"],"names":[],"mappings":"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"}