3 let speedtestJs
= 'speedtest1.js';
4 const urlParams
= new URL(self
.location
.href
).searchParams
;
5 if(urlParams
.has('sqlite3.dir')){
6 speedtestJs
= urlParams
.get('sqlite3.dir') + '/' + speedtestJs
;
8 importScripts('common/whwasmutil.js', speedtestJs
);
10 If this environment contains OPFS, this function initializes it and
11 returns the name of the dir on which OPFS is mounted, else it returns
14 const wasmfsDir
= function f(wasmUtil
){
15 if(undefined !== f
._
) return f
._
;
17 if( !self
.FileSystemHandle
18 || !self
.FileSystemDirectoryHandle
19 || !self
.FileSystemFileHandle
){
23 if(0===wasmUtil
.xCallWrapped(
24 'sqlite3_wasm_init_wasmfs', 'i32', ['string'], pdir
31 // sqlite3_wasm_init_wasmfs() is not available
35 wasmfsDir
._
= undefined;
37 const mPost = function(msgType
,payload
){
38 postMessage({type
: msgType
, data
: payload
});
41 const App
= Object
.create(null);
43 const logMsg
= (type
,msgArgs
)=>{
44 const msg
= msgArgs
.join(' ');
45 App
.logBuffer
.push(msg
);
48 const log
= (...args
)=>logMsg('stdout',args
);
49 const logErr
= (...args
)=>logMsg('stderr',args
);
51 const runSpeedtest = function(cliFlagsArray
){
52 const scope
= App
.wasm
.scopedAllocPush();
53 const dbFile
= App
.pDir
+"/speedtest1.sqlite3";
56 "speedtest1.wasm", ...cliFlagsArray
, dbFile
58 App
.logBuffer
.length
= 0;
59 mPost('run-start', [...argv
]);
60 App
.wasm
.xCall('wasm_main', argv
.length
,
61 App
.wasm
.scopedAllocMainArgv(argv
));
63 mPost('error',e
.message
);
65 App
.wasm
.scopedAllocPop(scope
);
66 mPost('run-end', App
.logBuffer
.join('\n'));
67 App
.logBuffer
.length
= 0;
71 self
.onmessage = function(msg
){
74 case 'run': runSpeedtest(msg
.data
|| []); break;
76 logErr("Unhandled worker message type:",msg
.type
);
81 const EmscriptenModule
= {
84 setStatus
: (text
)=>mPost('load-status',text
)
86 self
.sqlite3InitModule(EmscriptenModule
).then((sqlite3
)=>{
88 App
.vfsUnlink = function(pDb
, fname
){
89 const pVfs
= S
.wasm
.sqlite3_wasm_db_vfs(pDb
, 0);
90 if(pVfs
) S
.wasm
.sqlite3_wasm_vfs_unlink(pVfs
, fname
||0);
92 App
.pDir
= wasmfsDir(S
.wasm
);
94 //if(App.pDir) log("Persistent storage:",pDir);
95 //else log("Using transient storage.");
97 log("Registered VFSes:", ...S
.capi
.sqlite3_js_vfs_list());