@flighthq/loader 0.3.0-next.1032.e2b99fc → 0.3.0-next.1162.e90e518

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.
@@ -1 +1 @@
1
- {"version":3,"file":"resourceLoader.d.ts","sourceRoot":"","sources":["../src/resourceLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EAEvB,MAAM,0BAA0B,CAAC;AAuHlC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAqC/D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAiC9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAelE;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,cAAc,GAAG,yBAAyB,CAWjG;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,sBAAsB,CASrG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBtF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAK9D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,kBAAkB,CAAC,CAAC,CAAC,CAkEvB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA0BhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAM/D;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAOhG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAY9D"}
1
+ {"version":3,"file":"resourceLoader.d.ts","sourceRoot":"","sources":["../src/resourceLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EAEvB,MAAM,0BAA0B,CAAC;AA6HlC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAyC/D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAkC9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAelE;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,cAAc,GAAG,yBAAyB,CAWjG;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,sBAAsB,CASrG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBtF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAK9D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,kBAAkB,CAAC,CAAC,CAAC,CAmEvB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAiChE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAM/D;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAOhG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAY9D"}
@@ -12,6 +12,7 @@ function acquirePendingEntry() {
12
12
  abortController: new AbortController(),
13
13
  bytesHint: 0,
14
14
  bytesLoaded: 0,
15
+ generation: 0,
15
16
  group: undefined,
16
17
  key: '',
17
18
  onBytesProgress: undefined,
@@ -66,8 +67,12 @@ function consumeTokens(bucket, cost) {
66
67
  }
67
68
  export function cancelResourceLoad(loader) {
68
69
  const internal = loader;
69
- if (!internal.started || internal.cancelled)
70
+ if (internal.cancelled)
70
71
  return;
72
+ // Cancelling before start is a real cancellation, not a no-op. It used to return early, which left
73
+ // every queued handle's promise pending forever — a caller that queued a batch, changed its mind,
74
+ // and awaited the handles deadlocked. A cancel that does not cancel is the half-wired feature this
75
+ // package's charter calls a defect outright.
71
76
  internal.cancelled = true;
72
77
  const cancelError = new DOMException('Load cancelled', 'AbortError');
73
78
  // Abort all in-flight entries — runEntry will catch the abort and call checkCompleteAfterCancel
@@ -87,7 +92,7 @@ export function cancelResourceLoad(loader) {
87
92
  };
88
93
  internal.reports.push(report);
89
94
  entry.reject(cancelError);
90
- internal.loaded++;
95
+ _countEntrySettled(internal, entry);
91
96
  releasePendingEntry(entry);
92
97
  }
93
98
  internal.pending = [];
@@ -107,6 +112,7 @@ export function createResourceLoader(options) {
107
112
  cancelled: false,
108
113
  dedupeMap: new Map(),
109
114
  errorPolicy: opts.errorPolicy ?? 'continue',
115
+ generation: 0,
110
116
  inFlight: new Set(),
111
117
  itemCounter: 0,
112
118
  itemSignals: null,
@@ -234,6 +240,7 @@ export function queueResourceLoad(loader, item) {
234
240
  // AbortController is fresh from acquirePendingEntry / releasePendingEntry
235
241
  entry.bytesHint = bytesHint;
236
242
  entry.bytesLoaded = 0;
243
+ entry.generation = internal.generation;
237
244
  entry.group = group;
238
245
  entry.key = key;
239
246
  entry.onBytesProgress = onBytesProgress;
@@ -260,7 +267,14 @@ export function queueResourceLoad(loader, item) {
260
267
  }
261
268
  export function resetResourceLoader(loader) {
262
269
  const internal = loader;
263
- // Abort all in-flight loads before reset
270
+ // Bump the generation first: every entry already dispatched is now orphaned, so when its abort
271
+ // finally rejects, runEntry discards it instead of recording a failure against the batch that
272
+ // replaced it. Without this an in-flight load surviving a reset lands on the *next* batch — a
273
+ // phantom onError for a key the new batch never queued, an extra report, and an inflated loaded
274
+ // count that can complete the new batch early.
275
+ internal.generation++;
276
+ // Abort all in-flight loads before reset. They are not released here: they are still running, and
277
+ // returning them to the pool would hand a live entry to the next queueResourceLoad.
264
278
  for (const entry of internal.inFlight) {
265
279
  entry.abortController.abort();
266
280
  }
@@ -366,6 +380,10 @@ function abortSignalPromise(signal) {
366
380
  });
367
381
  }
368
382
  async function runEntry(entry, internal, loader, attempt) {
383
+ if (_isOrphaned(entry, internal)) {
384
+ releasePendingEntry(entry);
385
+ return;
386
+ }
369
387
  if (internal.itemSignals !== null) {
370
388
  emitSignal(internal.itemSignals.onItemStart, entry.key);
371
389
  }
@@ -383,10 +401,15 @@ async function runEntry(entry, internal, loader, attempt) {
383
401
  const value = await Promise.race([entry.wrappedLoad(signal), abortSignalPromise(signal)]);
384
402
  if (timeoutId !== undefined)
385
403
  clearTimeout(timeoutId);
404
+ if (_isOrphaned(entry, internal)) {
405
+ internal.inFlight.delete(entry);
406
+ releasePendingEntry(entry);
407
+ return;
408
+ }
386
409
  // If cancelled between the race resolving and here, treat as cancelled
387
410
  if (internal.cancelled) {
388
411
  internal.inFlight.delete(entry);
389
- internal.loaded++;
412
+ _countEntrySettled(internal, entry);
390
413
  releasePendingEntry(entry);
391
414
  checkCompleteAfterCancel(internal, loader);
392
415
  return;
@@ -401,7 +424,6 @@ async function runEntry(entry, internal, loader, attempt) {
401
424
  status: 'loaded',
402
425
  };
403
426
  internal.reports.push(report);
404
- internal.weightLoaded += entry.weight;
405
427
  entry.resolve(value);
406
428
  if (internal.itemSignals !== null) {
407
429
  emitSignal(internal.itemSignals.onItemComplete, entry.key, value);
@@ -411,6 +433,11 @@ async function runEntry(entry, internal, loader, attempt) {
411
433
  catch (error) {
412
434
  if (timeoutId !== undefined)
413
435
  clearTimeout(timeoutId);
436
+ if (_isOrphaned(entry, internal)) {
437
+ internal.inFlight.delete(entry);
438
+ releasePendingEntry(entry);
439
+ return;
440
+ }
414
441
  // If cancelled, record as cancelled and update batch completion
415
442
  if (internal.cancelled) {
416
443
  const report = {
@@ -424,7 +451,7 @@ async function runEntry(entry, internal, loader, attempt) {
424
451
  internal.reports.push(report);
425
452
  entry.reject(error);
426
453
  internal.inFlight.delete(entry);
427
- internal.loaded++;
454
+ _countEntrySettled(internal, entry);
428
455
  releasePendingEntry(entry);
429
456
  checkCompleteAfterCancel(internal, loader);
430
457
  return;
@@ -440,7 +467,7 @@ async function runEntry(entry, internal, loader, attempt) {
440
467
  // Check again after delay in case cancelled
441
468
  if (internal.cancelled) {
442
469
  internal.inFlight.delete(entry);
443
- internal.loaded++;
470
+ _countEntrySettled(internal, entry);
444
471
  releasePendingEntry(entry);
445
472
  checkCompleteAfterCancel(internal, loader);
446
473
  return;
@@ -473,6 +500,24 @@ async function runEntry(entry, internal, loader, attempt) {
473
500
  settleEntry(entry, internal, loader);
474
501
  }
475
502
  }
503
+ // Records one entry as finished, whatever its outcome. Both counters advance together and in exactly
504
+ // one place, because "how much of the batch is done" is one question with two units: `loaded` counts
505
+ // items, `weightLoaded` counts the weight the caller assigned them.
506
+ //
507
+ // The weight half used to advance only on success, so any batch containing a failure or a cancellation
508
+ // left getResourceLoadProgress permanently short of 1 — a weighted progress bar stuck at 0.67 on a
509
+ // batch that had already emitted onComplete. A failed item is still a finished item; progress measures
510
+ // completion, not success. (The per-item outcome is in its ResourceLoadReport.status, which is where a
511
+ // caller asks whether the batch went well.)
512
+ function _countEntrySettled(internal, entry) {
513
+ internal.loaded++;
514
+ internal.weightLoaded += entry.weight;
515
+ }
516
+ // True when `entry` was dispatched under a previous generation — i.e. resetResourceLoader ran while it
517
+ // was in flight — so nothing it reports belongs to the current batch.
518
+ function _isOrphaned(entry, internal) {
519
+ return entry.generation !== internal.generation;
520
+ }
476
521
  function checkCompleteAfterCancel(internal, loader) {
477
522
  if (internal.inFlight.size === 0) {
478
523
  emitSignal(loader.onProgress, internal.loaded, internal.total);
@@ -492,7 +537,7 @@ function cancelRemainingEntries(internal) {
492
537
  };
493
538
  internal.reports.push(report);
494
539
  entry.reject(new DOMException('Load skipped due to fail-fast error policy', 'AbortError'));
495
- internal.loaded++;
540
+ _countEntrySettled(internal, entry);
496
541
  releasePendingEntry(entry);
497
542
  }
498
543
  internal.pending = [];
@@ -515,7 +560,7 @@ function delay(ms) {
515
560
  }
516
561
  function settleEntry(entry, internal, loader) {
517
562
  internal.inFlight.delete(entry);
518
- internal.loaded++;
563
+ _countEntrySettled(internal, entry);
519
564
  emitSignal(loader.onProgress, internal.loaded, internal.total);
520
565
  releasePendingEntry(entry);
521
566
  if (internal.loaded === internal.total) {
@@ -1 +1 @@
1
- {"version":3,"file":"resourceLoader.js","sourceRoot":"","sources":["../src/resourceLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resourceLoader.js","sourceRoot":"","sources":["../src/resourceLoader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/loader",
3
- "version": "0.3.0-next.1032.e2b99fc",
3
+ "version": "0.3.0-next.1162.e90e518",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -36,8 +36,8 @@
36
36
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
37
37
  },
38
38
  "dependencies": {
39
- "@flighthq/signals": "0.3.0-next.1032.e2b99fc",
40
- "@flighthq/types": "0.3.0-next.1032.e2b99fc"
39
+ "@flighthq/signals": "0.3.0-next.1162.e90e518",
40
+ "@flighthq/types": "0.3.0-next.1162.e90e518"
41
41
  },
42
42
  "devDependencies": {
43
43
  "typescript": "^5.3.0"
@@ -231,14 +231,43 @@ describe('cancelResourceLoad', () => {
231
231
  await expect(handle.promise).rejects.toThrow();
232
232
  });
233
233
 
234
- it('is a no-op if loader is not started', () => {
234
+ it('cancels a batch that has not started, instead of stranding its promises', async () => {
235
+ // This replaces an assertion that cancel-before-start emits nothing. It did emit nothing — and it
236
+ // also left every queued handle pending forever, so a caller that queued a batch, changed its
237
+ // mind, and awaited the handles simply hung. Nothing observable said so, because the old test
238
+ // only watched the signal.
235
239
  const loader = createResourceLoader();
236
240
  let cancelled = false;
237
241
  connectSignal(loader.onCancel, () => {
238
242
  cancelled = true;
239
243
  });
244
+ const handle = queueResourceLoad(loader, { key: 'a', load: () => Promise.resolve(1) });
240
245
  cancelResourceLoad(loader);
241
- expect(cancelled).toBe(false);
246
+ await expect(handle.promise).rejects.toThrow();
247
+ expect(cancelled).toBe(true);
248
+ });
249
+
250
+ it('emits onCancel with no queued items, and stays a no-op on a second call', () => {
251
+ const loader = createResourceLoader();
252
+ let cancelCount = 0;
253
+ connectSignal(loader.onCancel, () => {
254
+ cancelCount++;
255
+ });
256
+ cancelResourceLoad(loader);
257
+ cancelResourceLoad(loader);
258
+ expect(cancelCount).toBe(1);
259
+ });
260
+
261
+ it('reports a cancelled-before-start item as cancelled', async () => {
262
+ const loader = createResourceLoader();
263
+ let reports: readonly ResourceLoadReport[] = [];
264
+ connectSignal(loader.onComplete, (r) => {
265
+ reports = r;
266
+ });
267
+ queueResourceLoad(loader, { key: 'a', load: () => Promise.resolve(1) }).promise.catch(() => {});
268
+ cancelResourceLoad(loader);
269
+ await Promise.resolve();
270
+ expect(reports.map((r) => r.status)).toEqual(['cancelled']);
242
271
  });
243
272
 
244
273
  it('is a no-op if already cancelled', async () => {
@@ -794,6 +823,59 @@ describe('queueResourceLoad', () => {
794
823
  });
795
824
  });
796
825
 
826
+ describe('reset while loading', () => {
827
+ // The regression this pins: an in-flight load surviving a reset used to settle against whatever
828
+ // batch had replaced it — a phantom onError for a key the new batch never queued, an extra report,
829
+ // and an inflated loaded count that could complete the new batch early.
830
+ it('discards an in-flight load rather than settling it against the next batch', async () => {
831
+ const loader = createResourceLoader();
832
+ const errorKeys: string[] = [];
833
+ connectSignal(loader.onError, (_error, key) => errorKeys.push(key));
834
+
835
+ let release!: () => void;
836
+ queueResourceLoad(loader, {
837
+ key: 'stale',
838
+ load: () => new Promise((resolve) => (release = () => resolve('v'))),
839
+ }).promise.catch(() => {});
840
+ startResourceLoad(loader);
841
+ await Promise.resolve();
842
+
843
+ resetResourceLoader(loader);
844
+
845
+ queueResourceLoad(loader, { key: 'fresh', load: () => Promise.resolve('ok') });
846
+ startResourceLoad(loader);
847
+ const reports = await waitForComplete(loader);
848
+
849
+ release();
850
+ await new Promise((resolve) => setTimeout(resolve, 5));
851
+
852
+ expect(errorKeys).toEqual([]);
853
+ expect(reports.map((r) => r.key)).toEqual(['fresh']);
854
+ });
855
+
856
+ it('does not let a stale load inflate the new batch progress', async () => {
857
+ const loader = createResourceLoader();
858
+ connectSignal(loader.onError, () => {});
859
+ let release!: () => void;
860
+ queueResourceLoad(loader, {
861
+ key: 'stale',
862
+ load: () => new Promise((_resolve, reject) => (release = () => reject(new Error('late')))),
863
+ }).promise.catch(() => {});
864
+ startResourceLoad(loader);
865
+ await Promise.resolve();
866
+
867
+ resetResourceLoader(loader);
868
+ queueResourceLoad(loader, { key: 'one', load: () => Promise.resolve(1) });
869
+ queueResourceLoad(loader, { key: 'two', load: () => Promise.resolve(2) });
870
+ startResourceLoad(loader);
871
+
872
+ release();
873
+ const reports = await waitForComplete(loader);
874
+ expect(reports.length).toBe(2);
875
+ expect(getResourceLoadProgress(loader)).toBe(1);
876
+ });
877
+ });
878
+
797
879
  describe('resetResourceLoader', () => {
798
880
  it('allows the loader to be reused for another batch', async () => {
799
881
  const loader = createResourceLoader();
@@ -1027,3 +1109,66 @@ describe('weight-aware progress', () => {
1027
1109
  expect(progressValues[1]).toBeCloseTo(1.0);
1028
1110
  });
1029
1111
  });
1112
+
1113
+ describe('weighted progress across outcomes', () => {
1114
+ // The regression these pin: weightLoaded advanced only on success, so any batch containing a
1115
+ // failure, a cancellation, or a fail-fast skip left getResourceLoadProgress permanently short of 1
1116
+ // — a weighted progress bar frozen mid-way on a batch that had already emitted onComplete.
1117
+ it('reaches 1 after a batch containing a failure completes', async () => {
1118
+ const loader = createResourceLoader();
1119
+ connectSignal(loader.onError, () => {});
1120
+ queueResourceLoad(loader, { key: 'a', load: () => Promise.resolve(1), weight: 1 });
1121
+ queueResourceLoad(loader, { key: 'b', load: () => Promise.reject(new Error('boom')), weight: 1 }).promise.catch(
1122
+ () => {},
1123
+ );
1124
+ queueResourceLoad(loader, { key: 'c', load: () => Promise.resolve(3), weight: 1 });
1125
+ startResourceLoad(loader);
1126
+ await waitForComplete(loader);
1127
+ expect(getResourceLoadProgress(loader)).toBe(1);
1128
+ });
1129
+
1130
+ it('weights the failure by its own weight, not by an item count', async () => {
1131
+ const loader = createResourceLoader({ maxConcurrent: 1 });
1132
+ connectSignal(loader.onError, () => {});
1133
+ const seen: number[] = [];
1134
+ connectSignal(loader.onProgress, () => seen.push(getResourceLoadProgress(loader)));
1135
+ queueResourceLoad(loader, { key: 'a', load: () => Promise.reject(new Error('boom')), weight: 90 }).promise.catch(
1136
+ () => {},
1137
+ );
1138
+ queueResourceLoad(loader, { key: 'b', load: () => Promise.resolve(1), weight: 10 });
1139
+ startResourceLoad(loader);
1140
+ await waitForComplete(loader);
1141
+ expect(seen[0]).toBeCloseTo(0.9);
1142
+ expect(seen[1]).toBeCloseTo(1);
1143
+ });
1144
+
1145
+ it('reaches 1 after a fail-fast batch skips the rest', async () => {
1146
+ const loader = createResourceLoader({ errorPolicy: 'fail-fast', maxConcurrent: 1 });
1147
+ connectSignal(loader.onError, () => {});
1148
+ queueResourceLoad(loader, { key: 'a', load: () => Promise.reject(new Error('boom')), weight: 5 }).promise.catch(
1149
+ () => {},
1150
+ );
1151
+ queueResourceLoad(loader, { key: 'b', load: () => Promise.resolve(1), weight: 5 }).promise.catch(() => {});
1152
+ startResourceLoad(loader);
1153
+ await waitForComplete(loader);
1154
+ expect(getResourceLoadProgress(loader)).toBe(1);
1155
+ });
1156
+
1157
+ it('reaches 1 after a cancelled batch settles', async () => {
1158
+ const loader = createResourceLoader({ maxConcurrent: 1 });
1159
+ let release!: () => void;
1160
+ queueResourceLoad(loader, {
1161
+ key: 'slow',
1162
+ load: () => new Promise((resolve) => (release = () => resolve(1))),
1163
+ weight: 3,
1164
+ }).promise.catch(() => {});
1165
+ queueResourceLoad(loader, { key: 'queued', load: () => Promise.resolve(2), weight: 7 }).promise.catch(() => {});
1166
+ startResourceLoad(loader);
1167
+ await Promise.resolve();
1168
+ const completed = waitForComplete(loader);
1169
+ cancelResourceLoad(loader);
1170
+ release();
1171
+ await completed;
1172
+ expect(getResourceLoadProgress(loader)).toBe(1);
1173
+ });
1174
+ });