mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Rename demo-oo1.* to demo-123.* and add demo-123-worker.html, which runs the same demo via a Worker. Doc typo fixes.
FossilOrigin-Name: 2e4a005bd35424caeaa99ace23162cf79e2ebdb159475ffad92b85dc864ad764
This commit is contained in:
@@ -326,13 +326,12 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
sqlite3.initWorker1API = function(){
|
sqlite3.initWorker1API = function(){
|
||||||
'use strict';
|
'use strict';
|
||||||
const toss = (...args)=>{throw new Error(args.join(' '))};
|
const toss = (...args)=>{throw new Error(args.join(' '))};
|
||||||
if('function' !== typeof importScripts){
|
if(self.window === self || 'function' !== typeof importScripts){
|
||||||
toss("Cannot initalize the sqlite3 worker API in the main thread.");
|
toss("initWorker1API() must be run from a Worker thread.");
|
||||||
}
|
}
|
||||||
const self = this.self;
|
const self = this.self;
|
||||||
const sqlite3 = this.sqlite3 || toss("Missing this.sqlite3 object.");
|
const sqlite3 = this.sqlite3 || toss("Missing this.sqlite3 object.");
|
||||||
const SQLite3 = sqlite3.oo1 || toss("Missing this.sqlite3.oo1 OO API.");
|
const DB = sqlite3.oo1.DB;
|
||||||
const DB = SQLite3.DB;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the app-wide unique ID for the given db, creating one if
|
Returns the app-wide unique ID for the given db, creating one if
|
||||||
|
40
ext/wasm/demo-123-worker.html
Normal file
40
ext/wasm/demo-123-worker.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
|
||||||
|
<title>Hello, sqlite3</title>
|
||||||
|
<style>
|
||||||
|
.warning, .error {color: red}
|
||||||
|
.error {background-color: yellow}
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-family: monospace;
|
||||||
|
white-space: break-spaces;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>1-2-sqlite3 worker demo</h2>
|
||||||
|
<script>(function(){
|
||||||
|
const logHtml = function(cssClass,...args){
|
||||||
|
const ln = document.createElement('div');
|
||||||
|
if(cssClass) ln.classList.add(cssClass);
|
||||||
|
ln.append(document.createTextNode(args.join(' ')));
|
||||||
|
document.body.append(ln);
|
||||||
|
};
|
||||||
|
const w = new Worker("demo-123.js");
|
||||||
|
w.onmessage = function({data}){
|
||||||
|
switch(data.type){
|
||||||
|
case 'log':
|
||||||
|
logHtml(data.payload.cssClass, ...data.payload.args);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logHtml('error',"Unhandled message:",data.type);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})();</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
24
ext/wasm/demo-123.html
Normal file
24
ext/wasm/demo-123.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
|
||||||
|
<title>Hello, sqlite3</title>
|
||||||
|
<style>
|
||||||
|
.warning, .error {color: red}
|
||||||
|
.error {background-color: yellow}
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-family: monospace;
|
||||||
|
white-space: break-spaces;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>1-2-sqlite3 demo</h2>
|
||||||
|
<script src="sqlite3.js"></script>
|
||||||
|
<script src="demo-123.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
2022-08-16
|
2022-09-19
|
||||||
|
|
||||||
The author disclaims copyright to this source code. In place of a
|
The author disclaims copyright to this source code. In place of a
|
||||||
legal notice, here is a blessing:
|
legal notice, here is a blessing:
|
||||||
@@ -10,34 +10,48 @@
|
|||||||
|
|
||||||
***********************************************************************
|
***********************************************************************
|
||||||
|
|
||||||
A basic demonstration of the SQLite3 OO API #1, shorn of assertions
|
A basic demonstration of the SQLite3 OO API.
|
||||||
and the like to improve readability.
|
|
||||||
*/
|
*/
|
||||||
'use strict';
|
'use strict';
|
||||||
(function(){
|
(function(){
|
||||||
const toss = function(...args){throw new Error(args.join(' '))};
|
/**
|
||||||
const debug = console.debug.bind(console),
|
Set up our output channel differently depending
|
||||||
log = console.log.bind(console),
|
on whether we are running in a worker thread or
|
||||||
warn = console.warn.bind(console),
|
the main (UI) thread.
|
||||||
error = console.error.bind(console);
|
*/
|
||||||
|
let logHtml;
|
||||||
|
if(self.window === self /* UI thread */){
|
||||||
|
logHtml = function(cssClass,...args){
|
||||||
|
const ln = document.createElement('div');
|
||||||
|
if(cssClass) ln.classList.add(cssClass);
|
||||||
|
ln.append(document.createTextNode(args.join(' ')));
|
||||||
|
document.body.append(ln);
|
||||||
|
};
|
||||||
|
}else{ /* Worker thread */
|
||||||
|
logHtml = function(cssClass,...args){
|
||||||
|
postMessage({
|
||||||
|
type:'log',
|
||||||
|
payload:{cssClass, args}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const log = (...args)=>logHtml('',...args);
|
||||||
|
const warn = (...args)=>logHtml('warning',...args);
|
||||||
|
const error = (...args)=>logHtml('error',...args);
|
||||||
|
|
||||||
const demo1 = function(sqlite3){
|
const demo1 = function(sqlite3){
|
||||||
const capi = sqlite3.capi,
|
const capi = sqlite3.capi/*C-style API*/,
|
||||||
oo = sqlite3.oo1,
|
oo = sqlite3.oo1/*high-level OO API*/;
|
||||||
wasm = capi.wasm;
|
log("sqlite3 version",capi.sqlite3_libversion(), capi.sqlite3_sourceid());
|
||||||
|
const db = new oo.DB("/mydb.sqlite3");
|
||||||
const dbName = (
|
log("transient b =",db.filename);
|
||||||
0 ? "" : capi.sqlite3_web_persistent_dir()
|
|
||||||
)+"/mydb.sqlite3"
|
|
||||||
if(0 && capi.sqlite3_web_persistent_dir()){
|
|
||||||
capi.wasm.sqlite3_wasm_vfs_unlink(dbName);
|
|
||||||
}
|
|
||||||
const db = new oo.DB(dbName);
|
|
||||||
log("db =",db.filename);
|
|
||||||
/**
|
/**
|
||||||
Never(!) rely on garbage collection to clean up DBs and
|
Never(!) rely on garbage collection to clean up DBs and
|
||||||
(especially) statements. Always wrap their lifetimes in
|
(especially) statements. Always wrap their lifetimes in
|
||||||
try/finally construct...
|
try/finally construct, as demonstrated below. By and large,
|
||||||
|
client code can avoid lifetime-related complications of
|
||||||
|
prepared statement objects by using the DB.exec() method for
|
||||||
|
SQL execution.
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
log("Create a table...");
|
log("Create a table...");
|
||||||
@@ -48,10 +62,13 @@
|
|||||||
// ... numerous other options ...
|
// ... numerous other options ...
|
||||||
});
|
});
|
||||||
// SQL can be either a string or a byte array
|
// SQL can be either a string or a byte array
|
||||||
|
// or an array of strings which get concatenated
|
||||||
|
// together as-is (so be sure to end each statement
|
||||||
|
// with a semicolon).
|
||||||
|
|
||||||
log("Insert some data using exec()...");
|
log("Insert some data using exec()...");
|
||||||
let i;
|
let i;
|
||||||
for( i = 1; i <= 5; ++i ){
|
for( i = 20; i <= 25; ++i ){
|
||||||
db.exec({
|
db.exec({
|
||||||
sql: "insert into t(a,b) values (?,?)",
|
sql: "insert into t(a,b) values (?,?)",
|
||||||
// bind by parameter index...
|
// bind by parameter index...
|
||||||
@@ -60,7 +77,7 @@
|
|||||||
db.exec({
|
db.exec({
|
||||||
sql: "insert into t(a,b) values ($a,$b)",
|
sql: "insert into t(a,b) values ($a,$b)",
|
||||||
// bind by parameter name...
|
// bind by parameter name...
|
||||||
bind: {$a: i * 3, $b: i * 4}
|
bind: {$a: i * 10, $b: i * 20}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +110,7 @@
|
|||||||
sql: "select a as aa, b as bb from t order by aa limit 3",
|
sql: "select a as aa, b as bb from t order by aa limit 3",
|
||||||
rowMode: 'object',
|
rowMode: 'object',
|
||||||
callback: function(row){
|
callback: function(row){
|
||||||
log("row ",++this.counter,"=",row);
|
log("row ",++this.counter,"=",JSON.stringify(row));
|
||||||
}.bind({counter: 0})
|
}.bind({counter: 0})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -115,6 +132,15 @@
|
|||||||
}.bind({counter: 0})
|
}.bind({counter: 0})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
log("Query data with exec() using rowMode $COLNAME (result column name)...");
|
||||||
|
db.exec({
|
||||||
|
sql: "select a a, b from t order by a limit 3",
|
||||||
|
rowMode: '$a',
|
||||||
|
callback: function(value){
|
||||||
|
log("row ",++this.counter,"a =",value);
|
||||||
|
}.bind({counter: 0})
|
||||||
|
});
|
||||||
|
|
||||||
log("Query data with exec() without a callback...");
|
log("Query data with exec() without a callback...");
|
||||||
let resultRows = [];
|
let resultRows = [];
|
||||||
db.exec({
|
db.exec({
|
||||||
@@ -122,7 +148,7 @@
|
|||||||
rowMode: 'object',
|
rowMode: 'object',
|
||||||
resultRows: resultRows
|
resultRows: resultRows
|
||||||
});
|
});
|
||||||
log("Result rows:",resultRows);
|
log("Result rows:",JSON.stringify(resultRows,undefined,2));
|
||||||
|
|
||||||
log("Create a scalar UDF...");
|
log("Create a scalar UDF...");
|
||||||
db.createFunction({
|
db.createFunction({
|
||||||
@@ -144,9 +170,12 @@
|
|||||||
});
|
});
|
||||||
log("Result column names:",columnNames);
|
log("Result column names:",columnNames);
|
||||||
|
|
||||||
if(0){
|
try{
|
||||||
warn("UDF will throw because of incorrect arg count...");
|
log("The following use of the twice() UDF will",
|
||||||
|
"fail because of incorrect arg count...");
|
||||||
db.exec("select twice(1,2,3)");
|
db.exec("select twice(1,2,3)");
|
||||||
|
}catch(e){
|
||||||
|
warn("Got expected exception:",e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -170,7 +199,7 @@
|
|||||||
log("In savepoint: count(*) from t =",db.selectValue("select count(*) from t"));
|
log("In savepoint: count(*) from t =",db.selectValue("select count(*) from t"));
|
||||||
D.savepoint(function(DD){
|
D.savepoint(function(DD){
|
||||||
const rows = [];
|
const rows = [];
|
||||||
D.exec({
|
DD.exec({
|
||||||
sql: ["insert into t(a,b) values(99,100);",
|
sql: ["insert into t(a,b) values(99,100);",
|
||||||
"select count(*) from t"],
|
"select count(*) from t"],
|
||||||
rowMode: 0,
|
rowMode: 0,
|
||||||
@@ -188,17 +217,17 @@
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}finally{
|
}finally{
|
||||||
db.close();
|
db.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log("That's all, folks!");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Misc. DB features:
|
Some of the features of the OO API not demonstrated above...
|
||||||
|
|
||||||
- get change count (total or statement-local, 32- or 64-bit)
|
- get change count (total or statement-local, 32- or 64-bit)
|
||||||
- get its file name
|
- get a DB's file name
|
||||||
- selectValue() takes SQL and returns first column of first row.
|
|
||||||
|
|
||||||
Misc. Stmt features:
|
Misc. Stmt features:
|
||||||
|
|
||||||
@@ -213,20 +242,21 @@
|
|||||||
*/
|
*/
|
||||||
}/*demo1()*/;
|
}/*demo1()*/;
|
||||||
|
|
||||||
const runDemos = function(Module){
|
log("Loading and initializing sqlite3 module...");
|
||||||
//log("Module.sqlite3",Module);
|
if(self.window!==self) /*worker thread*/{
|
||||||
const sqlite3 = Module.sqlite3,
|
importScripts("sqlite3.js");
|
||||||
capi = sqlite3.capi;
|
}
|
||||||
log("Loaded module:",capi.sqlite3_libversion(), capi.sqlite3_sourceid());
|
self.sqlite3InitModule({
|
||||||
log("sqlite3 namespace:",sqlite3);
|
// We can redirect any stdout/stderr from the module
|
||||||
|
// like so...
|
||||||
|
print: log,
|
||||||
|
printErr: error
|
||||||
|
}).then(function(EmscriptenModule){
|
||||||
|
log("Done initializing. Running demo...");
|
||||||
try {
|
try {
|
||||||
demo1(sqlite3);
|
demo1(EmscriptenModule.sqlite3);
|
||||||
}catch(e){
|
}catch(e){
|
||||||
error("Exception:",e.message);
|
error("Exception:",e.message);
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
//self.sqlite3TestModule.sqlite3ApiConfig.persistentDirName = "/hi";
|
|
||||||
self.sqlite3TestModule.initSqlite3().then(runDemos);
|
|
||||||
})();
|
})();
|
@@ -1,34 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en-us">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
|
|
||||||
<link rel="stylesheet" href="common/emscripten.css"/>
|
|
||||||
<link rel="stylesheet" href="common/testing.css"/>
|
|
||||||
<title>sqlite3-api OO #1 Demo</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header id='titlebar'><span>sqlite3-api OO #1 Demo</span></header>
|
|
||||||
<!-- emscripten bits -->
|
|
||||||
<figure id="module-spinner">
|
|
||||||
<div class="spinner"></div>
|
|
||||||
<div class='center'><strong>Initializing app...</strong></div>
|
|
||||||
<div class='center'>
|
|
||||||
On a slow internet connection this may take a moment. If this
|
|
||||||
message displays for "a long time", intialization may have
|
|
||||||
failed and the JavaScript console may contain clues as to why.
|
|
||||||
</div>
|
|
||||||
</figure>
|
|
||||||
<div class="emscripten" id="module-status">Downloading...</div>
|
|
||||||
<div class="emscripten">
|
|
||||||
<progress value="0" max="100" id="module-progress" hidden='1'></progress>
|
|
||||||
</div><!-- /emscripten bits -->
|
|
||||||
<div>Most stuff on this page happens in the dev console.</div>
|
|
||||||
<hr>
|
|
||||||
<div id='test-output'></div>
|
|
||||||
<script src="sqlite3.js"></script>
|
|
||||||
<script src="common/SqliteTestUtil.js"></script>
|
|
||||||
<script src="demo-oo1.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -22,20 +22,30 @@
|
|||||||
the web server emit the so-called COOP and COEP headers. The
|
the web server emit the so-called COOP and COEP headers. The
|
||||||
default build of althttpd <em>does not</em>.
|
default build of althttpd <em>does not</em>.
|
||||||
</li>
|
</li>
|
||||||
|
<li>Any OPFS-related pages require very recent
|
||||||
|
version of Chrome or Chromium (v102 at least, possibly
|
||||||
|
newer). OPFS support in the other major browsers is
|
||||||
|
pending.</li>
|
||||||
<li>Whether or not WASMFS/OPFS support is enabled on any given
|
<li>Whether or not WASMFS/OPFS support is enabled on any given
|
||||||
page may depend on build-time options which are <em>off by
|
page may depend on build-time options which are <em>off by
|
||||||
default</em> because they currently (as of 2022-09-08) break
|
default</em> because they currently (as of 2022-09-08) break
|
||||||
with Worker-based pages.
|
with Worker-based pages. Similarly, WASMFS does not work on
|
||||||
|
some platforms, e.g. Raspberry Pi 4.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>The tests...
|
<div>The tests...
|
||||||
<ul id='test-list'>
|
<ul id='test-list'>
|
||||||
|
<li><a href='demo-123.html'>demo-123</a> provides a
|
||||||
|
no-nonsense example of adding sqlite3 support to a
|
||||||
|
web page. </li>
|
||||||
|
<li><a href='demo-123-worker.html'>demo-123-worker</a> is the
|
||||||
|
same as <code>demo-123</code> but loads and run sqlite3 from
|
||||||
|
a Worker thread.</li>
|
||||||
<li><a href='testing1.html'>testing1</a>: sanity tests of the core APIs and surrounding utility code.</li>
|
<li><a href='testing1.html'>testing1</a>: sanity tests of the core APIs and surrounding utility code.</li>
|
||||||
<li><a href='testing2.html'>testing2</a>: Worker-based test of OO API #1.</li>
|
<li><a href='testing2.html'>testing2</a>: Worker-based test of OO API #1.</li>
|
||||||
<li><a href='testing-worker1-promiser.html'>testing-worker1-promiser</a>:
|
<li><a href='testing-worker1-promiser.html'>testing-worker1-promiser</a>:
|
||||||
tests for the Promise-based wrapper of the Worker-based API.</li>
|
tests for the Promise-based wrapper of the Worker-based API.</li>
|
||||||
<li><a href='demo-oo1.html'>demo-oo1</a>: demonstration of the OO API #1.</li>
|
|
||||||
<li><a href='batch-runner.html'>batch-runner</a>: runs batches of SQL exported from speedtest1.</li>
|
<li><a href='batch-runner.html'>batch-runner</a>: runs batches of SQL exported from speedtest1.</li>
|
||||||
<li><a href='batch-runner-kvvfs.html'>batch-runner-kvvfs</a>: KVVFS-specific variant of batch-runner.html.</li>
|
<li><a href='batch-runner-kvvfs.html'>batch-runner-kvvfs</a>: KVVFS-specific variant of batch-runner.html.</li>
|
||||||
<li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li>
|
<li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
arguments when the worker fires its initial
|
arguments when the worker fires its initial
|
||||||
'sqlite3-api'/'worker1-ready' message, which it does when
|
'sqlite3-api'/'worker1-ready' message, which it does when
|
||||||
sqlite3.initWorker1API() completes its initialization. This is
|
sqlite3.initWorker1API() completes its initialization. This is
|
||||||
the simplest way to tell the worker to kick of work at the
|
the simplest way to tell the worker to kick off work at the
|
||||||
earliest opportunity.
|
earliest opportunity.
|
||||||
|
|
||||||
- `onerror` (optional): a callback to pass error-type events from
|
- `onerror` (optional): a callback to pass error-type events from
|
||||||
@@ -55,18 +55,18 @@
|
|||||||
are not handled by this proxy. Ideally that "should" never
|
are not handled by this proxy. Ideally that "should" never
|
||||||
happen, as this proxy aims to handle all known message types.
|
happen, as this proxy aims to handle all known message types.
|
||||||
|
|
||||||
- `generateMessageId` (optional): a function which, when passed
|
- `generateMessageId` (optional): a function which, when passed an
|
||||||
an about-to-be-posted message object, generates a _unique_
|
about-to-be-posted message object, generates a _unique_ message ID
|
||||||
message ID for the message, which this API then assigns as the
|
for the message, which this API then assigns as the messageId
|
||||||
messageId property of the message. It _must_ generate unique
|
property of the message. It _must_ generate unique IDs on each call
|
||||||
IDs so that dispatching can work. If not defined, a default
|
so that dispatching can work. If not defined, a default generator
|
||||||
generator is used.
|
is used (which should be sufficient for most or all cases).
|
||||||
|
|
||||||
- `dbId` (optional): is the database ID to be used by the
|
- `dbId` (optional): is the database ID to be used by the
|
||||||
worker. This must initially be unset or a falsy value. The
|
worker. This must initially be unset or a falsy value. The
|
||||||
first `open` message sent to the worker will cause this config
|
first `open` message sent to the worker will cause this config
|
||||||
entry to be assigned to the ID of the opened database. That ID
|
entry to be assigned to the ID of the opened database. That ID
|
||||||
"should" be set as the `dbId` property of the message sent in
|
"should" be set as the `dbId` property of the messages sent in
|
||||||
future requests, so that the worker uses that database.
|
future requests, so that the worker uses that database.
|
||||||
However, if the worker is not given an explicit dbId, it will
|
However, if the worker is not given an explicit dbId, it will
|
||||||
use the first-opened database by default. If client code needs
|
use the first-opened database by default. If client code needs
|
||||||
@@ -80,7 +80,6 @@
|
|||||||
- `debug` (optional): a console.debug()-style function for logging
|
- `debug` (optional): a console.debug()-style function for logging
|
||||||
information about messages.
|
information about messages.
|
||||||
|
|
||||||
|
|
||||||
This function returns a stateful factory function with the
|
This function returns a stateful factory function with the
|
||||||
following interfaces:
|
following interfaces:
|
||||||
|
|
||||||
@@ -90,13 +89,13 @@
|
|||||||
The first form expects the "type" and "args" values for a Worker
|
The first form expects the "type" and "args" values for a Worker
|
||||||
message. The second expects an object in the form {type:...,
|
message. The second expects an object in the form {type:...,
|
||||||
args:...} plus any other properties the client cares to set. This
|
args:...} plus any other properties the client cares to set. This
|
||||||
function will always set the messageId property on the object,
|
function will always set the `messageId` property on the object,
|
||||||
even if it's already set, and will set the dbId property to
|
even if it's already set, and will set the `dbId` property to
|
||||||
config.dbId if it is _not_ set in the message object.
|
`config.dbId` if it is _not_ set in the message object.
|
||||||
|
|
||||||
The function throws on error.
|
The function throws on error.
|
||||||
|
|
||||||
The function installs a temporarily message listener, posts a
|
The function installs a temporary message listener, posts a
|
||||||
message to the configured Worker, and handles the message's
|
message to the configured Worker, and handles the message's
|
||||||
response via the temporary message listener. The then() callback
|
response via the temporary message listener. The then() callback
|
||||||
of the returned Promise is passed the `message.data` property from
|
of the returned Promise is passed the `message.data` property from
|
||||||
@@ -108,14 +107,14 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
const config = {...};
|
const config = {...};
|
||||||
const eventPromiser = sqlite3Worker1Promiser(config);
|
const sq3Promiser = sqlite3Worker1Promiser(config);
|
||||||
eventPromiser('open', {filename:"/foo.db"}).then(function(msg){
|
sq3Promiser('open', {filename:"/foo.db"}).then(function(msg){
|
||||||
console.log("open response",msg); // => {type:'open', result: {filename:'/foo.db'}, ...}
|
console.log("open response",msg); // => {type:'open', result: {filename:'/foo.db'}, ...}
|
||||||
// Recall that config.dbId will be set for the first 'open'
|
// Recall that config.dbId will be set for the first 'open'
|
||||||
// call and cleared for a matching 'close' call.
|
// call and cleared for a matching 'close' call.
|
||||||
});
|
});
|
||||||
eventPromiser({type:'close'}).then((msg)=>{
|
sq3Promiser({type:'close'}).then((msg)=>{
|
||||||
console.log("open response",msg); // => {type:'open', result: {filename:'/foo.db'}, ...}
|
console.log("close response",msg); // => {type:'close', result: {filename:'/foo.db'}, ...}
|
||||||
// Recall that config.dbId will be used by default for the message's dbId if
|
// Recall that config.dbId will be used by default for the message's dbId if
|
||||||
// none is explicitly provided, and a 'close' op will clear config.dbId if it
|
// none is explicitly provided, and a 'close' op will clear config.dbId if it
|
||||||
// closes that exact db.
|
// closes that exact db.
|
||||||
|
21
manifest
21
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Disable\sbuild\sof\swasmfs-using\scomponents\son\saarch64\s(ARM),\sas\swasmfs\swon't\sbuild\sthere.
|
C Rename\sdemo-oo1.*\sto\sdemo-123.*\sand\sadd\sdemo-123-worker.html,\swhich\sruns\sthe\ssame\sdemo\svia\sa\sWorker.\sDoc\stypo\sfixes.
|
||||||
D 2022-09-19T00:40:53.768
|
D 2022-09-19T03:57:31.704
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -486,7 +486,7 @@ F ext/wasm/api/sqlite3-api-glue.js 366d580c8e5bf7fcf4c6dee6f646c31f5549bd417ea03
|
|||||||
F ext/wasm/api/sqlite3-api-oo1.js 2d13dddf0d2b4168a9249f124134d37924331e5b55e05dba18b6d661fbeefe48
|
F ext/wasm/api/sqlite3-api-oo1.js 2d13dddf0d2b4168a9249f124134d37924331e5b55e05dba18b6d661fbeefe48
|
||||||
F ext/wasm/api/sqlite3-api-opfs.js 4090abf4e16b460543ff665e96822048e37a2703e0ba46a01fed3a15c024c034
|
F ext/wasm/api/sqlite3-api-opfs.js 4090abf4e16b460543ff665e96822048e37a2703e0ba46a01fed3a15c024c034
|
||||||
F ext/wasm/api/sqlite3-api-prologue.js 4e3e26880d444000cca1b4f3ddfa9d49581dfecd1de9426080239ecc208c447d
|
F ext/wasm/api/sqlite3-api-prologue.js 4e3e26880d444000cca1b4f3ddfa9d49581dfecd1de9426080239ecc208c447d
|
||||||
F ext/wasm/api/sqlite3-api-worker1.js e8456bd9b93eab297d065b25cb7a253835f606f9349383f2aa5c585e8d3b3aef
|
F ext/wasm/api/sqlite3-api-worker1.js ee4cf149cbacb63d06b536674f822aa5088b7e022cdffc69f1f36cebe2f9fea0
|
||||||
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
||||||
F ext/wasm/api/sqlite3-wasm.c 4130e2df9587f4e4c3afc04c3549d682c8a5c0cfe5b22819a0a86edb7f01b9bd
|
F ext/wasm/api/sqlite3-wasm.c 4130e2df9587f4e4c3afc04c3549d682c8a5c0cfe5b22819a0a86edb7f01b9bd
|
||||||
F ext/wasm/batch-runner-kvvfs.html ef3b2f553abad4f17a2a29ce6526023793a88e8597b7a24b8c7855a030b90a16
|
F ext/wasm/batch-runner-kvvfs.html ef3b2f553abad4f17a2a29ce6526023793a88e8597b7a24b8c7855a030b90a16
|
||||||
@@ -496,13 +496,14 @@ F ext/wasm/common/SqliteTestUtil.js 529161a624265ba84271a52db58da022649832fa1c71
|
|||||||
F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
|
F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
|
||||||
F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962
|
F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962
|
||||||
F ext/wasm/common/whwasmutil.js f7282ef36c9625330d4e6e82d1beec6678cd101e95e7108cd85db587a788c145
|
F ext/wasm/common/whwasmutil.js f7282ef36c9625330d4e6e82d1beec6678cd101e95e7108cd85db587a788c145
|
||||||
F ext/wasm/demo-oo1.html 75646855b38405d82781246fd08c852a2b3bee05dd9f0fe10ab655a8cffb79aa
|
F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fcd28bf018a773234f
|
||||||
F ext/wasm/demo-oo1.js 477f230cce3455e701431436d892d8c6bfea2bdf1ddcdd32a273e2f4bb339801
|
F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4 w ext/wasm/demo-oo1.html
|
||||||
|
F ext/wasm/demo-123.js 2c5e7775339624819067fd169d202004faeddc9d8ef452dd1f95aa4b3972a5b2 w ext/wasm/demo-oo1.js
|
||||||
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
|
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
|
||||||
F ext/wasm/fiddle/fiddle-worker.js bccf46045be8824752876f3eec01c223be0616ccac184bffd0024cfe7a3262b8
|
F ext/wasm/fiddle/fiddle-worker.js bccf46045be8824752876f3eec01c223be0616ccac184bffd0024cfe7a3262b8
|
||||||
F ext/wasm/fiddle/fiddle.html 550c5aafce40bd218de9bf26192749f69f9b10bc379423ecd2e162bcef885c08
|
F ext/wasm/fiddle/fiddle.html 550c5aafce40bd218de9bf26192749f69f9b10bc379423ecd2e162bcef885c08
|
||||||
F ext/wasm/fiddle/fiddle.js 4ffcfc9a235beebaddec689a549e9e0dfad6dca5c1f0b41f03468d7e76480686
|
F ext/wasm/fiddle/fiddle.js 4ffcfc9a235beebaddec689a549e9e0dfad6dca5c1f0b41f03468d7e76480686
|
||||||
F ext/wasm/index.html d698cc021c25ca940f67805c2cc2848c303705d98b4c4f9f55565b9a9c37d2bb
|
F ext/wasm/index.html aed40adf52598a353e27e50480d53e59a5e75e9ba889f7d8bb2fda45a0a91c3b
|
||||||
F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
|
F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
|
||||||
F ext/wasm/jaccwabyt/jaccwabyt.md 447cc02b598f7792edaa8ae6853a7847b8178a18ed356afacbdbf312b2588106
|
F ext/wasm/jaccwabyt/jaccwabyt.md 447cc02b598f7792edaa8ae6853a7847b8178a18ed356afacbdbf312b2588106
|
||||||
F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
|
F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
|
||||||
@@ -521,7 +522,7 @@ F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f129
|
|||||||
F ext/wasm/sql/000-mandelbrot.sql 775337a4b80938ac8146aedf88808282f04d02d983d82675bd63d9c2d97a15f0
|
F ext/wasm/sql/000-mandelbrot.sql 775337a4b80938ac8146aedf88808282f04d02d983d82675bd63d9c2d97a15f0
|
||||||
F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5
|
F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5
|
||||||
F ext/wasm/sqlite3-opfs-async-proxy.js 6e89e1af7c616afdd877cbcf5d0ec3d5f47ba252b9a19e696140b9495dc1e653
|
F ext/wasm/sqlite3-opfs-async-proxy.js 6e89e1af7c616afdd877cbcf5d0ec3d5f47ba252b9a19e696140b9495dc1e653
|
||||||
F ext/wasm/sqlite3-worker1-promiser.js 92b8da5f38439ffec459a8215775d30fa498bc0f1ab929ff341fc3dd479660b9
|
F ext/wasm/sqlite3-worker1-promiser.js 4fd0465688a28a75f1d4ee4406540ba494f49844e3cad0670d0437a001943365
|
||||||
F ext/wasm/sqlite3-worker1.js 0c1e7626304543969c3846573e080c082bf43bcaa47e87d416458af84f340a9e
|
F ext/wasm/sqlite3-worker1.js 0c1e7626304543969c3846573e080c082bf43bcaa47e87d416458af84f340a9e
|
||||||
F ext/wasm/test-opfs-vfs.html eb69dda21eb414b8f5e3f7c1cc0f774103cc9c0f87b2d28a33419e778abfbab5
|
F ext/wasm/test-opfs-vfs.html eb69dda21eb414b8f5e3f7c1cc0f774103cc9c0f87b2d28a33419e778abfbab5
|
||||||
F ext/wasm/test-opfs-vfs.js 753c6b86dd8ce0813121add44726a038ba1b83acebdc8414189cb163faf23e6d
|
F ext/wasm/test-opfs-vfs.js 753c6b86dd8ce0813121add44726a038ba1b83acebdc8414189cb163faf23e6d
|
||||||
@@ -2027,8 +2028,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 26e625d05d9820033b23536f18ad3ddc59ed712ad507d4b0c7fe88abd15d2be8
|
P 9a9eeebc2c27b734041089131b4952d7c0440df48ef32f355641aca61d4b30a0
|
||||||
R 21836a2cce93d296ed51495c106454e4
|
R 8192577a9e0361d9ed4a520726bee437
|
||||||
U stephan
|
U stephan
|
||||||
Z 476194268503f5b6d3efae07b951acc1
|
Z 37e4874c91d49fe3eefc7a1b4b57c686
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@@ -1 +1 @@
|
|||||||
9a9eeebc2c27b734041089131b4952d7c0440df48ef32f355641aca61d4b30a0
|
2e4a005bd35424caeaa99ace23162cf79e2ebdb159475ffad92b85dc864ad764
|
Reference in New Issue
Block a user