mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
Add JS bundler-friendly JS build. Minor test code cleanups.
FossilOrigin-Name: 24d3a53dea5e596230558e233cbbd9d0288b4c394cd5ea7b650fd99bff4cde2e
This commit is contained in:
@ -9,7 +9,7 @@
|
||||
Emscripten-generated module init scope, in the current
|
||||
global scope. */
|
||||
//#if target=es6-module
|
||||
const toExportForES6 =
|
||||
const toExportForESM =
|
||||
//#endif
|
||||
(function(){
|
||||
/**
|
||||
@ -45,10 +45,10 @@ const toExportForES6 =
|
||||
moduleScript: self?.document?.currentScript,
|
||||
isWorker: ('undefined' !== typeof WorkerGlobalScope),
|
||||
location: self.location,
|
||||
urlParams: new URL(self.location.href).searchParams
|
||||
urlParams: new URL(self.location.href).searchParams
|
||||
});
|
||||
initModuleState.debugModule =
|
||||
(new URL(self.location.href).searchParams).has('sqlite3.debugModule')
|
||||
initModuleState.urlParams.has('sqlite3.debugModule')
|
||||
? (...args)=>console.warn('sqlite3.debugModule:',...args)
|
||||
: ()=>{};
|
||||
|
||||
@ -105,6 +105,10 @@ const toExportForES6 =
|
||||
document?.currentScript?.src);
|
||||
}
|
||||
}
|
||||
//#ifnot target=es6-module
|
||||
// Emscripten does not inject these module-loader bits in ES6 module
|
||||
// builds and including them here breaks JS bundlers, so elide them
|
||||
// from ESM builds.
|
||||
/* Replace the various module exports performed by the Emscripten
|
||||
glue... */
|
||||
if (typeof exports === 'object' && typeof module === 'object'){
|
||||
@ -114,8 +118,9 @@ const toExportForES6 =
|
||||
}
|
||||
/* AMD modules get injected in a way we cannot override,
|
||||
so we can't handle those here. */
|
||||
//#endif // !target=es6-module
|
||||
return self.sqlite3InitModule /* required for ESM */;
|
||||
})();
|
||||
//#if target=es6-module
|
||||
export default toExportForES6;
|
||||
export default toExportForESM;
|
||||
//#endif
|
||||
|
@ -6,12 +6,14 @@
|
||||
*/
|
||||
|
||||
// See notes in extern-post-js.js
|
||||
const sqlite3InitModuleState = self.sqlite3InitModuleState || Object.assign(Object.create(null),{
|
||||
debugModule: ()=>{}
|
||||
});
|
||||
const sqlite3InitModuleState = self.sqlite3InitModuleState
|
||||
|| Object.assign(Object.create(null),{
|
||||
debugModule: ()=>{}
|
||||
});
|
||||
delete self.sqlite3InitModuleState;
|
||||
sqlite3InitModuleState.debugModule('self.location =',self.location);
|
||||
|
||||
//#ifnot target=es6-bundler-friendly
|
||||
/**
|
||||
This custom locateFile() tries to figure out where to load `path`
|
||||
from. The intent is to provide a way for foo/bar/X.js loaded from a
|
||||
@ -53,8 +55,9 @@ Module['locateFile'] = function(path, prefix) {
|
||||
"result =", theFile
|
||||
);
|
||||
return theFile;
|
||||
//#endif /* SQLITE_JS_EMS */
|
||||
//#endif target=es6-module
|
||||
}.bind(sqlite3InitModuleState);
|
||||
//#endif ifnot target=es6-bundler-friendly
|
||||
|
||||
/**
|
||||
Bug warning: a custom Module.instantiateWasm() does not work
|
||||
@ -64,7 +67,7 @@ Module['locateFile'] = function(path, prefix) {
|
||||
|
||||
In such builds we must disable this.
|
||||
*/
|
||||
const xNameOfInstantiateWasm = true
|
||||
const xNameOfInstantiateWasm = false
|
||||
? 'instantiateWasm'
|
||||
: 'emscripten-bug-17951';
|
||||
Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
|
||||
|
@ -183,7 +183,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
||||
checkSqlite3Rc(
|
||||
pDb, capi.sqlite3_exec(pDb, postInitSql, 0, 0, 0)
|
||||
);
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
this.close();
|
||||
throw e;
|
||||
@ -791,6 +791,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
||||
- `callback` and `resultRows`: permit an array entries with
|
||||
semantics similar to those described for `bind` above.
|
||||
|
||||
- If passed neither a callback nor returnValue but is passed a
|
||||
rowMode, default to returning the result set.
|
||||
|
||||
*/
|
||||
exec: function(/*(sql [,obj]) || (obj)*/){
|
||||
affirmDbOpen(this);
|
||||
|
@ -198,7 +198,9 @@ const installOpfsVfs = function callee(options){
|
||||
return promiseReject_(err);
|
||||
};
|
||||
const W =
|
||||
//#if target=es6-module
|
||||
//#if target=es6-bundler-friendly
|
||||
new Worker(new URL("sqlite3-opfs-async-proxy.js", import.meta.url));
|
||||
//#elif target=es6-module
|
||||
new Worker(new URL(options.proxyUri, import.meta.url));
|
||||
//#else
|
||||
new Worker(options.proxyUri);
|
||||
|
@ -238,6 +238,9 @@ self.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig){
|
||||
}/*sqlite3Worker1Promiser()*/;
|
||||
self.sqlite3Worker1Promiser.defaultConfig = {
|
||||
worker: function(){
|
||||
//#if target=es6-bundler-friendly
|
||||
return new Worker("sqlite3-worker1.js");
|
||||
//#else
|
||||
let theJs = "sqlite3-worker1.js";
|
||||
if(this.currentScript){
|
||||
const src = this.currentScript.src.split('/');
|
||||
@ -252,6 +255,7 @@ self.sqlite3Worker1Promiser.defaultConfig = {
|
||||
}
|
||||
}
|
||||
return new Worker(theJs + self.location.search);
|
||||
//#endif
|
||||
}.bind({
|
||||
currentScript: self?.document?.currentScript
|
||||
}),
|
||||
|
@ -33,6 +33,9 @@
|
||||
*/
|
||||
"use strict";
|
||||
(()=>{
|
||||
//#if target=es6-bundler-friendly
|
||||
importScripts('sqlite3.js');
|
||||
//#else
|
||||
const urlParams = new URL(self.location.href).searchParams;
|
||||
let theJs = 'sqlite3.js';
|
||||
if(urlParams.has('sqlite3.dir')){
|
||||
@ -40,6 +43,7 @@
|
||||
}
|
||||
//console.warn("worker1 theJs =",theJs);
|
||||
importScripts(theJs);
|
||||
//#endif
|
||||
sqlite3InitModule().then((sqlite3)=>{
|
||||
sqlite3.initWorker1API();
|
||||
});
|
||||
|
Reference in New Issue
Block a user