Move web/ to javascript/ and declare it via [tool.comfy] web. Rename the seven third-party bundles (playcanvas, spark, three.js, gsplat, OrbitControls, TrackballControls) to .mjs. Every reference to them is inside the HTML viewers, but ComfyUI auto-imports **/*.js under the web dir into the shared browser realm, so ~8MB of vendor code was being evaluated in the main page on every startup -- and with it 36 collision errors: document.body injection, document-level listeners, unguarded message listeners and self.onmessage writes. The importmap values, script srcs and three.module's internal ./three.core ref are rewritten to match. DisplayName becomes "GaussianPack": the namespace enforced on registerExtension names is derived from it, and "ComfyUI-GaussianPack" made that prefix invalid. The analysis extension is renamed to match. js/gaussian_preview.js hooked "PlyPreviewLoadGaussianPLYEnhance", a node id that appears nowhere in this repo, so the PLY dropdown auto-refresh had never run; it now targets LoadPLY and LoadPLYOutput, the two nodes that actually carry the ply_file widget. Guard its message listener on event.source. Asset seeding resolves the input directory through folder_paths.get_input_directory(), so it follows ComfyUI Desktop and --input-directory instead of writing into the code tree. comfy-test.toml moves to the current schema: [test.workflows] cuda (there is no "gpu" key -- the accelerator is named by backend, and the old spelling parsed to an empty list, so CUDA runners silently ran the full unfiltered set), an explicit [test.platforms] platforms allowlist (per-platform booleans are no longer supported), and the javascript level.
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
const createStream = (data) => {
|
|
return new ReadableStream({
|
|
async start(controller) {
|
|
controller.enqueue(data);
|
|
controller.close();
|
|
},
|
|
});
|
|
};
|
|
export async function decompressGzipped(data) {
|
|
try {
|
|
const stream = createStream(data);
|
|
if (!stream)
|
|
throw new Error('Failed to create stream from data');
|
|
return await decompressGzipStream(stream);
|
|
}
|
|
catch (error) {
|
|
console.error('Error decompressing gzipped data:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
export async function decompressGzipStream(stream) {
|
|
const decompressor = new DecompressionStream('gzip');
|
|
const decompressedStream = stream.pipeThrough(decompressor);
|
|
const response = new Response(decompressedStream);
|
|
const buffer = await response.arrayBuffer();
|
|
return new Uint8Array(buffer);
|
|
}
|
|
export async function compressGzipped(data) {
|
|
try {
|
|
const stream = createStream(data);
|
|
const compressor = new CompressionStream('gzip');
|
|
const compressedStream = stream.pipeThrough(compressor);
|
|
const response = new Response(compressedStream);
|
|
const buffer = await response.arrayBuffer();
|
|
return new Uint8Array(buffer);
|
|
}
|
|
catch (error) {
|
|
console.error('Error compressing gzipped data:', error);
|
|
throw error;
|
|
}
|
|
}
|