@flighthq/assets 0.3.0-next.906.07cea63 → 0.3.0
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/dist/assetLibrary.d.ts +4 -1
- package/dist/assetLibrary.d.ts.map +1 -1
- package/dist/assetLibrary.js +36 -5
- package/dist/assetLibrary.js.map +1 -1
- package/dist/contract.d.ts +2 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -0
- package/dist/contract.js.map +1 -1
- package/dist/enableAssetGuards.d.ts +5 -0
- package/dist/enableAssetGuards.d.ts.map +1 -0
- package/dist/enableAssetGuards.js +23 -0
- package/dist/enableAssetGuards.js.map +1 -0
- package/dist/explainAssetLoad.d.ts +3 -0
- package/dist/explainAssetLoad.d.ts.map +1 -0
- package/dist/explainAssetLoad.js +27 -0
- package/dist/explainAssetLoad.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
- package/src/assetLibrary.test.ts +43 -0
- package/src/enableAssetGuards.test.ts +73 -0
- package/src/explainAssetLoad.test.ts +64 -0
package/dist/assetLibrary.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { AssetDescriptor, AssetGroupLoadOptions, AssetLibrary, AssetLoaderAdapter, AssetManifest, AssetType } from '@flighthq/types/contract';
|
|
1
|
+
import type { AssetAcquireGuard, AssetDescriptor, AssetGroupLoadOptions, AssetLibrary, AssetLoaderAdapter, AssetManifest, AssetType } from '@flighthq/types/contract';
|
|
2
2
|
export declare function acquireAsset<T = unknown>(library: Readonly<AssetLibrary>, id: string): Promise<T>;
|
|
3
3
|
export declare function createAssetLibrary(): AssetLibrary;
|
|
4
4
|
export declare function disposeAssetLibrary(library: Readonly<AssetLibrary>): void;
|
|
5
5
|
export declare function getAsset<T = unknown>(library: Readonly<AssetLibrary>, id: string): T | null;
|
|
6
|
+
export declare function getAssetGroupIds(library: Readonly<AssetLibrary>, name: string): readonly string[];
|
|
7
|
+
export declare function getAssetIds(library: Readonly<AssetLibrary>): readonly string[];
|
|
6
8
|
export declare function getAssetRefCount(library: Readonly<AssetLibrary>, id: string): number;
|
|
7
9
|
export declare function loadAssetGroup(library: Readonly<AssetLibrary>, name: string, options?: Readonly<AssetGroupLoadOptions>): Promise<void>;
|
|
8
10
|
export declare function registerAssetDescriptor(library: Readonly<AssetLibrary>, descriptor: Readonly<AssetDescriptor>): void;
|
|
@@ -10,4 +12,5 @@ export declare function registerAssetLoader<T>(library: Readonly<AssetLibrary>,
|
|
|
10
12
|
export declare function registerAssetManifest(library: Readonly<AssetLibrary>, manifest: AssetManifest): void;
|
|
11
13
|
export declare function releaseAsset(library: Readonly<AssetLibrary>, id: string): void;
|
|
12
14
|
export declare function releaseAssetGroup(library: Readonly<AssetLibrary>, name: string): void;
|
|
15
|
+
export declare function setAssetAcquireGuard(library: Readonly<AssetLibrary>, guard: AssetAcquireGuard | null): void;
|
|
13
16
|
//# sourceMappingURL=assetLibrary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetLibrary.d.ts","sourceRoot":"","sources":["../src/assetLibrary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assetLibrary.d.ts","sourceRoot":"","sources":["../src/assetLibrary.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,qBAAqB,EACrB,YAAY,EAEZ,kBAAkB,EAClB,aAAa,EACb,SAAS,EACV,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CA8CjG;AAKD,wBAAgB,kBAAkB,IAAI,YAAY,CAUjD;AAID,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAczE;AAID,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAG3F;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEjG;AAKD,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,MAAM,EAAE,CAE9E;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGpF;AAQD,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAwBpH;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACvC,IAAI,CAEN;AAMD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAepG;AAKD,wBAAgB,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO9E;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrF;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAE3G"}
|
package/dist/assetLibrary.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createResourceLoader, disposeResourceLoader, queueResourceLoad, startResourceLoad, } from '@flighthq/loader/contract';
|
|
1
|
+
import { createResourceLoader, disposeResourceLoader, getResourceLoadCounts, queueResourceLoad, startResourceLoad, } from '@flighthq/loader/contract';
|
|
2
2
|
import { connectSignal, emitSignal } from '@flighthq/signals/contract';
|
|
3
3
|
// Increments the reference count for `id` and resolves its loaded value. If the asset is already
|
|
4
4
|
// resident, resolves immediately. If a load is already in flight (a concurrent acquire), the same
|
|
@@ -10,11 +10,13 @@ export function acquireAsset(library, id) {
|
|
|
10
10
|
const runtime = library.runtime;
|
|
11
11
|
const descriptor = runtime.descriptors.get(id);
|
|
12
12
|
if (descriptor === undefined) {
|
|
13
|
-
|
|
13
|
+
runtime.acquireGuard?.(library, { id, refCount: 0, status: 'missing-descriptor', type: null });
|
|
14
|
+
return Promise.reject(new Error(`assets: no descriptor for id "${id}"`));
|
|
14
15
|
}
|
|
15
16
|
const adapter = runtime.adapters.get(descriptor.type);
|
|
16
17
|
if (adapter === undefined) {
|
|
17
|
-
|
|
18
|
+
runtime.acquireGuard?.(library, { id, refCount: 0, status: 'missing-loader', type: descriptor.type });
|
|
19
|
+
return Promise.reject(new Error(`assets: no loader for type "${descriptor.type}"`));
|
|
18
20
|
}
|
|
19
21
|
const existing = runtime.entries.get(id);
|
|
20
22
|
if (existing !== undefined) {
|
|
@@ -25,6 +27,7 @@ export function acquireAsset(library, id) {
|
|
|
25
27
|
return existing.loadPromise;
|
|
26
28
|
}
|
|
27
29
|
const entry = { value: undefined, refcount: 1, loadPromise: null, resident: false };
|
|
30
|
+
runtime.freedIds.delete(id);
|
|
28
31
|
runtime.entries.set(id, entry);
|
|
29
32
|
const loadPromise = adapter.load(descriptor).then((value) => {
|
|
30
33
|
if (runtime.entries.get(id) !== entry || entry.refcount <= 0) {
|
|
@@ -52,9 +55,11 @@ export function acquireAsset(library, id) {
|
|
|
52
55
|
// in with registerAssetLoader.
|
|
53
56
|
export function createAssetLibrary() {
|
|
54
57
|
const runtime = {
|
|
58
|
+
acquireGuard: null,
|
|
55
59
|
adapters: new Map(),
|
|
56
60
|
descriptors: new Map(),
|
|
57
61
|
entries: new Map(),
|
|
62
|
+
freedIds: new Set(),
|
|
58
63
|
groups: new Map(),
|
|
59
64
|
};
|
|
60
65
|
return { runtime };
|
|
@@ -72,8 +77,10 @@ export function disposeAssetLibrary(library) {
|
|
|
72
77
|
adapter.dispose(entry.value);
|
|
73
78
|
}
|
|
74
79
|
runtime.adapters.clear();
|
|
80
|
+
runtime.acquireGuard = null;
|
|
75
81
|
runtime.descriptors.clear();
|
|
76
82
|
runtime.entries.clear();
|
|
83
|
+
runtime.freedIds.clear();
|
|
77
84
|
runtime.groups.clear();
|
|
78
85
|
}
|
|
79
86
|
// Returns the resident value for `id` synchronously, or null if it is not loaded (never acquired, or
|
|
@@ -82,6 +89,17 @@ export function getAsset(library, id) {
|
|
|
82
89
|
const entry = library.runtime.entries.get(id);
|
|
83
90
|
return entry !== undefined && entry.resident ? entry.value : null;
|
|
84
91
|
}
|
|
92
|
+
// Returns an insertion-ordered snapshot of the descriptors tagged with `name`, whether or not they are
|
|
93
|
+
// currently resident. Unknown and empty groups return an empty array.
|
|
94
|
+
export function getAssetGroupIds(library, name) {
|
|
95
|
+
return library.runtime.groups.get(name)?.slice() ?? [];
|
|
96
|
+
}
|
|
97
|
+
// Returns an insertion-ordered snapshot of live cache ids. Both loading and resident entries are
|
|
98
|
+
// included because each is held by at least one unmatched acquire. Mutating the snapshot cannot change
|
|
99
|
+
// library state.
|
|
100
|
+
export function getAssetIds(library) {
|
|
101
|
+
return Array.from(library.runtime.entries.keys());
|
|
102
|
+
}
|
|
85
103
|
// Returns the live holder count for `id`: how many acquires have not yet been matched by a release.
|
|
86
104
|
// Zero for an id that was never acquired or has already been freed at reference count zero.
|
|
87
105
|
export function getAssetRefCount(library, id) {
|
|
@@ -102,8 +120,13 @@ export async function loadAssetGroup(library, name, options) {
|
|
|
102
120
|
const loader = createResourceLoader();
|
|
103
121
|
const progress = options?.progress;
|
|
104
122
|
if (progress !== undefined) {
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
// AssetLoadProgress is defined in counts ("`loaded` members settled of `total` scheduled"), so it
|
|
124
|
+
// reads them from the counts query rather than from onProgress, which carries the 0..1 weighted
|
|
125
|
+
// fraction. Taking the fraction's argument as a count is exactly the conflation the loader's two
|
|
126
|
+
// currencies were separated to prevent.
|
|
127
|
+
connectSignal(loader.onProgress, () => {
|
|
128
|
+
const counts = getResourceLoadCounts(loader);
|
|
129
|
+
emitSignal(progress, { loaded: counts.settledItems, total: counts.totalItems });
|
|
107
130
|
});
|
|
108
131
|
}
|
|
109
132
|
const itemPromises = [];
|
|
@@ -145,6 +168,8 @@ export function registerAssetDescriptor(library, descriptor) {
|
|
|
145
168
|
}
|
|
146
169
|
if (previous !== undefined)
|
|
147
170
|
removeAssetDescriptorGroups(runtime, previous);
|
|
171
|
+
if (previous !== undefined && !isEquivalentAssetDescriptor(previous, descriptor))
|
|
172
|
+
runtime.freedIds.delete(descriptor.id);
|
|
148
173
|
const storedDescriptor = copyAssetDescriptor(descriptor);
|
|
149
174
|
runtime.descriptors.set(descriptor.id, storedDescriptor);
|
|
150
175
|
const groups = storedDescriptor.groups;
|
|
@@ -209,11 +234,17 @@ export function releaseAssetGroup(library, name) {
|
|
|
209
234
|
for (const id of ids)
|
|
210
235
|
releaseAsset(library, id);
|
|
211
236
|
}
|
|
237
|
+
// Installs or removes the optional acquire-misuse hook. The core remains logger-free; the separately
|
|
238
|
+
// importable enableAssetGuards module supplies the caller-facing messages.
|
|
239
|
+
export function setAssetAcquireGuard(library, guard) {
|
|
240
|
+
library.runtime.acquireGuard = guard;
|
|
241
|
+
}
|
|
212
242
|
// Drops the cache entry and, when the asset actually decoded, frees it through its adapter. An entry
|
|
213
243
|
// whose load never settled (released mid-flight) has nothing decoded to free; the in-flight load's own
|
|
214
244
|
// continuation disposes the orphaned value once it resolves.
|
|
215
245
|
function disposeAssetEntry(runtime, id, entry) {
|
|
216
246
|
runtime.entries.delete(id);
|
|
247
|
+
runtime.freedIds.add(id);
|
|
217
248
|
if (!entry.resident)
|
|
218
249
|
return;
|
|
219
250
|
const descriptor = runtime.descriptors.get(id);
|
package/dist/assetLibrary.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetLibrary.js","sourceRoot":"","sources":["../src/assetLibrary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assetLibrary.js","sourceRoot":"","sources":["../src/assetLibrary.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.d.ts
CHANGED
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
package/dist/contract.js
CHANGED
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AssetLibrary } from '@flighthq/types/contract';
|
|
2
|
+
export declare function areAssetGuardsEnabled(library: Readonly<AssetLibrary>): boolean;
|
|
3
|
+
export declare function disableAssetGuards(library: Readonly<AssetLibrary>): void;
|
|
4
|
+
export declare function enableAssetGuards(library: Readonly<AssetLibrary>): void;
|
|
5
|
+
//# sourceMappingURL=enableAssetGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableAssetGuards.d.ts","sourceRoot":"","sources":["../src/enableAssetGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,0BAA0B,CAAC;AAKnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAExE;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAEvE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { logOnce } from '@flighthq/log/contract';
|
|
2
|
+
import { LogLevel } from '@flighthq/types/contract';
|
|
3
|
+
import { setAssetAcquireGuard } from './assetLibrary';
|
|
4
|
+
export function areAssetGuardsEnabled(library) {
|
|
5
|
+
return library.runtime.acquireGuard === warnOnAssetAcquireFailure;
|
|
6
|
+
}
|
|
7
|
+
export function disableAssetGuards(library) {
|
|
8
|
+
setAssetAcquireGuard(library, null);
|
|
9
|
+
}
|
|
10
|
+
// Installs opt-in caller-misuse warnings for acquireAsset. Core retains terse rejected promises and a
|
|
11
|
+
// null hook by default; omitting this module sheds the messages and @flighthq/log dependency.
|
|
12
|
+
export function enableAssetGuards(library) {
|
|
13
|
+
setAssetAcquireGuard(library, warnOnAssetAcquireFailure);
|
|
14
|
+
}
|
|
15
|
+
function warnOnAssetAcquireFailure(_library, explanation) {
|
|
16
|
+
if (explanation.status !== 'missing-descriptor' && explanation.status !== 'missing-loader')
|
|
17
|
+
return;
|
|
18
|
+
const message = explanation.status === 'missing-descriptor'
|
|
19
|
+
? `acquireAsset: no descriptor is registered for id "${explanation.id}"; call registerAssetDescriptor or registerAssetManifest before acquiring it.`
|
|
20
|
+
: `acquireAsset: no loader is registered for type "${explanation.type}"; call registerAssetLoader before acquiring "${explanation.id}".`;
|
|
21
|
+
logOnce(`assets:acquire:${explanation.status}:${explanation.type ?? ''}:${explanation.id}`, LogLevel.Warn, { ...explanation, message }, 'assets');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=enableAssetGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableAssetGuards.js","sourceRoot":"","sources":["../src/enableAssetGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,yBAAyB,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA+B;IAChE,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,sGAAsG;AACtG,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,OAA+B;IAC/D,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAgC,EAChC,WAA2C;IAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,oBAAoB,IAAI,WAAW,CAAC,MAAM,KAAK,gBAAgB;QAAE,OAAO;IACnG,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,KAAK,oBAAoB;QACzC,CAAC,CAAC,qDAAqD,WAAW,CAAC,EAAE,+EAA+E;QACpJ,CAAC,CAAC,mDAAmD,WAAW,CAAC,IAAI,iDAAiD,WAAW,CAAC,EAAE,IAAI,CAAC;IAC7I,OAAO,CACL,kBAAkB,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAClF,QAAQ,CAAC,IAAI,EACb,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,EAC3B,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainAssetLoad.d.ts","sourceRoot":"","sources":["../src/explainAssetLoad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAInF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,oBAAoB,CAwBlG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Reports the id's catalog, adapter, and residency state without initiating work. This is the pull
|
|
2
|
+
// diagnostic for getAsset's null sentinel and getAssetRefCount's zero sentinel.
|
|
3
|
+
export function explainAssetLoad(library, id) {
|
|
4
|
+
const runtime = library.runtime;
|
|
5
|
+
const descriptor = runtime.descriptors.get(id);
|
|
6
|
+
if (descriptor === undefined)
|
|
7
|
+
return { id, refCount: 0, status: 'missing-descriptor', type: null };
|
|
8
|
+
const type = descriptor.type;
|
|
9
|
+
if (!runtime.adapters.has(type))
|
|
10
|
+
return { id, refCount: 0, status: 'missing-loader', type };
|
|
11
|
+
const entry = runtime.entries.get(id);
|
|
12
|
+
if (entry !== undefined) {
|
|
13
|
+
return {
|
|
14
|
+
id,
|
|
15
|
+
refCount: entry.refcount,
|
|
16
|
+
status: entry.resident ? 'resident' : 'loading',
|
|
17
|
+
type,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
id,
|
|
22
|
+
refCount: 0,
|
|
23
|
+
status: runtime.freedIds.has(id) ? 'freed' : 'never-acquired',
|
|
24
|
+
type,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=explainAssetLoad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainAssetLoad.js","sourceRoot":"","sources":["../src/explainAssetLoad.ts"],"names":[],"mappings":"AAEA,mGAAmG;AACnG,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,OAA+B,EAAE,EAAU;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEnG,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAE5F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC/C,IAAI;SACL,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;QAC7D,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { acquireAsset, createAssetLibrary, disposeAssetLibrary, getAsset, getAssetRefCount, loadAssetGroup, registerAssetDescriptor, registerAssetLoader, registerAssetManifest, releaseAsset, releaseAssetGroup, } from './contract';
|
|
1
|
+
export { acquireAsset, areAssetGuardsEnabled, createAssetLibrary, disableAssetGuards, disposeAssetLibrary, enableAssetGuards, explainAssetLoad, getAsset, getAssetGroupIds, getAssetIds, getAssetRefCount, loadAssetGroup, registerAssetDescriptor, registerAssetLoader, registerAssetManifest, releaseAsset, releaseAssetGroup, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { acquireAsset, createAssetLibrary, disposeAssetLibrary, getAsset, getAssetRefCount, loadAssetGroup, registerAssetDescriptor, registerAssetLoader, registerAssetManifest, releaseAsset, releaseAssetGroup, } from './contract';
|
|
1
|
+
export { acquireAsset, areAssetGuardsEnabled, createAssetLibrary, disableAssetGuards, disposeAssetLibrary, enableAssetGuards, explainAssetLoad, getAsset, getAssetGroupIds, getAssetIds, getAssetRefCount, loadAssetGroup, registerAssetDescriptor, registerAssetLoader, registerAssetManifest, releaseAsset, releaseAssetGroup, } 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,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/assets",
|
|
3
|
-
"version": "0.3.0
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"author": "Joshua Granick and other contributors",
|
|
5
|
+
"license": "MIT",
|
|
4
6
|
"repository": {
|
|
5
7
|
"type": "git",
|
|
6
8
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,9 +38,10 @@
|
|
|
36
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
39
|
},
|
|
38
40
|
"dependencies": {
|
|
39
|
-
"@flighthq/loader": "0.3.0
|
|
40
|
-
"@flighthq/
|
|
41
|
-
"@flighthq/
|
|
41
|
+
"@flighthq/loader": "0.3.0",
|
|
42
|
+
"@flighthq/log": "0.3.0",
|
|
43
|
+
"@flighthq/signals": "0.3.0",
|
|
44
|
+
"@flighthq/types": "0.3.0"
|
|
42
45
|
},
|
|
43
46
|
"devDependencies": {
|
|
44
47
|
"typescript": "^5.3.0"
|
package/src/assetLibrary.test.ts
CHANGED
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
createAssetLibrary,
|
|
8
8
|
disposeAssetLibrary,
|
|
9
9
|
getAsset,
|
|
10
|
+
getAssetGroupIds,
|
|
11
|
+
getAssetIds,
|
|
10
12
|
getAssetRefCount,
|
|
11
13
|
loadAssetGroup,
|
|
12
14
|
registerAssetDescriptor,
|
|
@@ -14,6 +16,7 @@ import {
|
|
|
14
16
|
registerAssetManifest,
|
|
15
17
|
releaseAsset,
|
|
16
18
|
releaseAssetGroup,
|
|
19
|
+
setAssetAcquireGuard,
|
|
17
20
|
} from './assetLibrary';
|
|
18
21
|
|
|
19
22
|
// A mock loader adapter: counts load calls, records disposed values, and holds each load open until
|
|
@@ -171,6 +174,34 @@ describe('getAsset', () => {
|
|
|
171
174
|
});
|
|
172
175
|
});
|
|
173
176
|
|
|
177
|
+
describe('getAssetGroupIds', () => {
|
|
178
|
+
it('returns a detached snapshot of catalog group membership', () => {
|
|
179
|
+
const library = createAssetLibrary();
|
|
180
|
+
registerAssetManifest(library, [
|
|
181
|
+
{ groups: ['boot'], id: 'a', type: 'image', url: 'a.bin' },
|
|
182
|
+
{ groups: ['boot', 'shared'], id: 'b', type: 'image', url: 'b.bin' },
|
|
183
|
+
]);
|
|
184
|
+
const ids = getAssetGroupIds(library, 'boot') as string[];
|
|
185
|
+
expect(ids).toEqual(['a', 'b']);
|
|
186
|
+
ids.length = 0;
|
|
187
|
+
expect(getAssetGroupIds(library, 'boot')).toEqual(['a', 'b']);
|
|
188
|
+
expect(getAssetGroupIds(library, 'unknown')).toEqual([]);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
describe('getAssetIds', () => {
|
|
193
|
+
it('enumerates held loading and resident entries, then drops freed ids', async () => {
|
|
194
|
+
const { library, mock } = libraryWith('hero');
|
|
195
|
+
const pending = acquireAsset(library, 'hero');
|
|
196
|
+
expect(getAssetIds(library)).toEqual(['hero']);
|
|
197
|
+
mock.flush();
|
|
198
|
+
await pending;
|
|
199
|
+
expect(getAssetIds(library)).toEqual(['hero']);
|
|
200
|
+
releaseAsset(library, 'hero');
|
|
201
|
+
expect(getAssetIds(library)).toEqual([]);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
174
205
|
describe('getAssetRefCount', () => {
|
|
175
206
|
it('counts acquires and drops to zero when freed', async () => {
|
|
176
207
|
const { library, mock } = libraryWith('hero');
|
|
@@ -438,3 +469,15 @@ describe('releaseAssetGroup', () => {
|
|
|
438
469
|
expect(() => releaseAssetGroup(library, 'nope')).not.toThrow();
|
|
439
470
|
});
|
|
440
471
|
});
|
|
472
|
+
|
|
473
|
+
describe('setAssetAcquireGuard', () => {
|
|
474
|
+
it('installs and removes the per-library acquire failure hook', async () => {
|
|
475
|
+
const library = createAssetLibrary();
|
|
476
|
+
const statuses: string[] = [];
|
|
477
|
+
setAssetAcquireGuard(library, (_target, explanation) => statuses.push(explanation.status));
|
|
478
|
+
await expect(acquireAsset(library, 'missing')).rejects.toThrow('no descriptor');
|
|
479
|
+
setAssetAcquireGuard(library, null);
|
|
480
|
+
await expect(acquireAsset(library, 'still-missing')).rejects.toThrow('no descriptor');
|
|
481
|
+
expect(statuses).toEqual(['missing-descriptor']);
|
|
482
|
+
});
|
|
483
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { addLogSink, createMemoryLogSink, getMemoryLogSinkEntries, removeLogSink } from '@flighthq/log/contract';
|
|
2
|
+
import type { LogEntry } from '@flighthq/types/contract';
|
|
3
|
+
|
|
4
|
+
import { acquireAsset, createAssetLibrary, registerAssetDescriptor } from './assetLibrary';
|
|
5
|
+
import { areAssetGuardsEnabled, disableAssetGuards, enableAssetGuards } from './enableAssetGuards';
|
|
6
|
+
|
|
7
|
+
function captureLog(run: () => void): readonly LogEntry[] {
|
|
8
|
+
const sink = createMemoryLogSink(8);
|
|
9
|
+
addLogSink(sink.sink);
|
|
10
|
+
try {
|
|
11
|
+
run();
|
|
12
|
+
return getMemoryLogSinkEntries(sink);
|
|
13
|
+
} finally {
|
|
14
|
+
removeLogSink(sink.sink);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
describe('areAssetGuardsEnabled', () => {
|
|
19
|
+
it('reports guard state per library', () => {
|
|
20
|
+
const guarded = createAssetLibrary();
|
|
21
|
+
const unguarded = createAssetLibrary();
|
|
22
|
+
enableAssetGuards(guarded);
|
|
23
|
+
expect(areAssetGuardsEnabled(guarded)).toBe(true);
|
|
24
|
+
expect(areAssetGuardsEnabled(unguarded)).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
describe('disableAssetGuards', () => {
|
|
29
|
+
it('restores terse rejection without a warning', async () => {
|
|
30
|
+
const library = createAssetLibrary();
|
|
31
|
+
enableAssetGuards(library);
|
|
32
|
+
disableAssetGuards(library);
|
|
33
|
+
let rejection!: Promise<unknown>;
|
|
34
|
+
const entries = captureLog(() => {
|
|
35
|
+
rejection = acquireAsset(library, 'disabled');
|
|
36
|
+
});
|
|
37
|
+
await expect(rejection).rejects.toThrow('no descriptor');
|
|
38
|
+
expect(entries).toEqual([]);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
describe('enableAssetGuards', () => {
|
|
43
|
+
it('warns once with descriptor registration guidance while preserving the rejection', async () => {
|
|
44
|
+
const library = createAssetLibrary();
|
|
45
|
+
enableAssetGuards(library);
|
|
46
|
+
let first!: Promise<unknown>;
|
|
47
|
+
let second!: Promise<unknown>;
|
|
48
|
+
const entries = captureLog(() => {
|
|
49
|
+
first = acquireAsset(library, 'guard-missing-descriptor');
|
|
50
|
+
second = acquireAsset(library, 'guard-missing-descriptor');
|
|
51
|
+
});
|
|
52
|
+
await expect(first).rejects.toThrow('no descriptor');
|
|
53
|
+
await expect(second).rejects.toThrow('no descriptor');
|
|
54
|
+
expect(entries).toHaveLength(1);
|
|
55
|
+
expect(entries[0]).toMatchObject({ channel: 'assets' });
|
|
56
|
+
expect(entries[0].data).toMatchObject({ id: 'guard-missing-descriptor', status: 'missing-descriptor' });
|
|
57
|
+
expect(String((entries[0].data as Record<string, unknown>).message)).toContain('registerAssetDescriptor');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('identifies an unregistered loader type and names its fixing call', async () => {
|
|
61
|
+
const library = createAssetLibrary();
|
|
62
|
+
registerAssetDescriptor(library, { id: 'guard-missing-loader', type: 'acme.custom', url: 'asset.bin' });
|
|
63
|
+
enableAssetGuards(library);
|
|
64
|
+
let rejection!: Promise<unknown>;
|
|
65
|
+
const entries = captureLog(() => {
|
|
66
|
+
rejection = acquireAsset(library, 'guard-missing-loader');
|
|
67
|
+
});
|
|
68
|
+
await expect(rejection).rejects.toThrow('no loader');
|
|
69
|
+
expect(entries).toHaveLength(1);
|
|
70
|
+
expect(entries[0].data).toMatchObject({ status: 'missing-loader', type: 'acme.custom' });
|
|
71
|
+
expect(String((entries[0].data as Record<string, unknown>).message)).toContain('registerAssetLoader');
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AssetDescriptor } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
acquireAsset,
|
|
5
|
+
createAssetLibrary,
|
|
6
|
+
registerAssetDescriptor,
|
|
7
|
+
registerAssetLoader,
|
|
8
|
+
releaseAsset,
|
|
9
|
+
} from './assetLibrary';
|
|
10
|
+
import { explainAssetLoad } from './explainAssetLoad';
|
|
11
|
+
|
|
12
|
+
describe('explainAssetLoad', () => {
|
|
13
|
+
it('distinguishes catalog, adapter, loading, resident, and freed states', async () => {
|
|
14
|
+
const library = createAssetLibrary();
|
|
15
|
+
expect(explainAssetLoad(library, 'hero')).toEqual({
|
|
16
|
+
id: 'hero',
|
|
17
|
+
refCount: 0,
|
|
18
|
+
status: 'missing-descriptor',
|
|
19
|
+
type: null,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const descriptor: AssetDescriptor = { id: 'hero', type: 'image', url: 'hero.bin' };
|
|
23
|
+
registerAssetDescriptor(library, descriptor);
|
|
24
|
+
expect(explainAssetLoad(library, 'hero')).toEqual({
|
|
25
|
+
id: 'hero',
|
|
26
|
+
refCount: 0,
|
|
27
|
+
status: 'missing-loader',
|
|
28
|
+
type: 'image',
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
let settle!: (value: { id: string }) => void;
|
|
32
|
+
registerAssetLoader(library, 'image', {
|
|
33
|
+
dispose(): void {},
|
|
34
|
+
load(): Promise<{ id: string }> {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
settle = resolve;
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
expect(explainAssetLoad(library, 'hero')).toMatchObject({ refCount: 0, status: 'never-acquired' });
|
|
41
|
+
|
|
42
|
+
const pending = acquireAsset(library, 'hero');
|
|
43
|
+
expect(explainAssetLoad(library, 'hero')).toMatchObject({ refCount: 1, status: 'loading' });
|
|
44
|
+
settle({ id: 'hero' });
|
|
45
|
+
await pending;
|
|
46
|
+
expect(explainAssetLoad(library, 'hero')).toMatchObject({ refCount: 1, status: 'resident' });
|
|
47
|
+
|
|
48
|
+
releaseAsset(library, 'hero');
|
|
49
|
+
expect(explainAssetLoad(library, 'hero')).toMatchObject({ refCount: 0, status: 'freed' });
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('treats a replacement descriptor as a new never-acquired catalog entry', async () => {
|
|
53
|
+
const library = createAssetLibrary();
|
|
54
|
+
registerAssetLoader(library, 'image', {
|
|
55
|
+
dispose(): void {},
|
|
56
|
+
load: async () => ({ id: 'hero' }),
|
|
57
|
+
});
|
|
58
|
+
registerAssetDescriptor(library, { id: 'hero', type: 'image', url: 'hero-a.bin' });
|
|
59
|
+
await acquireAsset(library, 'hero');
|
|
60
|
+
releaseAsset(library, 'hero');
|
|
61
|
+
registerAssetDescriptor(library, { id: 'hero', type: 'image', url: 'hero-b.bin' });
|
|
62
|
+
expect(explainAssetLoad(library, 'hero')).toMatchObject({ status: 'never-acquired' });
|
|
63
|
+
});
|
|
64
|
+
});
|