aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/api/sqlite3-v-helper.js
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2023-03-07 12:59:20 +0000
committerstephan <stephan@noemail.net>2023-03-07 12:59:20 +0000
commit7272f6d64d88da451f18aa515db06ed6f2b459d4 (patch)
tree8a32590250ba43ccdc8b801ad5749e0564a49e6b /ext/wasm/api/sqlite3-v-helper.js
parentc105b3eccf20e2d525f1f81b6898440f21766d65 (diff)
downloadsqlite-7272f6d64d88da451f18aa515db06ed6f2b459d4.tar.gz
sqlite-7272f6d64d88da451f18aa515db06ed6f2b459d4.zip
In the JS sqlite3.vfs/vtab utility APIs, use a local reference to StructBinder instead of sqlite3.StructBinder, as that object is removed from the sqlite3 namespace during the final steps of API initialization. Based on feedback from [forum:d19d96183badca70|forum post d19d96183badca70].
FossilOrigin-Name: 0d89885d28b44b1858117a72a180841f4f5f44bcc574fc59a116ca3526325932
Diffstat (limited to 'ext/wasm/api/sqlite3-v-helper.js')
-rw-r--r--ext/wasm/api/sqlite3-v-helper.js11
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/wasm/api/sqlite3-v-helper.js b/ext/wasm/api/sqlite3-v-helper.js
index 10be8ebce..1fe91c1de 100644
--- a/ext/wasm/api/sqlite3-v-helper.js
+++ b/ext/wasm/api/sqlite3-v-helper.js
@@ -19,6 +19,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
const wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;
const vfs = Object.create(null), vtab = Object.create(null);
+ const StructBinder = sqlite3.StructBinder
+ /* we require a local alias b/c StructBinder is removed from the sqlite3
+ object during the final steps of the API cleanup. */;
sqlite3.vfs = vfs;
sqlite3.vtab = vtab;
@@ -112,7 +115,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
const installMethod = function callee(
tgt, name, func, applyArgcCheck = callee.installMethodArgcCheck
){
- if(!(tgt instanceof sqlite3.StructBinder.StructType)){
+ if(!(tgt instanceof StructBinder.StructType)){
toss("Usage error: target object is-not-a StructType.");
}else if(!(func instanceof Function) && !wasm.isPtr(func)){
toss("Usage errror: expecting a Function or WASM pointer to one.");
@@ -132,7 +135,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
}
};
/* An ondispose() callback for use with
- sqlite3.StructBinder-created types. */
+ StructBinder-created types. */
callee.removeFuncList = function(){
if(this.ondispose.__removeFuncList){
this.ondispose.__removeFuncList.forEach(
@@ -221,7 +224,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
and the first is an object, it's instead equivalent to calling
installMethods(this,...arguments).
*/
- sqlite3.StructBinder.StructType.prototype.installMethod = function callee(
+ StructBinder.StructType.prototype.installMethod = function callee(
name, func, applyArgcCheck = installMethod.installMethodArgcCheck
){
return (arguments.length < 3 && name && 'object'===typeof name)
@@ -233,7 +236,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
Equivalent to calling installMethods() with a first argument
of this object.
*/
- sqlite3.StructBinder.StructType.prototype.installMethods = function(
+ StructBinder.StructType.prototype.installMethods = function(
methods, applyArgcCheck = installMethod.installMethodArgcCheck
){
return installMethods(this, methods, applyArgcCheck);