diff options
author | stephan <stephan@noemail.net> | 2022-11-30 18:21:01 +0000 |
---|---|---|
committer | stephan <stephan@noemail.net> | 2022-11-30 18:21:01 +0000 |
commit | ec192e0659cd0fac1a29616c81a693f696f6f24a (patch) | |
tree | 9db60b1f182e64a296c6005a12c9b4ebf1858aad /ext/wasm/api/extern-post-js.js | |
parent | a42281a312459d266d4a2189c43b80e83d2ab8e7 (diff) | |
download | sqlite-ec192e0659cd0fac1a29616c81a693f696f6f24a.tar.gz sqlite-ec192e0659cd0fac1a29616c81a693f696f6f24a.zip |
Rename some JS files from X.js to X.c-pp.js to keep the maintainer, and downstream build customizers, aware that those files contain constructs specific to the c-pp preprocessor and will not run as-is in JS.
FossilOrigin-Name: 2eade7c7b17a186735c72974c11a34798a08364861d0f307e897ba765c0a93c7
Diffstat (limited to 'ext/wasm/api/extern-post-js.js')
-rw-r--r-- | ext/wasm/api/extern-post-js.js | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/ext/wasm/api/extern-post-js.js b/ext/wasm/api/extern-post-js.js deleted file mode 100644 index 225869794..000000000 --- a/ext/wasm/api/extern-post-js.js +++ /dev/null @@ -1,121 +0,0 @@ - -/* ^^^^ ACHTUNG: blank line at the start is necessary because - Emscripten will not add a newline in some cases and we need - a blank line for a sed-based kludge for the ES6 build. */ -/* extern-post-js.js must be appended to the resulting sqlite3.js - file. It gets its name from being used as the value for the - --extern-post-js=... Emscripten flag. Note that this code, unlike - most of the associated JS code, runs outside of the - Emscripten-generated module init scope, in the current - global scope. */ -//#if target=es6-module -const toExportForES6 = -//#endif -(function(){ - /** - In order to hide the sqlite3InitModule()'s resulting - Emscripten module from downstream clients (and simplify our - documentation by being able to elide those details), we hide that - function and expose a hand-written sqlite3InitModule() to return - the sqlite3 object (most of the time). - - Unfortunately, we cannot modify the module-loader/exporter-based - impls which Emscripten installs at some point in the file above - this. - */ - const originalInit = - /* Maintenance reminder: DO NOT use `self.` here. It's correct - for non-ES6 Module cases but wrong for ES6 modules because those - resolve this symbol differently. */ sqlite3InitModule; - if(!originalInit){ - throw new Error("Expecting self.sqlite3InitModule to be defined by the Emscripten build."); - } - /** - We need to add some state which our custom Module.locateFile() - can see, but an Emscripten limitation currently prevents us from - attaching it to the sqlite3InitModule function object: - - https://github.com/emscripten-core/emscripten/issues/18071 - - The only(?) current workaround is to temporarily stash this state - into the global scope and delete it when sqlite3InitModule() - is called. - */ - const initModuleState = self.sqlite3InitModuleState = Object.assign(Object.create(null),{ - moduleScript: self?.document?.currentScript, - isWorker: ('undefined' !== typeof WorkerGlobalScope), - location: self.location, - urlParams: new URL(self.location.href).searchParams - }); - initModuleState.debugModule = - (new URL(self.location.href).searchParams).has('sqlite3.debugModule') - ? (...args)=>console.warn('sqlite3.debugModule:',...args) - : ()=>{}; - - if(initModuleState.urlParams.has('sqlite3.dir')){ - initModuleState.sqlite3Dir = initModuleState.urlParams.get('sqlite3.dir') +'/'; - }else if(initModuleState.moduleScript){ - const li = initModuleState.moduleScript.src.split('/'); - li.pop(); - initModuleState.sqlite3Dir = li.join('/') + '/'; - } - - self.sqlite3InitModule = function ff(...args){ - //console.warn("Using replaced sqlite3InitModule()",self.location); - return originalInit(...args).then((EmscriptenModule)=>{ - if(self.window!==self && - (EmscriptenModule['ENVIRONMENT_IS_PTHREAD'] - || EmscriptenModule['_pthread_self'] - || 'function'===typeof threadAlert - || self.location.pathname.endsWith('.worker.js') - )){ - /** Workaround for wasmfs-generated worker, which calls this - routine from each individual thread and requires that its - argument be returned. All of the criteria above are fragile, - based solely on inspection of the offending code, not public - Emscripten details. */ - return EmscriptenModule; - } - const s = EmscriptenModule.sqlite3; - s.scriptInfo = initModuleState; - //console.warn("sqlite3.scriptInfo =",s.scriptInfo); - if(ff.__isUnderTest) s.__isUnderTest = true; - const f = s.asyncPostInit; - delete s.asyncPostInit; - return f(); - }).catch((e)=>{ - console.error("Exception loading sqlite3 module:",e); - throw e; - }); - }; - self.sqlite3InitModule.ready = originalInit.ready; - - if(self.sqlite3InitModuleState.moduleScript){ - const sim = self.sqlite3InitModuleState; - let src = sim.moduleScript.src.split('/'); - src.pop(); - sim.scriptDir = src.join('/') + '/'; - } - initModuleState.debugModule('sqlite3InitModuleState =',initModuleState); - if(0){ - console.warn("Replaced sqlite3InitModule()"); - console.warn("self.location.href =",self.location.href); - if('undefined' !== typeof document){ - console.warn("document.currentScript.src =", - document?.currentScript?.src); - } - } - /* Replace the various module exports performed by the Emscripten - glue... */ - if (typeof exports === 'object' && typeof module === 'object'){ - module.exports = sqlite3InitModule; - }else if (typeof exports === 'object'){ - exports["sqlite3InitModule"] = sqlite3InitModule; - } - /* AMD modules get injected in a way we cannot override, - so we can't handle those here. */ - return self.sqlite3InitModule /* required for ESM */; -})(); -//#if target=es6-module -export default toExportForES6; -//#endif |