mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Rename some OPFS JS files. Prevent JS bindings of sqlite3_uri_...() from performing JS-to-C-string argument conversion on their first argument, as doing so is specifically illegal.
FossilOrigin-Name: 79832808de2cbdba140ed9e0558f1502b51d131ab4315265315922cda7b748cb
This commit is contained in:
@ -287,10 +287,10 @@ sqlite3-api.jses += $(dir.common)/whwasmutil.js
|
|||||||
sqlite3-api.jses += $(dir.jacc)/jaccwabyt.js
|
sqlite3-api.jses += $(dir.jacc)/jaccwabyt.js
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-api-glue.js
|
sqlite3-api.jses += $(dir.api)/sqlite3-api-glue.js
|
||||||
sqlite3-api.jses += $(sqlite3-api-build-version.js)
|
sqlite3-api.jses += $(sqlite3-api-build-version.js)
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-vfs-helper.js
|
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-api-oo1.js
|
sqlite3-api.jses += $(dir.api)/sqlite3-api-oo1.js
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-api-worker1.js
|
sqlite3-api.jses += $(dir.api)/sqlite3-api-worker1.js
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-api-opfs.js
|
sqlite3-api.jses += $(dir.api)/sqlite3-vfs-helper.js
|
||||||
|
sqlite3-api.jses += $(dir.api)/sqlite3-vfs-opfs.js
|
||||||
sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js
|
sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js
|
||||||
|
|
||||||
# "External" API files which are part of our distribution
|
# "External" API files which are part of our distribution
|
||||||
|
@ -52,11 +52,6 @@ browser client:
|
|||||||
Gets created by the build process and populates the
|
Gets created by the build process and populates the
|
||||||
`sqlite3.version` object. This part is not critical, but records the
|
`sqlite3.version` object. This part is not critical, but records the
|
||||||
version of the library against which this module was built.
|
version of the library against which this module was built.
|
||||||
- **`sqlite3-vfs-helper.js`**\
|
|
||||||
This internal-use-only file installs `sqlite3.VfsHelper` for use by
|
|
||||||
`sqlite3-api-*.js` files which create `sqlite3_vfs` implemenations.
|
|
||||||
`sqlite3.VfsHelper` gets removed from the the `sqlite3` object after
|
|
||||||
the library is finished initializing.
|
|
||||||
- **`sqlite3-api-oo1.js`**\
|
- **`sqlite3-api-oo1.js`**\
|
||||||
Provides a high-level object-oriented wrapper to the lower-level C
|
Provides a high-level object-oriented wrapper to the lower-level C
|
||||||
API, colloquially known as OO API #1. Its API is similar to other
|
API, colloquially known as OO API #1. Its API is similar to other
|
||||||
@ -79,7 +74,12 @@ browser client:
|
|||||||
a Promise-based interface into the Worker #1 API. This is
|
a Promise-based interface into the Worker #1 API. This is
|
||||||
a far user-friendlier way to interface with databases running
|
a far user-friendlier way to interface with databases running
|
||||||
in a Worker thread.
|
in a Worker thread.
|
||||||
- **`sqlite3-api-opfs.js`**\
|
- **`sqlite3-vfs-helper.js`**\
|
||||||
|
This internal-use-only file installs `sqlite3.VfsHelper` for use by
|
||||||
|
`sqlite3-*.js` files which create `sqlite3_vfs` implemenations.
|
||||||
|
`sqlite3.VfsHelper` gets removed from the the `sqlite3` object after
|
||||||
|
the library is finished initializing.
|
||||||
|
- **`sqlite3-vfs-opfs.js`**\
|
||||||
is an sqlite3 VFS implementation which supports Google Chrome's
|
is an sqlite3 VFS implementation which supports Google Chrome's
|
||||||
Origin-Private FileSystem (OPFS) as a storage layer to provide
|
Origin-Private FileSystem (OPFS) as a storage layer to provide
|
||||||
persistent storage for database files in a browser. It requires...
|
persistent storage for database files in a browser. It requires...
|
||||||
|
@ -69,6 +69,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
*/
|
*/
|
||||||
const aPtr = wasm.xWrap.argAdapter('*');
|
const aPtr = wasm.xWrap.argAdapter('*');
|
||||||
wasm.xWrap.argAdapter('sqlite3*', aPtr)
|
wasm.xWrap.argAdapter('sqlite3*', aPtr)
|
||||||
|
('sqlite3_filename', aPtr)
|
||||||
('sqlite3_stmt*', aPtr)
|
('sqlite3_stmt*', aPtr)
|
||||||
('sqlite3_context*', aPtr)
|
('sqlite3_context*', aPtr)
|
||||||
('sqlite3_value*', aPtr)
|
('sqlite3_value*', aPtr)
|
||||||
|
@ -913,9 +913,12 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
|
|||||||
["sqlite3_strlike", "int", "string","string","int"],
|
["sqlite3_strlike", "int", "string","string","int"],
|
||||||
["sqlite3_trace_v2", "int", "sqlite3*", "int", "*", "*"],
|
["sqlite3_trace_v2", "int", "sqlite3*", "int", "*", "*"],
|
||||||
["sqlite3_total_changes", "int", "sqlite3*"],
|
["sqlite3_total_changes", "int", "sqlite3*"],
|
||||||
["sqlite3_uri_boolean", "int", "string", "string", "int"],
|
/* Note sqlite3_uri_...() has very specific requirements
|
||||||
["sqlite3_uri_key", "string", "string", "int"],
|
for their first C-string arguments, so we cannot perform
|
||||||
["sqlite3_uri_parameter", "string", "string", "string"],
|
any type conversion on those. */
|
||||||
|
["sqlite3_uri_boolean", "int", "sqlite3_filename", "string", "int"],
|
||||||
|
["sqlite3_uri_key", "string", "sqlite3_filename", "int"],
|
||||||
|
["sqlite3_uri_parameter", "string", "sqlite3_filename", "string"],
|
||||||
["sqlite3_user_data","void*", "sqlite3_context*"],
|
["sqlite3_user_data","void*", "sqlite3_context*"],
|
||||||
["sqlite3_value_blob", "*", "sqlite3_value*"],
|
["sqlite3_value_blob", "*", "sqlite3_value*"],
|
||||||
["sqlite3_value_bytes","int", "sqlite3_value*"],
|
["sqlite3_value_bytes","int", "sqlite3_value*"],
|
||||||
@ -949,7 +952,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
|
|||||||
["sqlite3_realloc64", "*","*", "i64"],
|
["sqlite3_realloc64", "*","*", "i64"],
|
||||||
["sqlite3_result_int64",undefined, "*", "i64"],
|
["sqlite3_result_int64",undefined, "*", "i64"],
|
||||||
["sqlite3_total_changes64", "i64", ["sqlite3*"]],
|
["sqlite3_total_changes64", "i64", ["sqlite3*"]],
|
||||||
["sqlite3_uri_int64", "i64", ["string", "string", "i64"]],
|
["sqlite3_uri_int64", "i64", ["sqlite3_filename", "string", "i64"]],
|
||||||
["sqlite3_value_int64","i64", "sqlite3_value*"],
|
["sqlite3_value_int64","i64", "sqlite3_value*"],
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -1450,9 +1453,6 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
|
|||||||
let lip = sqlite3ApiBootstrap.initializersAsync;
|
let lip = sqlite3ApiBootstrap.initializersAsync;
|
||||||
delete sqlite3ApiBootstrap.initializersAsync;
|
delete sqlite3ApiBootstrap.initializersAsync;
|
||||||
if(!lip || !lip.length) return Promise.resolve(sqlite3);
|
if(!lip || !lip.length) return Promise.resolve(sqlite3);
|
||||||
// Is it okay to resolve these in parallel or do we need them
|
|
||||||
// to resolve in order? We currently only have 1, so it
|
|
||||||
// makes no difference.
|
|
||||||
lip = lip.map((f)=>{
|
lip = lip.map((f)=>{
|
||||||
const p = (f instanceof Promise) ? f : f(sqlite3);
|
const p = (f instanceof Promise) ? f : f(sqlite3);
|
||||||
return p.catch((e)=>{
|
return p.catch((e)=>{
|
||||||
@ -1460,10 +1460,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
|
|||||||
throw e;
|
throw e;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//let p = lip.shift();
|
const postInit = ()=>{
|
||||||
//while(lip.length) p = p.then(lip.shift());
|
|
||||||
//return p.then(()=>sqlite3);
|
|
||||||
return Promise.all(lip).then(()=>{
|
|
||||||
if(!sqlite3.__isUnderTest){
|
if(!sqlite3.__isUnderTest){
|
||||||
/* Delete references to internal-only APIs which are used by
|
/* Delete references to internal-only APIs which are used by
|
||||||
some initializers. Retain them when running in test mode
|
some initializers. Retain them when running in test mode
|
||||||
@ -1473,7 +1470,19 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
|
|||||||
delete sqlite3.StructBinder;
|
delete sqlite3.StructBinder;
|
||||||
}
|
}
|
||||||
return sqlite3;
|
return sqlite3;
|
||||||
});
|
};
|
||||||
|
if(1){
|
||||||
|
/* Run all initializers in sequence. The advantage is that it
|
||||||
|
allows us to have post-init cleanup defined outside of this
|
||||||
|
routine at the end of the list and have it run at a
|
||||||
|
well-defined time. */
|
||||||
|
let p = lip.shift();
|
||||||
|
while(lip.length) p = p.then(lip.shift());
|
||||||
|
return p.then(postInit);
|
||||||
|
}else{
|
||||||
|
/* Run them in an arbitrary order. */
|
||||||
|
return Promise.all(lip).then(postInit);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
scriptInfo ideally gets injected into this object by the
|
scriptInfo ideally gets injected into this object by the
|
||||||
|
@ -592,13 +592,12 @@ const installAsyncProxy = function(self){
|
|||||||
(opfsFlags & state.opfsFlags.OPFS_UNLOCK_ASAP)
|
(opfsFlags & state.opfsFlags.OPFS_UNLOCK_ASAP)
|
||||||
|| state.opfsFlags.defaultUnlockAsap;
|
|| state.opfsFlags.defaultUnlockAsap;
|
||||||
if(0 /* this block is modelled after something wa-sqlite
|
if(0 /* this block is modelled after something wa-sqlite
|
||||||
does but it leads to immediate contention on journal files. */
|
does but it leads to immediate contention on journal files.
|
||||||
|
Update: this approach reportedly only works for DELETE journal
|
||||||
|
mode. */
|
||||||
&& (0===(flags & state.sq3Codes.SQLITE_OPEN_MAIN_DB))){
|
&& (0===(flags & state.sq3Codes.SQLITE_OPEN_MAIN_DB))){
|
||||||
/* sqlite does not lock these files, so go ahead and grab an OPFS
|
/* sqlite does not lock these files, so go ahead and grab an OPFS
|
||||||
lock.
|
lock. */
|
||||||
|
|
||||||
https://www.sqlite.org/uri.html
|
|
||||||
*/
|
|
||||||
fh.xLock = "xOpen"/* Truthy value to keep entry from getting
|
fh.xLock = "xOpen"/* Truthy value to keep entry from getting
|
||||||
flagged as auto-locked. String value so
|
flagged as auto-locked. String value so
|
||||||
that we can easily distinguish is later
|
that we can easily distinguish is later
|
||||||
|
@ -183,25 +183,37 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
|||||||
`methods`, (optional) `applyArgcCheck`) properties to
|
`methods`, (optional) `applyArgcCheck`) properties to
|
||||||
this.installMethods().
|
this.installMethods().
|
||||||
|
|
||||||
If the `vfs` entry is set, its `struct` property is passed
|
If the `vfs` entry is set then:
|
||||||
to this.registerVfs(). The `vfs` entry may optionally have
|
|
||||||
an `asDefault` property, which gets passed as the 2nd
|
- Its `struct` property is passed to this.registerVfs(). The
|
||||||
argument to registerVfs().
|
`vfs` entry may optionally have an `asDefault` property, which
|
||||||
|
gets passed as the 2nd argument to registerVfs().
|
||||||
|
|
||||||
|
- If `struct.$zName` is falsy and the entry has a string-type
|
||||||
|
`name` property, `struct.$zName` is set to the C-string form of
|
||||||
|
that `name` value before registerVfs() is called.
|
||||||
|
|
||||||
On success returns this object. Throws on error.
|
On success returns this object. Throws on error.
|
||||||
*/
|
*/
|
||||||
vh.installVfs = function(opt){
|
vh.installVfs = function(opt){
|
||||||
let count = 0;
|
let count = 0;
|
||||||
for(const key of ['io','vfs']){
|
const propList = ['io','vfs'];
|
||||||
|
for(const key of propList){
|
||||||
const o = opt[key];
|
const o = opt[key];
|
||||||
if(o){
|
if(o){
|
||||||
++count;
|
++count;
|
||||||
this.installMethods(o.struct, o.methods, !!o.applyArgcCheck);
|
this.installMethods(o.struct, o.methods, !!o.applyArgcCheck);
|
||||||
if('vfs'===key) this.registerVfs(o.struct, !!o.asDefault);
|
if('vfs'===key){
|
||||||
|
if(!o.struct.$zName && 'string'===typeof o.name){
|
||||||
|
o.struct.$zName = wasm.allocCString(o.name);
|
||||||
|
/* Note that we leak that C-string. */
|
||||||
|
}
|
||||||
|
this.registerVfs(o.struct, !!o.asDefault);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!count) toss("Misue: installVfs() options object requires at least",
|
}
|
||||||
"one of 'io' or 'vfs' properties.");
|
if(!count) toss("Misuse: installVfs() options object requires at least",
|
||||||
|
"one of:", propList);
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1266,7 +1266,7 @@ const installOpfsVfs = function callee(options){
|
|||||||
opfsUtil.rootDirectory = d;
|
opfsUtil.rootDirectory = d;
|
||||||
log("End of OPFS sqlite3_vfs setup.", opfsVfs);
|
log("End of OPFS sqlite3_vfs setup.", opfsVfs);
|
||||||
promiseResolve(sqlite3);
|
promiseResolve(sqlite3);
|
||||||
});
|
}).catch(promiseReject);
|
||||||
}else{
|
}else{
|
||||||
promiseResolve(sqlite3);
|
promiseResolve(sqlite3);
|
||||||
}
|
}
|
24
manifest
24
manifest
@ -1,5 +1,5 @@
|
|||||||
C Refactor\sa\ssignificant\schunk\sof\sthe\sOPFS\ssqlite3_vfs\sinit\scode\sinto\ssqlite3.VfsHelper,\sand\sinternal-use-only\sAPI\sencapsulating\scode\srelevant\sto\screating\snew\sVFSes\sin\sJS.\sIntended\sto\sassist\sin\spending\sexperimentation\swith\san\salternative\sOPFS\sVFS.
|
C Rename\ssome\sOPFS\sJS\sfiles.\sPrevent\sJS\sbindings\sof\ssqlite3_uri_...()\sfrom\sperforming\sJS-to-C-string\sargument\sconversion\son\stheir\sfirst\sargument,\sas\sdoing\sso\sis\sspecifically\sillegal.
|
||||||
D 2022-11-30T05:27:36.071
|
D 2022-11-30T07:17:29.596
|
||||||
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
|
||||||
@ -491,26 +491,26 @@ F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
|||||||
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
|
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
|
||||||
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
|
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
|
||||||
F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
|
F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
|
||||||
F ext/wasm/GNUmakefile a1a94ff422be90c06263055aec4c569fe3e4ffb3e8cc7f954fd2739aefa52292
|
F ext/wasm/GNUmakefile c6b88ce5f735e29bef2b5da2e095848a7919100521a45e645cbf2456d759d5dd
|
||||||
F ext/wasm/README-dist.txt 2d670b426fc7c613b90a7d2f2b05b433088fe65181abead970980f0a4a75ea20
|
F ext/wasm/README-dist.txt 2d670b426fc7c613b90a7d2f2b05b433088fe65181abead970980f0a4a75ea20
|
||||||
F ext/wasm/README.md ef39861aa21632fdbca0bdd469f78f0096f6449a720f3f39642594af503030e9
|
F ext/wasm/README.md ef39861aa21632fdbca0bdd469f78f0096f6449a720f3f39642594af503030e9
|
||||||
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api b4d68c97d14944b48d55e06aa44f544a6f56a7fa2bcb6f9e030936a5b2a9479a
|
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api b4d68c97d14944b48d55e06aa44f544a6f56a7fa2bcb6f9e030936a5b2a9479a
|
||||||
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
|
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
|
||||||
F ext/wasm/api/README.md 44d1ea63a990678e373f17ff4b08c2f8599e5a5754b7394e76f7e52164f307c0
|
F ext/wasm/api/README.md 44a05899d607a792370260a7c9193c9c111a7df06bc3ad1823c92a159526dbf3
|
||||||
F ext/wasm/api/extern-post-js.js 8923f76c3d2213159e12d641dc750523ead5c848185dc4996fae5cc12397f88d
|
F ext/wasm/api/extern-post-js.js 8923f76c3d2213159e12d641dc750523ead5c848185dc4996fae5cc12397f88d
|
||||||
F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
|
F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
|
||||||
F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08902f15c34720ee4a1
|
F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08902f15c34720ee4a1
|
||||||
F ext/wasm/api/post-js-header.js d6ab3dfef4a06960d28a7eaa338d4e2a1a5981e9b38718168bbde8fdb2a439b8
|
F ext/wasm/api/post-js-header.js d6ab3dfef4a06960d28a7eaa338d4e2a1a5981e9b38718168bbde8fdb2a439b8
|
||||||
F ext/wasm/api/pre-js.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
F ext/wasm/api/pre-js.js b88499dc303c21fc3f55f2c364a0f814f587b60a95784303881169f9e91c1d5f
|
||||||
F ext/wasm/api/sqlite3-api-cleanup.js 6a22a3287b34a2b4b0f8127614242e8307cce31ac060eb705a89a6d04dcb1028
|
F ext/wasm/api/sqlite3-api-cleanup.js 6a22a3287b34a2b4b0f8127614242e8307cce31ac060eb705a89a6d04dcb1028
|
||||||
F ext/wasm/api/sqlite3-api-glue.js 056f44b82c126358a0175e08a892d56fadfce177b0d7a0012502a6acf67ea6d5
|
F ext/wasm/api/sqlite3-api-glue.js 03c40b65530d67bb2748b7380aea5fd1534500f812b76a6b401066dcd7fc4116
|
||||||
F ext/wasm/api/sqlite3-api-oo1.js 06ad2079368e16cb9f182c18cd37bdc3932536856dff4f60582d0ca5f6c491a8
|
F ext/wasm/api/sqlite3-api-oo1.js 06ad2079368e16cb9f182c18cd37bdc3932536856dff4f60582d0ca5f6c491a8
|
||||||
F ext/wasm/api/sqlite3-api-opfs.js e36eec4535dab2da186c1fc743b8fb3a37b21a7c61425546d748a3038c25efab
|
F ext/wasm/api/sqlite3-api-prologue.js e1db3935e1deb1340c1dc0c0e4730b2b88254d616841ebd5bc6bb1b90b32657f
|
||||||
F ext/wasm/api/sqlite3-api-prologue.js 09fa4bf1e29596e599ead649003e01691419ffcb12d0f617152d577741973227
|
|
||||||
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
F ext/wasm/api/sqlite3-api-worker1.js e94ba98e44afccfa482874cd9acb325883ade50ed1f9f9526beb9de1711f182f
|
||||||
F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
|
F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
|
||||||
F ext/wasm/api/sqlite3-opfs-async-proxy.js 315582a4fe3b87ceaff69ad4a67d68a350b8014ac94d6a584d09ea922453c983
|
F ext/wasm/api/sqlite3-opfs-async-proxy.js efb0a7142c64c6a0f4cfbb588e6ea5baac9941364dfb0d40de2a21af1815bed3
|
||||||
F ext/wasm/api/sqlite3-vfs-helper.js 0b1de47e4407a414db1ee0ca3f9916ae74a9655fe1b1145d4a08e2b52f1ee25f
|
F ext/wasm/api/sqlite3-vfs-helper.js 4ad4faf02e1524bf0296be8452c00b5708dce6faf649468d0377e26a0b299263
|
||||||
|
F ext/wasm/api/sqlite3-vfs-opfs.js cb38965f0f0a52d22bddd3a40312dbdb7826bc90f1a5ce9692b7986cd05bdf43 w ext/wasm/api/sqlite3-api-opfs.js
|
||||||
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
|
||||||
F ext/wasm/api/sqlite3-wasm.c 8b32787a3b6bb2990cbaba2304bd5b75a9652acbc8d29909b3279019b6cbaef5
|
F ext/wasm/api/sqlite3-wasm.c 8b32787a3b6bb2990cbaba2304bd5b75a9652acbc8d29909b3279019b6cbaef5
|
||||||
F ext/wasm/api/sqlite3-worker1-promiser.js 0c7a9826dbf82a5ed4e4f7bf7816e825a52aff253afbf3350431f5773faf0e4b
|
F ext/wasm/api/sqlite3-worker1-promiser.js 0c7a9826dbf82a5ed4e4f7bf7816e825a52aff253afbf3350431f5773faf0e4b
|
||||||
@ -2065,8 +2065,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 7ce8608e221924d2c7067687eb6eef0f3cab181d5b4132e55a67d8514b6ce94b
|
P e25d7b080a807e35b32cb885ea75b384130e5c6e936dfef783c5b45d9bfe77d8
|
||||||
R 51f96a0acaea8419465c60238f6c368c
|
R e53006d34fb1afaea0f4ce19d105453b
|
||||||
U stephan
|
U stephan
|
||||||
Z aa663f409b5ddaba03a8fcd513053db4
|
Z 3ad9d27606a854f1ad4ff4e5ecee27f6
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
e25d7b080a807e35b32cb885ea75b384130e5c6e936dfef783c5b45d9bfe77d8
|
79832808de2cbdba140ed9e0558f1502b51d131ab4315265315922cda7b748cb
|
Reference in New Issue
Block a user