@flighthq/loader 0.3.0-next.1220.6982c21 → 0.3.0-next.1248.f867198

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.
package/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # @flighthq/loader
2
+
3
+ ## Progress: three currencies, one contract
4
+
5
+ A load can be measured three ways, and they answer different questions. Asking for the wrong one is how a progress bar and a counter end up disagreeing on the same batch.
6
+
7
+ **`getResourceLoadProgress(loader)` — the 0..1 weighted fraction.** This is _the_ progress number, and `onProgress` emits exactly it, so the signal and the accessor can never diverge. Each item counts for its `weight` (default `1`), so an unweighted batch is simply the item fraction.
8
+
9
+ **`getResourceLoadCounts(loader)` — how many items, and where they are.** `settledItems`, `inFlightItems`, `queuedItems`, `totalItems`. In-flight and queued are separate numbers because a concurrency limit makes them differ: "loading 4 of 200" is the in-flight count, not the queue depth. Use these for a literal "3 of 12 files" readout.
10
+
11
+ **`getResourceLoadBytes(loader)` — what the load knows about its byte volume.** `bytesLoaded` is summed, monotonic, and always valid. `bytesTotalKnown` and `itemsWithKnownBytes` are labeled _known_ on purpose: `bytesHint` is optional per item, so the known total is a floor that grows as more items declare a size. Compare `itemsWithKnownBytes` against `totalItems` to judge whether it covers enough of the batch to divide by.
12
+
13
+ ### The principle
14
+
15
+ **The contract currency must be knowable before the work starts.** Weight qualifies because the caller supplies it: progress starts at a truthful 0 and never rescales. Bytes do not — a byte denominator grows as headers arrive, so a bar driven by it slides backwards as the loader discovers more work. That is why weight is the contract and bytes are reporting.
16
+
17
+ ### Recipe: a byte-accurate progress bar
18
+
19
+ When you know each item's size, pass those sizes _as weights_ and the weighted fraction becomes byte progress, with no second aggregate and no moving denominator:
20
+
21
+ ```ts
22
+ for (const asset of manifest) {
23
+ queueResourceLoad(loader, {
24
+ bytesHint: asset.size,
25
+ weight: asset.size, // weight in bytes -> getResourceLoadProgress is byte progress
26
+ load: (signal, reportBytes) => fetchAsset(asset, signal, reportBytes),
27
+ });
28
+ }
29
+ ```
30
+
31
+ Partial size knowledge is deliberately not smoothed over in core: there is no byte-total estimator, because calibrating bytes-per-weight only works when weights are already byte-proportional — in which case the caller knows the total from its own hints anyway.
32
+
33
+ ### Edge cases
34
+
35
+ - An empty loader reports progress `1`. A batch of nothing is complete, which keeps `await` semantics consistent, and counts report zeros.
36
+ - No query returns `NaN`. Every division is guarded by the zero check in front of it.
37
+ - A batch whose items are _all_ explicitly `weight: 0` falls back to the item fraction, since the weighted fraction is undefined for it.
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { cancelResourceLoad, createResourceLoader, disposeResourceLoader, enableResourceLoaderItemSignals, getResourceLoadItemStatus, getResourceLoadProgress, pauseResourceLoad, queueResourceLoad, resetResourceLoader, resumeResourceLoad, setResourceLoadPriority, setResourceLoaderConcurrency, startResourceLoad, } from './contract';
1
+ export { cancelResourceLoad, createResourceLoader, disposeResourceLoader, enableResourceLoaderItemSignals, getResourceLoadItemStatus, getResourceLoadBytes, getResourceLoadCounts, getResourceLoadProgress, pauseResourceLoad, queueResourceLoad, resetResourceLoader, resumeResourceLoad, setResourceLoadPriority, setResourceLoaderConcurrency, startResourceLoad, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { cancelResourceLoad, createResourceLoader, disposeResourceLoader, enableResourceLoaderItemSignals, getResourceLoadItemStatus, getResourceLoadProgress, pauseResourceLoad, queueResourceLoad, resetResourceLoader, resumeResourceLoad, setResourceLoadPriority, setResourceLoaderConcurrency, startResourceLoad, } from './contract';
1
+ export { cancelResourceLoad, createResourceLoader, disposeResourceLoader, enableResourceLoaderItemSignals, getResourceLoadItemStatus, getResourceLoadBytes, getResourceLoadCounts, getResourceLoadProgress, pauseResourceLoad, queueResourceLoad, resetResourceLoader, resumeResourceLoad, setResourceLoadPriority, setResourceLoaderConcurrency, startResourceLoad, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -1,8 +1,10 @@
1
- import type { ResourceLoader, ResourceLoaderItemSignals, ResourceLoaderOptions, ResourceLoadHandle, ResourceLoadItem, ResourceLoadItemStatus } from '@flighthq/types/contract';
1
+ import type { ResourceLoadBytes, ResourceLoadCounts, ResourceLoader, ResourceLoaderItemSignals, ResourceLoaderOptions, ResourceLoadHandle, ResourceLoadItem, ResourceLoadItemStatus } from '@flighthq/types/contract';
2
2
  export declare function cancelResourceLoad(loader: ResourceLoader): void;
3
3
  export declare function createResourceLoader(options?: Readonly<ResourceLoaderOptions>): ResourceLoader;
4
4
  export declare function disposeResourceLoader(loader: ResourceLoader): void;
5
5
  export declare function enableResourceLoaderItemSignals(loader: ResourceLoader): ResourceLoaderItemSignals;
6
+ export declare function getResourceLoadBytes(loader: Readonly<ResourceLoader>): ResourceLoadBytes;
7
+ export declare function getResourceLoadCounts(loader: Readonly<ResourceLoader>): ResourceLoadCounts;
6
8
  export declare function getResourceLoadItemStatus(loader: ResourceLoader, key: string): ResourceLoadItemStatus;
7
9
  export declare function getResourceLoadProgress(loader: ResourceLoader, group?: string): number;
8
10
  export declare function pauseResourceLoad(loader: ResourceLoader): void;
@@ -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,EAErB,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,CAsEvB;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"}
1
+ {"version":3,"file":"resourceLoader.d.ts","sourceRoot":"","sources":["../src/resourceLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EAErB,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,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,iBAAiB,CA6BxF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAW1F;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,sBAAsB,CASrG;AAaD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BtF;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,CAsEvB;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"}
@@ -99,7 +99,7 @@ export function cancelResourceLoad(loader) {
99
99
  emitSignal(loader.onCancel);
100
100
  // Complete immediately if nothing is currently running
101
101
  if (internal.inFlight.size === 0) {
102
- emitSignal(loader.onProgress, internal.loaded, internal.total);
102
+ emitSignal(loader.onProgress, getResourceLoadProgress(loader));
103
103
  emitSignal(loader.onComplete, internal.reports);
104
104
  }
105
105
  }
@@ -164,6 +164,48 @@ export function enableResourceLoaderItemSignals(loader) {
164
164
  }
165
165
  return internal.itemSignals;
166
166
  }
167
+ export function getResourceLoadBytes(loader) {
168
+ const internal = loader;
169
+ let bytesLoaded = 0;
170
+ let bytesTotalKnown = 0;
171
+ let itemsWithKnownBytes = 0;
172
+ // Settled items contribute their measured transfer; in-flight and queued contribute what they have
173
+ // reported and what they declared. A hint counts as known even before the item starts, which is what
174
+ // lets the known total grow ahead of the bytes rather than lag them.
175
+ for (const report of internal.reports) {
176
+ bytesLoaded += report.bytes;
177
+ if (report.bytes > 0) {
178
+ bytesTotalKnown += report.bytes;
179
+ itemsWithKnownBytes++;
180
+ }
181
+ }
182
+ for (const entry of internal.inFlight) {
183
+ bytesLoaded += entry.bytesLoaded;
184
+ if (entry.bytesHint > 0) {
185
+ bytesTotalKnown += entry.bytesHint;
186
+ itemsWithKnownBytes++;
187
+ }
188
+ }
189
+ for (const entry of internal.pending) {
190
+ if (entry.bytesHint > 0) {
191
+ bytesTotalKnown += entry.bytesHint;
192
+ itemsWithKnownBytes++;
193
+ }
194
+ }
195
+ return { bytesLoaded, bytesTotalKnown, itemsWithKnownBytes };
196
+ }
197
+ export function getResourceLoadCounts(loader) {
198
+ const internal = loader;
199
+ const settledItems = internal.reports.length;
200
+ const inFlightItems = internal.inFlight.size;
201
+ const queuedItems = internal.pending.length;
202
+ return {
203
+ settledItems,
204
+ inFlightItems,
205
+ queuedItems,
206
+ totalItems: settledItems + inFlightItems + queuedItems,
207
+ };
208
+ }
167
209
  export function getResourceLoadItemStatus(loader, key) {
168
210
  const internal = loader;
169
211
  const report = internal.reports.find((r) => r.key === key);
@@ -177,6 +219,17 @@ export function getResourceLoadItemStatus(loader, key) {
177
219
  }
178
220
  return 'pending';
179
221
  }
222
+ // The 0..1 completion fraction, and the single answer to "how far along is this batch" — the same
223
+ // number `onProgress` emits. Weighted by each item's `weight` (default 1), so an unweighted batch is
224
+ // the item fraction and a weighted one reflects the work the caller said each item represents.
225
+ //
226
+ // Weight is the contract currency because it is knowable before the first byte moves: the caller
227
+ // supplies it, so the bar starts at a truthful 0 and never rescales. Bytes cannot play that role —
228
+ // `bytesHint` is optional per item, so a byte denominator grows as headers arrive and the bar slides
229
+ // backwards. Bytes are reporting, via `getResourceLoadBytes`; counts are a separate question, via
230
+ // `getResourceLoadCounts`.
231
+ //
232
+ // Never returns NaN: every division below is guarded by the zero check in front of it.
180
233
  export function getResourceLoadProgress(loader, group) {
181
234
  const internal = loader;
182
235
  if (!internal.started)
@@ -194,11 +247,16 @@ export function getResourceLoadProgress(loader, group) {
194
247
  return 0;
195
248
  return groupReports.length / groupTotal;
196
249
  }
250
+ // A batch of nothing is complete rather than un-started: callers await a loader and branch on 1, and
251
+ // reporting 0 for an empty batch would strand that. Also the only guard against dividing by zero on
252
+ // `total` below.
197
253
  if (internal.total === 0)
198
254
  return 1;
199
255
  if (internal.totalWeight > 0) {
200
256
  return internal.weightLoaded / internal.totalWeight;
201
257
  }
258
+ // Reached only when every item was explicitly given `weight: 0`, which makes the weighted fraction
259
+ // undefined; the item fraction is the sensible answer for a batch that declined to weight itself.
202
260
  return internal.loaded / internal.total;
203
261
  }
204
262
  export function pauseResourceLoad(loader) {
@@ -328,7 +386,7 @@ export function startResourceLoad(loader) {
328
386
  return;
329
387
  internal.started = true;
330
388
  if (internal.total === 0) {
331
- emitSignal(loader.onProgress, 0, 0);
389
+ emitSignal(loader.onProgress, getResourceLoadProgress(loader));
332
390
  emitSignal(loader.onComplete, []);
333
391
  return;
334
392
  }
@@ -534,7 +592,7 @@ function _isOrphaned(entry, internal) {
534
592
  }
535
593
  function checkCompleteAfterCancel(internal, loader) {
536
594
  if (internal.inFlight.size === 0) {
537
- emitSignal(loader.onProgress, internal.loaded, internal.total);
595
+ emitSignal(loader.onProgress, getResourceLoadProgress(loader));
538
596
  emitSignal(loader.onComplete, internal.reports);
539
597
  }
540
598
  }
@@ -575,7 +633,7 @@ function delay(ms) {
575
633
  function settleEntry(entry, internal, loader) {
576
634
  internal.inFlight.delete(entry);
577
635
  _countEntrySettled(internal, entry);
578
- emitSignal(loader.onProgress, internal.loaded, internal.total);
636
+ emitSignal(loader.onProgress, getResourceLoadProgress(loader));
579
637
  releasePendingEntry(entry);
580
638
  if (internal.loaded === internal.total) {
581
639
  emitSignal(loader.onComplete, internal.reports);
@@ -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.1220.6982c21",
3
+ "version": "0.3.0-next.1248.f867198",
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.1220.6982c21",
40
- "@flighthq/types": "0.3.0-next.1220.6982c21"
39
+ "@flighthq/signals": "0.3.0-next.1248.f867198",
40
+ "@flighthq/types": "0.3.0-next.1248.f867198"
41
41
  },
42
42
  "devDependencies": {
43
43
  "typescript": "^5.3.0"
@@ -7,6 +7,8 @@ import {
7
7
  disposeResourceLoader,
8
8
  enableResourceLoaderItemSignals,
9
9
  getResourceLoadItemStatus,
10
+ getResourceLoadBytes,
11
+ getResourceLoadCounts,
10
12
  getResourceLoadProgress,
11
13
  pauseResourceLoad,
12
14
  queueResourceLoad,
@@ -608,6 +610,113 @@ describe('error policy', () => {
608
610
  });
609
611
  });
610
612
 
613
+ describe('getResourceLoadBytes', () => {
614
+ it('reports zeros for a loader with nothing queued', () => {
615
+ expect(getResourceLoadBytes(createResourceLoader())).toEqual({
616
+ bytesLoaded: 0,
617
+ bytesTotalKnown: 0,
618
+ itemsWithKnownBytes: 0,
619
+ });
620
+ });
621
+
622
+ // The known total is a floor that grows, never a denominator: itemsWithKnownBytes is what tells the
623
+ // caller how much of the batch it actually covers.
624
+ it('counts only the items that declared a size toward the known total', () => {
625
+ const loader = createResourceLoader();
626
+ queueResourceLoad(loader, { bytesHint: 1000, load: () => Promise.resolve('a') });
627
+ queueResourceLoad(loader, { load: () => Promise.resolve('b') });
628
+
629
+ const bytes = getResourceLoadBytes(loader);
630
+
631
+ expect(bytes.bytesTotalKnown).toBe(1000);
632
+ expect(bytes.itemsWithKnownBytes).toBe(1);
633
+ expect(bytes.bytesLoaded).toBe(0);
634
+ });
635
+
636
+ it('accumulates transferred bytes as items settle', async () => {
637
+ const loader = createResourceLoader();
638
+ queueResourceLoad(loader, {
639
+ bytesHint: 8,
640
+ load: async (_signal, reportBytes) => {
641
+ reportBytes(8, 8);
642
+ return 'a';
643
+ },
644
+ });
645
+ startResourceLoad(loader);
646
+ await waitForComplete(loader);
647
+
648
+ expect(getResourceLoadBytes(loader).bytesLoaded).toBe(8);
649
+ });
650
+
651
+ it('stays valid when no item declares a size', async () => {
652
+ const loader = createResourceLoader();
653
+ queueResourceLoad(loader, { load: () => Promise.resolve('a') });
654
+ startResourceLoad(loader);
655
+ await waitForComplete(loader);
656
+
657
+ const bytes = getResourceLoadBytes(loader);
658
+ expect(Number.isNaN(bytes.bytesTotalKnown)).toBe(false);
659
+ expect(bytes.itemsWithKnownBytes).toBe(0);
660
+ });
661
+ });
662
+
663
+ describe('getResourceLoadCounts', () => {
664
+ it('reports zeros for a loader with nothing queued', () => {
665
+ expect(getResourceLoadCounts(createResourceLoader())).toEqual({
666
+ settledItems: 0,
667
+ inFlightItems: 0,
668
+ queuedItems: 0,
669
+ totalItems: 0,
670
+ });
671
+ });
672
+
673
+ it('counts queued items before the load starts', () => {
674
+ const loader = createResourceLoader();
675
+ queueResourceLoad(loader, { load: () => Promise.resolve('a') });
676
+ queueResourceLoad(loader, { load: () => Promise.resolve('b') });
677
+
678
+ const counts = getResourceLoadCounts(loader);
679
+
680
+ expect(counts.queuedItems).toBe(2);
681
+ expect(counts.totalItems).toBe(2);
682
+ expect(counts.settledItems).toBe(0);
683
+ });
684
+
685
+ // In-flight and queued are separate numbers because a concurrency limit makes them differ, and a UI
686
+ // showing "loading 1 of 3" means the in-flight count rather than the queue depth.
687
+ it('separates in-flight from still-queued under a concurrency limit', async () => {
688
+ const loader = createResourceLoader({ maxConcurrent: 1 });
689
+ let release: (() => void) | null = null;
690
+ queueResourceLoad(loader, { load: () => new Promise<string>((resolve) => (release = () => resolve('a'))) });
691
+ queueResourceLoad(loader, { load: () => Promise.resolve('b') });
692
+ queueResourceLoad(loader, { load: () => Promise.resolve('c') });
693
+ startResourceLoad(loader);
694
+ await Promise.resolve();
695
+
696
+ const counts = getResourceLoadCounts(loader);
697
+ expect(counts.inFlightItems).toBe(1);
698
+ expect(counts.queuedItems).toBe(2);
699
+ expect(counts.totalItems).toBe(3);
700
+
701
+ release!();
702
+ await waitForComplete(loader);
703
+ });
704
+
705
+ it('counts every finished item as settled, including a failure', async () => {
706
+ const loader = createResourceLoader();
707
+ queueResourceLoad(loader, { load: () => Promise.resolve('ok') }).promise.catch(() => {});
708
+ queueResourceLoad(loader, { load: () => Promise.reject(new Error('nope')), retries: 0 }).promise.catch(() => {});
709
+ startResourceLoad(loader);
710
+ await waitForComplete(loader);
711
+
712
+ const counts = getResourceLoadCounts(loader);
713
+ expect(counts.settledItems).toBe(2);
714
+ expect(counts.totalItems).toBe(2);
715
+ expect(counts.inFlightItems).toBe(0);
716
+ expect(counts.queuedItems).toBe(0);
717
+ });
718
+ });
719
+
611
720
  describe('getResourceLoadItemStatus', () => {
612
721
  it('returns pending for a queued but unstarted item', () => {
613
722
  const loader = createResourceLoader();
@@ -842,9 +951,9 @@ describe('queueResourceLoad', () => {
842
951
 
843
952
  it('fires onProgress after each item completes', async () => {
844
953
  const loader = createResourceLoader({ maxConcurrent: 1 });
845
- const progress: Array<[number, number]> = [];
846
- connectSignal(loader.onProgress, (loaded, total) => {
847
- progress.push([loaded, total]);
954
+ const progress: number[] = [];
955
+ connectSignal(loader.onProgress, (fraction) => {
956
+ progress.push(fraction);
848
957
  });
849
958
 
850
959
  queueResourceLoad(loader, { load: () => Promise.resolve('a') });
@@ -855,7 +964,26 @@ describe('queueResourceLoad', () => {
855
964
  await waitForComplete(loader);
856
965
 
857
966
  expect(progress).toHaveLength(3);
858
- expect(progress[2]).toEqual([3, 3]);
967
+ expect(progress[2]).toBe(1);
968
+ });
969
+
970
+ // The signal and the accessor are one number now. A weighted batch is where they used to diverge:
971
+ // the signal reported item counts (1 of 2 = 0.5) while the accessor reported weight (0.01).
972
+ it('emits the same fraction the accessor reports, on a weighted batch', async () => {
973
+ const loader = createResourceLoader({ maxConcurrent: 1 });
974
+ const seen: number[] = [];
975
+ connectSignal(loader.onProgress, (fraction) => {
976
+ seen.push(fraction);
977
+ expect(fraction).toBe(getResourceLoadProgress(loader));
978
+ });
979
+
980
+ queueResourceLoad(loader, { load: () => Promise.resolve('small'), weight: 1 });
981
+ queueResourceLoad(loader, { load: () => Promise.resolve('big'), weight: 99 });
982
+ startResourceLoad(loader);
983
+ await waitForComplete(loader);
984
+
985
+ expect(seen[0]).toBeCloseTo(0.01, 5);
986
+ expect(seen[1]).toBe(1);
859
987
  });
860
988
 
861
989
  it('fires onComplete after all items finish', async () => {
@@ -1195,14 +1323,15 @@ describe('startResourceLoad', () => {
1195
1323
  expect(called).toBe(true);
1196
1324
  });
1197
1325
 
1198
- it('fires onProgress(0, 0) for an empty queue', () => {
1326
+ // A batch of nothing is complete, not un-started: callers await a loader and branch on 1.
1327
+ it('fires onProgress(1) for an empty queue', () => {
1199
1328
  const loader = createResourceLoader();
1200
- let args: [number, number] | null = null;
1201
- connectSignal(loader.onProgress, (loaded, total) => {
1202
- args = [loaded, total];
1329
+ let seen: number | null = null;
1330
+ connectSignal(loader.onProgress, (fraction) => {
1331
+ seen = fraction;
1203
1332
  });
1204
1333
  startResourceLoad(loader);
1205
- expect(args).toEqual([0, 0]);
1334
+ expect(seen).toBe(1);
1206
1335
  });
1207
1336
 
1208
1337
  it('is a no-op if called a second time in non-streaming mode', () => {