@@ -60,26 +60,33 @@ const libraryEnv = {
6060 throw `proc exit: ${ code } ` ;
6161 } ,
6262} ;
63- const dracoModulePromise = ( async ( ) => {
64- const m = ( wasmModule = (
65- await WebAssembly . instantiateStreaming (
66- fetch ( new URL ( "./neuroglancer_draco.wasm" , import . meta. url ) ) ,
67- {
68- env : libraryEnv ,
69- wasi_snapshot_preview1 : libraryEnv ,
70- } ,
71- )
72- ) . instance ) ;
73- ( m . exports . _initialize as Function ) ( ) ;
74- return m ;
75- } ) ( ) ;
63+ let dracoModulePromise : Promise < WebAssembly . Instance > | undefined ;
64+
65+ function getDracoModulePromise ( ) {
66+ if ( dracoModulePromise == undefined ) {
67+ dracoModulePromise = ( async ( ) => {
68+ const m = ( wasmModule = (
69+ await WebAssembly . instantiateStreaming (
70+ fetch ( new URL ( "./neuroglancer_draco.wasm" , import . meta. url ) ) ,
71+ {
72+ env : libraryEnv ,
73+ wasi_snapshot_preview1 : libraryEnv ,
74+ } ,
75+ )
76+ ) . instance ) ;
77+ ( m . exports . _initialize as Function ) ( ) ;
78+ return m ;
79+ } ) ( ) ;
80+ }
81+ return dracoModulePromise ;
82+ }
7683
7784export async function decodeDracoPartitioned (
7885 buffer : Uint8Array ,
7986 vertexQuantizationBits : number ,
8087 partition : boolean ,
8188) : Promise < RawPartitionedMeshData > {
82- const m = await dracoModulePromise ;
89+ const m = await getDracoModulePromise ( ) ;
8390 const offset = ( m . exports . malloc as Function ) ( buffer . byteLength ) ;
8491 const heap = new Uint8Array ( ( m . exports . memory as WebAssembly . Memory ) . buffer ) ;
8592 heap . set ( buffer , offset ) ;
@@ -101,7 +108,7 @@ export async function decodeDracoPartitioned(
101108}
102109
103110export async function decodeDraco ( buffer : Uint8Array ) : Promise < RawMeshData > {
104- const m = await dracoModulePromise ;
111+ const m = await getDracoModulePromise ( ) ;
105112 const offset = ( m . exports . malloc as Function ) ( buffer . byteLength ) ;
106113 const heap = new Uint8Array ( ( m . exports . memory as WebAssembly . Memory ) . buffer ) ;
107114 heap . set ( buffer , offset ) ;
0 commit comments