@flighthq/assets 0.3.0-next.1392.f0bd0cc → 0.3.0-next.1422.b585c0c
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 +28 -2
- 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 +5 -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":"AAQA,OAAO,KAAK,
|
|
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
|
@@ -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) {
|
|
@@ -150,6 +168,8 @@ export function registerAssetDescriptor(library, descriptor) {
|
|
|
150
168
|
}
|
|
151
169
|
if (previous !== undefined)
|
|
152
170
|
removeAssetDescriptorGroups(runtime, previous);
|
|
171
|
+
if (previous !== undefined && !isEquivalentAssetDescriptor(previous, descriptor))
|
|
172
|
+
runtime.freedIds.delete(descriptor.id);
|
|
153
173
|
const storedDescriptor = copyAssetDescriptor(descriptor);
|
|
154
174
|
runtime.descriptors.set(descriptor.id, storedDescriptor);
|
|
155
175
|
const groups = storedDescriptor.groups;
|
|
@@ -214,11 +234,17 @@ export function releaseAssetGroup(library, name) {
|
|
|
214
234
|
for (const id of ids)
|
|
215
235
|
releaseAsset(library, id);
|
|
216
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
|
+
}
|
|
217
242
|
// Drops the cache entry and, when the asset actually decoded, frees it through its adapter. An entry
|
|
218
243
|
// whose load never settled (released mid-flight) has nothing decoded to free; the in-flight load's own
|
|
219
244
|
// continuation disposes the orphaned value once it resolves.
|
|
220
245
|
function disposeAssetEntry(runtime, id, entry) {
|
|
221
246
|
runtime.entries.delete(id);
|
|
247
|
+
runtime.freedIds.add(id);
|
|
222
248
|
if (!entry.resident)
|
|
223
249
|
return;
|
|
224
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,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/assets",
|
|
3
|
-
"version": "0.3.0-next.
|
|
3
|
+
"version": "0.3.0-next.1422.b585c0c",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,9 +36,10 @@
|
|
|
36
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@flighthq/loader": "0.3.0-next.
|
|
40
|
-
"@flighthq/
|
|
41
|
-
"@flighthq/
|
|
39
|
+
"@flighthq/loader": "0.3.0-next.1422.b585c0c",
|
|
40
|
+
"@flighthq/log": "0.3.0-next.1422.b585c0c",
|
|
41
|
+
"@flighthq/signals": "0.3.0-next.1422.b585c0c",
|
|
42
|
+
"@flighthq/types": "0.3.0-next.1422.b585c0c"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
45
|
"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
|
+
});
|