Install a suitable default configuration for sqlite3ApiBootstrap().
*/
const SABC = self.sqlite3ApiBootstrap.defaultConfig;
- SABC.Module = Module /* ==> Current needs to be exposed here for test code. NOT part
+ SABC.Module = Module /* ==> Currently needs to be exposed here for test code. NOT part
of the public API. */;
SABC.exports = Module['asm'];
SABC.memory = Module.wasmMemory /* gets set if built with -sIMPORT_MEMORY */;
config[k] = config[k]();
}
});
-
+
/** Throws a new Error, the message of which is the concatenation
all args with a space between each. */
const toss = (...args)=>{throw new Error(args.join(' '))};
toss("Throwing because of simulateError flag.");
}
if(args.persistent && args.filename){
- oargs.filaname = sqlite3.capi.sqlite3_web_persistent_dir() + args.filename;
+ oargs.filename = sqlite3.capi.sqlite3_web_persistent_dir() + args.filename;
}else if('' === args.filename){
oargs.filename = args.filename;
}else{
slightly simpler client-side interface than the slightly-lower-level
Worker API does.
- This script necessarily exposes on global symbol, but clients may
+ This script necessarily exposes one global symbol, but clients may
freely `delete` that symbol after calling it.
*/
'use strict';
information about messages.
- This function returns a stateful factory function with the following
- interfaces:
+ This function returns a stateful factory function with the
+ following interfaces:
- Promise function(messageType, messageArgs)
- Promise function({message object})
default:
break;
}
- msgHandler.resolve(ev);
+ try {
+ msgHandler.resolve(ev);
+ }catch(e){
+ msgHandler.reject(e);
+ }
}/*worker.onmessage()*/;
return function(/*(msgType, msgArgs) || (msg)*/){
let msg;
}
}
//debug("requestWork", msg);
- const p = new Promise(function(resolve, reject){
+ let p = new Promise(function(resolve, reject){
proxy.resolve = resolve;
proxy.reject = reject;
handlerMap[msg.messageId] = proxy;
debug("Posting",msg.type,"message to Worker dbId="+(config.dbId||'default')+':',msg);
config.worker.postMessage(msg);
});
- if(cbId) p.finally(()=>delete handlerMap[cbId]);
+ if(cbId) p = p.finally(()=>delete handlerMap[cbId]);
return p;
};
}/*sqlite3Worker1Promiser()*/;
self.sqlite3Worker1Promiser.defaultConfig = {
worker: ()=>new Worker('sqlite3-worker1.js'),
- onerror: console.error.bind(console),
+ onerror: (...args)=>console.error('worker1 error',...args),
dbId: undefined
};
};
let startTime;
- const logEventResult = async function(evd){
- logHtml(evd.errorClass ? 'error' : '',
- "response to",evd.messageId,"Worker time =",
- (evd.workerRespondTime - evd.workerReceivedTime),"ms.",
- "Round-trip event time =",
- (performance.now() - evd.departureTime),"ms.",
- (evd.errorClass ? evd.message : "")
- );
- };
-
const testCount = async ()=>{
logHtml("","Total test count:",T.counter+". Total time =",(performance.now() - startTime),"ms");
};
delete self.sqlite3Worker1Promiser;
const wtest = async function(msgType, msgArgs, callback){
- let p = workerPromise({type: msgType, args:msgArgs});
- if(callback) p.then(callback).finally(testCount);
- return p;
+ const p = workerPromise({type: msgType, args:msgArgs});
+ return callback ? p.then(callback).finally(testCount) : p;
};
const runTests = async function(){
+ const dbFilename = '/testing2.sqlite3';
logHtml('',
"Sending 'open' message and waiting for its response before continuing.");
startTime = performance.now();
- wtest('open', {
- filename:'testing2.sqlite3',
- simulateError: 0 /* if true, fail the 'open' */
+ await wtest('open', {
+ filename: dbFilename,
+ persistent: true,
+ simulateError: 0 /* if true, fail the 'open' */,
}, function(ev){
log("then open result",ev);
- T.assert('testing2.sqlite3'===ev.result.filename)
+ T.assert(1 && (dbFilename===ev.result.filename
+ || (sqlite3TestModule.sqlite3ApiConfig.persistentDirName
+ + dbFilename)==ev.result.filename))
.assert(ev.dbId)
.assert(ev.messageId)
.assert(promiserConfig.dbId === ev.dbId);
- }).then(runTests2)
- .catch((err)=>error("error response:",err));
+ }).then(runTests2);
};
const runTests2 = async function(){
-C More\swork\son\show\sto\sconfigure\sthe\ssqlite3\sJS\sAPI\sbootstrapping\sprocess\sfrom\shigher-level\scode.\sInitial\sversion\sof\ssqlite3-worker1-promiser,\sa\sPromise-based\sproxy\sfor\sthe\sWorker\sAPI\s#1.
-D 2022-08-24T05:59:23.851
+C js:\sresolve\sthe\smysterious\s"extra"\sunhandled\sexception\snotification,\scaused\sby\sinadvertently\sforking\sone\spromise\sinto\stwo\sseparate\sones\s(failing\sto\sproperly\sreassign\sa\sthen()\sresult).\sFix\sa\stypo\sin\snew\sWorker\s1\scode\swhich\scaused\sthe\sDB(filename)\sname\sto\sbe\sincorrect.
+D 2022-08-24T14:50:10.920
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F ext/wasm/api/README.md d876597edd2b9542b6ea031adaaff1c042076fde7b670b1dc6d8a87b28a6631b
F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba81456260a713ed04900c
F ext/wasm/api/post-js-header.js 0e853b78db83cb1c06b01663549e0e8b4f377f12f5a2d9a4a06cb776c003880b
-F ext/wasm/api/sqlite3-api-cleanup.js 4c353bdc2452623f0c1c1e55ae1a0589db9cbaed9756760bb15179ef9b58bc98
+F ext/wasm/api/sqlite3-api-cleanup.js 1a12e64060c2cb0defd34656a76a9b1d7ed58459c290249bb31567c806fd44de
F ext/wasm/api/sqlite3-api-glue.js 67ca83974410961953eeaa1dfed3518530d68381729ed1d27f95122f5baeabd3
F ext/wasm/api/sqlite3-api-oo1.js f6dcaac3270182471f97efcfda25bd4a4ac1777b8ec52ebd1c6846721160e54c
F ext/wasm/api/sqlite3-api-opfs.js 011799db398157cbd254264b6ebae00d7234b93d0e9e810345f213a5774993c0
-F ext/wasm/api/sqlite3-api-prologue.js 4a279604272851696975837534739597206c0800c8ea78810fe8e211ee101374
-F ext/wasm/api/sqlite3-api-worker1.js 9691e144a77490f482caa2c0f0bd38a8f955c6dc9c10b2f39c6491e817aefd8c
+F ext/wasm/api/sqlite3-api-prologue.js 2d5c5d3355f55eefe51922cec5bfedbec0f8300db98a17685ab7a34a03953c7a
+F ext/wasm/api/sqlite3-api-worker1.js b23f66ef5afd350a17fbadb795007098e518a40e5c7c439cd83ef34aa55a45af
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
F ext/wasm/api/sqlite3-wasm.c 0d81282eaeff2a6e9fc5c28a388c5c5b45cf25a9393992fa511ac009b27df982
F ext/wasm/common/SqliteTestUtil.js eb96275bed43fdb364b7d65bcded0ca5e22aaacff120d593d1385f852f486247
F ext/wasm/scratchpad-opfs-worker.html 66c1d15d678f3bd306373d76b61c6c8aef988f61f4a8dd40185d452f9c6d2bf5
F ext/wasm/scratchpad-opfs-worker.js 3ec2868c669713145c76eb5877c64a1b20741f741817b87c907a154b676283a9
F ext/wasm/scratchpad-opfs-worker2.js 5f2237427ac537b8580b1c659ff14ad2621d1694043eaaf41ae18dbfef2e48c0
-F ext/wasm/sqlite3-worker1-promiser.js 291f89330bc856e7ef8a321b4891554633c6407b52efc69c9b1d1b3e7c69d4a6
+F ext/wasm/sqlite3-worker1-promiser.js 9638b0ced7f02806c3220b616f08729dde9eb13fb56e125cd4759f40bfa81210
F ext/wasm/sqlite3-worker1.js 0c1e7626304543969c3846573e080c082bf43bcaa47e87d416458af84f340a9e
-F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893 w ext/wasm/testing-worker-promise.html
-F ext/wasm/testing-worker1-promiser.js 3c13fda53cc8b5d148ae34f621eba99aff393d66718b216bfd9d3f9075dd83bc w ext/wasm/testing-worker-promise.js
+F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893
+F ext/wasm/testing-worker1-promiser.js 931d909c769c57292f1cafdf10c7dab402d17cd16a6d0ec32089f67b559b058f
F ext/wasm/testing1.html 528001c7e32ee567abc195aa071fd9820cc3c8ffc9c8a39a75e680db05f0c409
F ext/wasm/testing1.js 2def7a86c52ff28b145cb86188d5c7a49d5993f9b78c50d140e1c31551220955
F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 1e447849fb65887e806e3348a8a68f70ea6802bc0a1e56c385a279f27cc0cdda
-R 20d6ad983c84af7c7f2e33fe283b134d
+P b030f321bd5a38cdd5d6f6735f201afa62d30d2b0ba02e67f055b4895553a878
+R a11ec2b23afafa9cff8838dfde907f0c
U stephan
-Z 996279c2387a16066b296229c9c99a7d
+Z 64f88270da37ddd3ce54e6e07b8ab1af
# Remove this line to create a well-formed Fossil manifest.
-b030f321bd5a38cdd5d6f6735f201afa62d30d2b0ba02e67f055b4895553a878
\ No newline at end of file
+7467ac88801224089b51c6ba7924f93283dd87beca602a186c83632df26cfc85
\ No newline at end of file