Initial Commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import type {
|
||||
PackedResourceLoadOptions,
|
||||
StreamLoadEntry,
|
||||
} from "../loader/loader-stream.types.js";
|
||||
import type { PackedResourceManager } from "./manager.js";
|
||||
import type { PackedResourceLoadCallOptions } from "./manager.types.js";
|
||||
import type { ManagerStreamedEntry } from "./manager-stream.types.js";
|
||||
|
||||
/**
|
||||
* Implementation of `PackedResourceManager.loadStream`. Builds the
|
||||
* loader-side options bundle, drives the loader's streaming iterator,
|
||||
* and inserts each entry into the manager's cache + emits a `load`
|
||||
* event before yielding to the caller.
|
||||
*
|
||||
* Kept as a free function so `manager.ts` stays under the 300-line
|
||||
* hard cap (CLAUDE.md §3).
|
||||
*/
|
||||
export async function* managerLoadStream(
|
||||
manager: PackedResourceManager,
|
||||
opts: PackedResourceLoadCallOptions,
|
||||
inputs: ReadonlyArray<string | StreamLoadEntry>
|
||||
): AsyncIterableIterator<ManagerStreamedEntry> {
|
||||
manager._checkAbortedExt(opts.signal);
|
||||
const loadOpts = buildLoaderOptions(manager, opts);
|
||||
for await (const entry of manager
|
||||
.getLoader()
|
||||
.loadStream(inputs, loadOpts)) {
|
||||
manager._streamInsert(
|
||||
entry.inputUrl,
|
||||
opts.verifyKey,
|
||||
entry.blob,
|
||||
entry.url,
|
||||
entry.metadata
|
||||
);
|
||||
yield {
|
||||
url: entry.url,
|
||||
inputUrl: entry.inputUrl,
|
||||
metadata: entry.metadata,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function buildLoaderOptions(
|
||||
manager: PackedResourceManager,
|
||||
opts: PackedResourceLoadCallOptions
|
||||
): PackedResourceLoadOptions {
|
||||
const loadOpts: PackedResourceLoadOptions = {};
|
||||
if (opts.verifyChecksum !== undefined)
|
||||
loadOpts.verifyChecksum = opts.verifyChecksum;
|
||||
if (opts.verifyKey !== undefined) loadOpts.verifyKey = opts.verifyKey;
|
||||
if (opts.signal !== undefined) loadOpts.signal = opts.signal;
|
||||
if (opts.retryConfig !== undefined) loadOpts.retryConfig = opts.retryConfig;
|
||||
if (opts.allowedMimePrefixes !== undefined)
|
||||
loadOpts.allowedMimePrefixes = opts.allowedMimePrefixes;
|
||||
if (opts.keyring !== undefined) loadOpts.keyring = opts.keyring;
|
||||
const resolver = manager._getDefaultResolver();
|
||||
if (resolver !== undefined) loadOpts.messageResolver = resolver;
|
||||
return loadOpts;
|
||||
}
|
||||
Reference in New Issue
Block a user