@adviser/cement 0.4.66 → 0.4.67

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.
@@ -182,13 +182,19 @@ export interface ResolveOnceIf<R, CTX = void> {
182
182
  * @internal
183
183
  */
184
184
  export class SyncResolveOnce<T, CTX = void> {
185
- state: ResolveState = "initial";
186
-
187
185
  #value?: T;
188
186
  #error?: Error;
189
187
 
190
188
  readonly queueLength = 0;
191
189
 
190
+ readonly #state: StateInstance;
191
+ readonly #rOnce: ResolveOnce<T, CTX>;
192
+
193
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance) {
194
+ this.#state = state;
195
+ this.#rOnce = rOnce;
196
+ }
197
+
192
198
  /**
193
199
  * Gets the cached value if available.
194
200
  */
@@ -207,12 +213,7 @@ export class SyncResolveOnce<T, CTX = void> {
207
213
  * Returns true if the function has been executed.
208
214
  */
209
215
  get ready(): boolean {
210
- return this.state === "processed";
211
- }
212
-
213
- readonly #ctx?: CTX;
214
- constructor(ctx?: CTX) {
215
- this.#ctx = ctx;
216
+ return this.#state.isProcessed();
216
217
  }
217
218
 
218
219
  /**
@@ -224,14 +225,16 @@ export class SyncResolveOnce<T, CTX = void> {
224
225
  * @throws Error if the function returned a promise (use AsyncResolveOnce instead)
225
226
  */
226
227
  resolve(fn: (ctx?: CTX) => T): T {
227
- if (this.state === "initial") {
228
- this.state = "processed";
228
+ if (this.#state.isProcessing()) {
229
229
  try {
230
- this.#value = fn(this.#ctx);
230
+ this.#value = fn(this.#rOnce._ctx);
231
231
  } catch (e) {
232
232
  this.#error = e as Error;
233
+ } finally {
234
+ this.#state.setProcessed();
235
+ this.#rOnce.setProcessed(this.#state);
233
236
  }
234
- if (isPromise(this.value)) {
237
+ if (isPromise(this.#value)) {
235
238
  throw new Error("SyncResolveOnce.once fn returned a promise");
236
239
  }
237
240
  }
@@ -248,10 +251,10 @@ export class SyncResolveOnce<T, CTX = void> {
248
251
  * @returns The result if fn provided, undefined otherwise
249
252
  */
250
253
  reset(fn?: (c?: CTX) => T): T | undefined {
251
- this.state = "initial";
252
254
  this.#value = undefined;
253
255
  this.#error = undefined;
254
256
  if (fn) {
257
+ this.#state.setProcessing();
255
258
  return this.resolve(fn);
256
259
  }
257
260
  return undefined as T;
@@ -263,15 +266,18 @@ export class SyncResolveOnce<T, CTX = void> {
263
266
  * Handles queuing of multiple concurrent requests for the same async operation.
264
267
  * @internal
265
268
  */
266
- class AsyncResolveItem<T> {
267
- readonly id = Math.random();
268
- #state: ResolveState = "initial";
269
+ class AsyncResolveItem<T, CTX> {
270
+ readonly id: number = Math.random();
269
271
  readonly #toResolve: Promise<UnPromisify<T>>;
270
272
  #value: Option<UnPromisify<T>> = Option.None();
271
273
  #error?: Error;
274
+ readonly #state: StateInstance;
275
+ readonly #rOnce: ResolveOnce<T, CTX>;
272
276
 
273
- constructor(fn: Promise<UnPromisify<T>>) {
277
+ constructor(fn: Promise<UnPromisify<T>>, rOnce: ResolveOnce<T, CTX>, state: StateInstance) {
274
278
  this.#toResolve = fn;
279
+ this.#state = state;
280
+ this.#rOnce = rOnce;
275
281
  }
276
282
 
277
283
  get value(): UnPromisify<T> | undefined {
@@ -292,7 +298,7 @@ class AsyncResolveItem<T> {
292
298
  * Returns true if this item has completed and has no pending futures.
293
299
  */
294
300
  isDisposable(): boolean {
295
- return this.#state === "processed" && this.#queue.length === 0;
301
+ return this.#state.isProcessed() && this.#queue.length === 0;
296
302
  }
297
303
 
298
304
  #resolveFuture(future?: Future<UnPromisify<T>>): void {
@@ -315,15 +321,14 @@ class AsyncResolveItem<T> {
315
321
  if (this.#value.IsSome()) {
316
322
  return Promise.resolve(this.#value.Unwrap());
317
323
  }
318
- throw new Error("AsyncResolveItem.#promiseResult impossible");
324
+ throw new Error(`AsyncResolveItem.#promiseResult impossible: ${this.#state.getResolveState()}`);
319
325
  }
320
326
 
321
327
  /**
322
328
  * Resolves the async operation, queuing the request if already in progress.
323
329
  */
324
330
  resolve(): T {
325
- if (this.#state === "initial") {
326
- this.#state = "waiting";
331
+ if (this.#state.isWaiting()) {
327
332
  const future = new Future<UnPromisify<T>>();
328
333
  this.#queue.push(future);
329
334
  this.#toResolve
@@ -334,22 +339,24 @@ class AsyncResolveItem<T> {
334
339
  this.#error = e as Error;
335
340
  })
336
341
  .finally(() => {
337
- this.#state = "processed";
342
+ this.#state.setProcessed();
343
+ this.#rOnce.setProcessed(this.#state);
338
344
  while (this.#queue.length > 0) {
339
345
  this.#resolveFuture(this.#queue.shift());
340
346
  }
341
347
  });
342
348
  return future.asPromise() as T;
343
349
  }
344
- if (this.#state === "processed") {
350
+
351
+ if (this.#state.isProcessed()) {
345
352
  return this.#promiseResult() as T;
346
353
  }
347
- if (this.#state === "waiting") {
348
- const future = new Future<UnPromisify<T>>();
349
- this.#queue.push(future);
350
- return future.asPromise() as T;
351
- }
352
- throw new Error("AsyncResolveItem.resolve impossible");
354
+ // if (this.#state.isWaiting()) {
355
+ // const future = new Future<UnPromisify<T>>();
356
+ // this.#queue.push(future);
357
+ // return future.asPromise() as T;
358
+ // }
359
+ throw new Error(`AsyncResolveItem.resolve impossible: ${this.#state.getResolveState()}`);
353
360
  }
354
361
  }
355
362
 
@@ -364,17 +371,30 @@ class AsyncResolveItem<T> {
364
371
  * @template CTX - Optional context type
365
372
  * @internal
366
373
  */
367
- export class AsyncResolveOnce<T, CTX = void> {
368
- state: ResolveState = "initial";
369
374
 
370
- readonly #queue: AsyncResolveItem<T>[] = [];
375
+ function isAsyncResolveOnce<T, CTX>(obj: SyncOrAsync<T, CTX>): obj is Option<AsyncResolveOnce<T, CTX>> {
376
+ return obj.IsSome() && obj.Unwrap() instanceof AsyncResolveOnce;
377
+ }
371
378
 
372
- readonly #ctx?: CTX;
373
- constructor(ctx?: CTX) {
374
- this.#ctx = ctx;
379
+ export class AsyncResolveOnce<T, CTX = void> {
380
+ // #state: ResolveState = "initial";
381
+ readonly #state: StateInstance;
382
+
383
+ readonly #queue: AsyncResolveItem<T, CTX>[];
384
+
385
+ readonly #rOnce: ResolveOnce<T, CTX>;
386
+ //readonly #ctx?: CTX;
387
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance, prev: SyncOrAsync<T, CTX>) {
388
+ this.#state = state;
389
+ this.#rOnce = rOnce;
390
+ if (isAsyncResolveOnce(prev)) {
391
+ this.#queue = [...prev.unwrap().#queue];
392
+ } else {
393
+ this.#queue = [];
394
+ }
375
395
  }
376
396
 
377
- #active(): AsyncResolveItem<T> {
397
+ #active(): AsyncResolveItem<T, CTX> {
378
398
  const r = this.#queue[this.#queue.length - 1];
379
399
  if (!r) {
380
400
  throw new Error("AsyncResolveOnce.#active impossible");
@@ -389,18 +409,11 @@ export class AsyncResolveOnce<T, CTX = void> {
389
409
  return this.#queue.reduce((acc, r) => acc + r.queuelength, this.#queue.length);
390
410
  }
391
411
 
392
- /**
393
- * Returns true if the async operation has started.
394
- */
395
- get ready(): boolean {
396
- return this.state !== "initial";
397
- }
398
-
399
412
  /**
400
413
  * Gets the cached resolved value if available.
401
414
  */
402
415
  get value(): UnPromisify<T> | undefined {
403
- if (this.state === "initial") {
416
+ if (this.#state.isInitial()) {
404
417
  return undefined;
405
418
  }
406
419
  return this.#active().value;
@@ -410,7 +423,7 @@ export class AsyncResolveOnce<T, CTX = void> {
410
423
  * Gets the cached error if one occurred.
411
424
  */
412
425
  get error(): Error | undefined {
413
- if (this.state === "initial") {
426
+ if (this.#state.isInitial()) {
414
427
  return undefined;
415
428
  }
416
429
  return this.#active().error;
@@ -424,11 +437,11 @@ export class AsyncResolveOnce<T, CTX = void> {
424
437
  * @returns A promise that resolves to the function's result
425
438
  */
426
439
  resolve(fn: (ctx?: CTX) => T): T {
427
- if (this.state === "initial") {
428
- this.state = "waiting";
440
+ if (this.#state.isProcessing()) {
441
+ this.#state.setWaiting();
429
442
  let promiseResult: Promise<UnPromisify<T>>;
430
443
  try {
431
- const couldBePromise = fn(this.#ctx);
444
+ const couldBePromise = fn(this.#rOnce._ctx);
432
445
  if (!isPromise(couldBePromise)) {
433
446
  promiseResult = Promise.resolve(couldBePromise as UnPromisify<T>);
434
447
  } else {
@@ -437,7 +450,7 @@ export class AsyncResolveOnce<T, CTX = void> {
437
450
  } catch (e) {
438
451
  promiseResult = Promise.reject(e as Error);
439
452
  }
440
- this.#queue.push(new AsyncResolveItem(promiseResult));
453
+ this.#queue.push(new AsyncResolveItem<T, CTX>(promiseResult, this.#rOnce, this.#state));
441
454
  }
442
455
  // remove all disposable items
443
456
  this.#queue
@@ -457,7 +470,7 @@ export class AsyncResolveOnce<T, CTX = void> {
457
470
  * @returns The result if fn provided, undefined otherwise
458
471
  */
459
472
  reset(fn?: (c?: CTX) => T): T {
460
- this.state = "initial";
473
+ this.#state.setProcessing();
461
474
  if (fn) {
462
475
  return this.resolve(fn);
463
476
  }
@@ -489,91 +502,187 @@ export class AsyncResolveOnce<T, CTX = void> {
489
502
  * expensiveOp.reset();
490
503
  * ```
491
504
  */
492
- export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
505
+
506
+ export interface ResolveOnceOpts {
507
+ readonly resetAfter?: number; // milliseconds after which to reset the cached value
508
+ }
509
+
510
+ class StateInstance {
511
+ readonly id: number = Math.random();
493
512
  #state: ResolveState = "initial";
494
513
 
495
- #syncOrAsync: Option<SyncResolveOnce<never, CTX> | AsyncResolveOnce<never, CTX>> = Option.None();
514
+ // get state(): ResolveState {
515
+ // return this.#state;
516
+ // }
517
+ getResolveState(): ResolveState {
518
+ return this.#state;
519
+ }
520
+
521
+ isInitial(): boolean {
522
+ return this.#state === "initial";
523
+ }
496
524
 
497
- readonly #ctx?: CTX;
498
- constructor(ctx?: CTX) {
499
- this.#ctx = ctx;
525
+ isProcessed(): boolean {
526
+ return this.#state === "processed";
527
+ }
528
+ setProcessed(): void {
529
+ this.#state = "processed";
530
+ }
531
+
532
+ isProcessing(): boolean {
533
+ return this.#state === "processing";
534
+ }
535
+ setProcessing(): void {
536
+ this.#state = "processing";
537
+ }
538
+
539
+ isWaiting(): boolean {
540
+ return this.#state === "waiting";
541
+ }
542
+
543
+ setWaiting(): void {
544
+ this.#state = "waiting";
545
+ }
546
+
547
+ equals(other: StateInstance): boolean {
548
+ return this.id === other.id;
549
+ }
550
+ }
551
+
552
+ type SyncOrAsync<T, CTX> = Option<SyncResolveOnce<T, CTX> | AsyncResolveOnce<T, CTX>>;
553
+
554
+ export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
555
+ #state = new StateInstance();
556
+
557
+ #syncOrAsync: SyncOrAsync<T, CTX> = Option.None();
558
+
559
+ readonly #opts: ResolveOnceOpts;
560
+ resetAfterTimer?: ReturnType<typeof setTimeout>;
561
+
562
+ readonly _ctx?: CTX;
563
+ constructor(ctx?: CTX, opts?: ResolveOnceOpts) {
564
+ this._ctx = ctx;
565
+ this.#opts = opts ?? {};
566
+ }
567
+
568
+ get state(): ResolveState {
569
+ return this.#state.getResolveState();
570
+ }
571
+
572
+ // activeState(state: StateInstance): StateInstance | undefined {
573
+ // if (this.#state.equals(state)) {
574
+ // return this.#state;
575
+ // }
576
+ // return undefined;
577
+ // }
578
+
579
+ setProcessed(state: StateInstance): void {
580
+ if (this.resetAfterTimer) {
581
+ clearTimeout(this.resetAfterTimer);
582
+ }
583
+ if (this.#state.equals(state)) {
584
+ this.#state.setProcessed();
585
+ if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
586
+ this.resetAfterTimer = setTimeout(() => {
587
+ this.reset();
588
+ }, this.#opts.resetAfter);
589
+ }
590
+ }
500
591
  }
501
592
 
502
593
  get ready(): boolean {
503
- return this.#state !== "initial" && this.#syncOrAsync.Unwrap().ready;
594
+ return !this.#state.isInitial();
504
595
  }
505
596
 
506
597
  get value(): UnPromisify<T> | undefined {
507
- if (this.#state === "initial") {
598
+ if (this.#state.isInitial()) {
508
599
  return undefined;
509
600
  }
510
601
  return this.#syncOrAsync.Unwrap().value as UnPromisify<T>;
511
602
  }
512
603
 
513
604
  get queueLength(): number {
514
- if (this.#state === "initial") {
605
+ if (this.#state.isInitial()) {
515
606
  return 0;
516
607
  }
517
608
  return this.#syncOrAsync.Unwrap().queueLength;
518
609
  }
519
610
 
520
611
  get error(): Error | undefined {
521
- if (this.#state === "initial") {
612
+ if (this.#state.isInitial()) {
522
613
  return undefined;
523
614
  }
524
615
  return this.#syncOrAsync.Unwrap().error;
525
616
  }
526
617
 
527
- get state(): ResolveState {
528
- if (this.#state === "initial") {
529
- return "initial";
530
- }
531
- return this.#syncOrAsync.Unwrap().state;
532
- }
618
+ // get state(): ResolveState {
619
+ // return this.#state;
620
+ // }
621
+ // set state(value: ResolveState) {
622
+ // console.log(`ResolveOnce.state ${this.#state} -> ${value}`);
623
+ // if (value === "processed") {
624
+ // if (this.resetAfterTimer) {
625
+ // clearTimeout(this.resetAfterTimer);
626
+ // }
627
+ // if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
628
+ // console.log("setting reset timer for", this.#opts.resetAfter);
629
+ // this.resetAfterTimer = setTimeout(() => {
630
+ // console.log("resetting after", this.#opts.resetAfter);
631
+ // this.reset();
632
+ // }, this.#opts.resetAfter);
633
+ // }
634
+ // }
635
+ // this.#state = value;
636
+ // }
533
637
 
534
638
  once<R>(fn: (c: CTX) => R): ResultOnce<R> {
535
639
  let resultFn: (ctx: CTX) => R;
536
- if (this.#state === "initial") {
537
- this.#state = "processing";
640
+ if (this.#state.isInitial()) {
641
+ const state = this.#state;
538
642
  try {
643
+ state.setProcessing();
539
644
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
540
- const isSyncOrAsync = fn(this.#ctx ?? ({} as CTX)) as R;
645
+ const isSyncOrAsync = fn(this._ctx ?? ({} as CTX)) as R;
541
646
  if (isPromise(isSyncOrAsync)) {
542
- this.#syncOrAsync = Option.Some(new AsyncResolveOnce<never, CTX>(this.#ctx));
647
+ this.#syncOrAsync = Option.Some(new AsyncResolveOnce<T, CTX>(this, state, this.#syncOrAsync));
543
648
  } else {
544
- this.#syncOrAsync = Option.Some(new SyncResolveOnce<never, CTX>(this.#ctx));
649
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
545
650
  }
546
651
  resultFn = (): R => isSyncOrAsync;
547
652
  } catch (e) {
548
- this.#syncOrAsync = Option.Some(new SyncResolveOnce<never, CTX>(this.#ctx));
653
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
549
654
  resultFn = (): R => {
550
655
  throw e;
551
656
  };
552
- } finally {
553
- this.#state = "processed";
554
657
  }
555
658
  } else {
556
659
  resultFn = fn;
557
660
  }
558
661
  if (!this.#syncOrAsync) {
559
- throw new Error("ResolveOnce.once impossible");
662
+ throw new Error(`ResolveOnce.once impossible: state=${this.#state.getResolveState()}`);
560
663
  }
561
664
  return this.#syncOrAsync.Unwrap().resolve(resultFn as (c?: CTX) => never) as ResultOnce<R>;
562
665
  }
563
666
 
564
667
  reset<R>(fn?: (c: CTX) => R): ResultOnce<R> {
565
- if (this.#state === "initial") {
668
+ if (this.#state.isInitial()) {
566
669
  if (!fn) {
567
670
  return undefined as ResultOnce<R>;
568
671
  }
569
672
  return this.once(fn as (c: CTX) => R);
570
673
  }
571
- if (this.#state === "processing") {
674
+ if (this.#state.isProcessing()) {
572
675
  // eslint-disable-next-line no-console
573
676
  console.warn("ResolveOnce.reset dropped was called while processing");
574
677
  return undefined as ResultOnce<R>;
575
678
  }
576
- return this.#syncOrAsync.Unwrap().reset(fn as (c?: CTX) => never) as ResultOnce<R>;
679
+ let ret = undefined as ResultOnce<R>;
680
+ this.#state = new StateInstance();
681
+ if (fn) {
682
+ ret = this.once(fn as (c: CTX) => R);
683
+ // ret = this.#syncOrAsync.Unwrap().reset(fn as (c?: CTX) => never) as ResultOnce<R>
684
+ }
685
+ return ret;
577
686
  }
578
687
  }
579
688
 
@@ -998,8 +1107,11 @@ export class KeyedResolvSeq<
998
1107
  * @internal
999
1108
  */
1000
1109
  class LazyContainer<T> {
1001
- readonly resolveOnce = new ResolveOnce<T>();
1110
+ readonly resolveOnce: ResolveOnce<T>;
1002
1111
 
1112
+ constructor(opts?: ResolveOnceOpts) {
1113
+ this.resolveOnce = new ResolveOnce<T>(undefined, opts);
1114
+ }
1003
1115
  call<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): () => Return {
1004
1116
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any
1005
1117
  return (...args: Args) => this.resolveOnce.once(() => fn(...args) as any) as unknown as Return;
@@ -1029,7 +1141,11 @@ class LazyContainer<T> {
1029
1141
  * getConfig(); // Returns cached config without logging
1030
1142
  * ```
1031
1143
  */
1032
- export function Lazy<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): (...args: Args) => Return {
1033
- const lazy = new LazyContainer<Return>();
1144
+
1145
+ export function Lazy<Args extends readonly unknown[], Return>(
1146
+ fn: (...args: Args) => Return,
1147
+ opts?: ResolveOnceOpts,
1148
+ ): (...args: Args) => Return {
1149
+ const lazy = new LazyContainer<Return>(opts);
1034
1150
  return lazy.call(fn);
1035
1151
  }
@@ -2,6 +2,7 @@ import { Future } from "./future.js";
2
2
  import { UnPromisify } from "./is-promise.js";
3
3
  import { UnregFn } from "./lru-map-set.js";
4
4
  import { Result } from "./result.js";
5
+ import { Option } from "./option.js";
5
6
  import { KeyedIf, KeyedNg, KeyedNgItem, KeyedNgItemWithoutValue, KeyedNgOptions } from "./keyed-ng.js";
6
7
  interface ResolveSeqItem<C, T, R> {
7
8
  readonly future: Future<T>;
@@ -30,34 +31,51 @@ export interface ResolveOnceIf<R, CTX = void> {
30
31
  }
31
32
  export declare class SyncResolveOnce<T, CTX = void> {
32
33
  #private;
33
- state: ResolveState;
34
34
  readonly queueLength: number;
35
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance);
35
36
  get value(): T | undefined;
36
37
  get error(): Error | undefined;
37
38
  get ready(): boolean;
38
- constructor(ctx?: CTX);
39
39
  resolve(fn: (ctx?: CTX) => T): T;
40
40
  reset(fn?: (c?: CTX) => T): T | undefined;
41
41
  }
42
42
  export declare class AsyncResolveOnce<T, CTX = void> {
43
43
  #private;
44
- state: ResolveState;
45
- constructor(ctx?: CTX);
44
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance, prev: SyncOrAsync<T, CTX>);
46
45
  get queueLength(): number;
47
- get ready(): boolean;
48
46
  get value(): UnPromisify<T> | undefined;
49
47
  get error(): Error | undefined;
50
48
  resolve(fn: (ctx?: CTX) => T): T;
51
49
  reset(fn?: (c?: CTX) => T): T;
52
50
  }
51
+ export interface ResolveOnceOpts {
52
+ readonly resetAfter?: number;
53
+ }
54
+ declare class StateInstance {
55
+ #private;
56
+ readonly id: number;
57
+ getResolveState(): ResolveState;
58
+ isInitial(): boolean;
59
+ isProcessed(): boolean;
60
+ setProcessed(): void;
61
+ isProcessing(): boolean;
62
+ setProcessing(): void;
63
+ isWaiting(): boolean;
64
+ setWaiting(): void;
65
+ equals(other: StateInstance): boolean;
66
+ }
67
+ type SyncOrAsync<T, CTX> = Option<SyncResolveOnce<T, CTX> | AsyncResolveOnce<T, CTX>>;
53
68
  export declare class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
54
69
  #private;
55
- constructor(ctx?: CTX);
70
+ resetAfterTimer?: ReturnType<typeof setTimeout>;
71
+ readonly _ctx?: CTX;
72
+ constructor(ctx?: CTX, opts?: ResolveOnceOpts);
73
+ get state(): ResolveState;
74
+ setProcessed(state: StateInstance): void;
56
75
  get ready(): boolean;
57
76
  get value(): UnPromisify<T> | undefined;
58
77
  get queueLength(): number;
59
78
  get error(): Error | undefined;
60
- get state(): ResolveState;
61
79
  once<R>(fn: (c: CTX) => R): ResultOnce<R>;
62
80
  reset<R>(fn?: (c: CTX) => R): ResultOnce<R>;
63
81
  }
@@ -98,6 +116,6 @@ export declare class KeyedResolvOnce<T extends WithOptionalReset<PT>, K = string
98
116
  export declare class KeyedResolvSeq<VALUEType extends NonNullable<unknown>, KEYType = string, CTX extends NonNullable<object> = object> extends KeyedNg<KEYType, ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>, CTX> {
99
117
  constructor(kp?: Partial<Omit<KeyedNgOptions<KEYType, VALUEType, CTX>, "createValue">>);
100
118
  }
101
- export declare function Lazy<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): (...args: Args) => Return;
119
+ export declare function Lazy<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return, opts?: ResolveOnceOpts): (...args: Args) => Return;
102
120
  export {};
103
121
  //# 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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"}