26
26
/*
27
27
** This code was built from sqlite3 version...
28
28
**
29
- ** SQLITE_VERSION "3.49.2 "
30
- ** SQLITE_VERSION_NUMBER 3049002
31
- ** SQLITE_SOURCE_ID "2025-05-07 10:39:52 17144570b0d96ae63cd6f3edca39e27ebd74925252bbaf6723bcb2f6b4861fb1 "
29
+ ** SQLITE_VERSION "3.50.0 "
30
+ ** SQLITE_VERSION_NUMBER 3050000
31
+ ** SQLITE_SOURCE_ID "2025-05-29 14:26:00 dfc790f998f450d9c35e3ba1c8c89c17466cb559f87b0239e4aab9d34e28f742 "
32
32
**
33
33
** Using the Emscripten SDK version 3.1.70.
34
34
*/
@@ -10051,7 +10051,7 @@ var sqlite3InitModule = (() => {
10051
10051
if ( ! ( tgt instanceof StructBinder . StructType ) ) {
10052
10052
toss ( 'Usage error: target object is-not-a StructType.' ) ;
10053
10053
} else if ( ! ( func instanceof Function ) && ! wasm . isPtr ( func ) ) {
10054
- toss ( 'Usage errror : expecting a Function or WASM pointer to one.' ) ;
10054
+ toss ( 'Usage error : expecting a Function or WASM pointer to one.' ) ;
10055
10055
}
10056
10056
if ( 1 === arguments . length ) {
10057
10057
return ( n , f ) => callee ( tgt , n , f , applyArgcCheck ) ;
@@ -10165,11 +10165,11 @@ var sqlite3InitModule = (() => {
10165
10165
10166
10166
globalThis . sqlite3ApiBootstrap . initializers . push ( function ( sqlite3 ) {
10167
10167
sqlite3 . version = {
10168
- libVersion : '3.49.2 ' ,
10169
- libVersionNumber : 3049002 ,
10168
+ libVersion : '3.50.0 ' ,
10169
+ libVersionNumber : 3050000 ,
10170
10170
sourceId :
10171
- '2025-05-07 10:39:52 17144570b0d96ae63cd6f3edca39e27ebd74925252bbaf6723bcb2f6b4861fb1 ' ,
10172
- downloadVersion : 3490200 ,
10171
+ '2025-05-29 14:26:00 dfc790f998f450d9c35e3ba1c8c89c17466cb559f87b0239e4aab9d34e28f742 ' ,
10172
+ downloadVersion : 3500000 ,
10173
10173
} ;
10174
10174
} ) ;
10175
10175
@@ -11536,6 +11536,12 @@ var sqlite3InitModule = (() => {
11536
11536
rc . changeCount =
11537
11537
db . changes ( true , 64 === rc . countChanges ) - changeCount ;
11538
11538
}
11539
+ const lastInsertRowId = ! ! rc . lastInsertRowId
11540
+ ? sqlite3 . capi . sqlite3_last_insert_rowid ( db )
11541
+ : undefined ;
11542
+ if ( undefined !== lastInsertRowId ) {
11543
+ rc . lastInsertRowId = lastInsertRowId ;
11544
+ }
11539
11545
if ( rc . callback instanceof Function ) {
11540
11546
rc . callback = theCallback ;
11541
11547
@@ -13007,7 +13013,7 @@ var sqlite3InitModule = (() => {
13007
13013
capi . SQLITE_OPEN_MAIN_JOURNAL |
13008
13014
capi . SQLITE_OPEN_SUPER_JOURNAL |
13009
13015
capi . SQLITE_OPEN_WAL ;
13010
-
13016
+ const FLAG_COMPUTE_DIGEST_V2 = capi . SQLITE_OPEN_MEMORY ;
13011
13017
const OPAQUE_DIR_NAME = '.opaque' ;
13012
13018
13013
13019
const getRandomName = ( ) => Math . random ( ) . toString ( 36 ) . slice ( 2 ) ;
@@ -13237,6 +13243,7 @@ var sqlite3InitModule = (() => {
13237
13243
xOpen : function f ( pVfs , zName , pFile , flags , pOutFlags ) {
13238
13244
const pool = getPoolForVfs ( pVfs ) ;
13239
13245
try {
13246
+ flags &= ~ FLAG_COMPUTE_DIGEST_V2 ;
13240
13247
pool . log ( `xOpen ${ wasm . cstrToJs ( zName ) } ${ flags } ` ) ;
13241
13248
13242
13249
const path =
@@ -13385,8 +13392,7 @@ var sqlite3InitModule = (() => {
13385
13392
13386
13393
getFileNames ( ) {
13387
13394
const rc = [ ] ;
13388
- const iter = this . #mapFilenameToSAH. keys ( ) ;
13389
- for ( const n of iter ) rc . push ( n ) ;
13395
+ for ( const n of this . #mapFilenameToSAH. keys ( ) ) rc . push ( n ) ;
13390
13396
return rc ;
13391
13397
}
13392
13398
@@ -13427,7 +13433,7 @@ var sqlite3InitModule = (() => {
13427
13433
this . #availableSAH. clear ( ) ;
13428
13434
}
13429
13435
13430
- async acquireAccessHandles ( clearFiles ) {
13436
+ async acquireAccessHandles ( clearFiles = false ) {
13431
13437
const files = [ ] ;
13432
13438
for await ( const [ name , h ] of this . #dhOpaque) {
13433
13439
if ( 'file' === h . kind ) {
@@ -13478,12 +13484,14 @@ var sqlite3InitModule = (() => {
13478
13484
13479
13485
const fileDigest = new Uint32Array ( HEADER_DIGEST_SIZE / 4 ) ;
13480
13486
sah . read ( fileDigest , { at : HEADER_OFFSET_DIGEST } ) ;
13481
- const compDigest = this . computeDigest ( this . #apBody) ;
13487
+ const compDigest = this . computeDigest ( this . #apBody, flags ) ;
13488
+
13482
13489
if ( fileDigest . every ( ( v , i ) => v === compDigest [ i ] ) ) {
13483
13490
const pathBytes = this . #apBody. findIndex ( ( v ) => 0 === v ) ;
13484
13491
if ( 0 === pathBytes ) {
13485
13492
sah . truncate ( HEADER_OFFSET_DATA ) ;
13486
13493
}
13494
+
13487
13495
return pathBytes
13488
13496
? textDecoder . decode ( this . #apBody. subarray ( 0 , pathBytes ) )
13489
13497
: '' ;
@@ -13499,10 +13507,13 @@ var sqlite3InitModule = (() => {
13499
13507
if ( HEADER_MAX_PATH_SIZE <= enc . written + 1 ) {
13500
13508
toss ( 'Path too long:' , path ) ;
13501
13509
}
13510
+ if ( path && flags ) {
13511
+ flags |= FLAG_COMPUTE_DIGEST_V2 ;
13512
+ }
13502
13513
this . #apBody. fill ( 0 , enc . written , HEADER_MAX_PATH_SIZE ) ;
13503
13514
this . #dvBody. setUint32 ( HEADER_OFFSET_FLAGS , flags ) ;
13515
+ const digest = this . computeDigest ( this . #apBody, flags ) ;
13504
13516
13505
- const digest = this . computeDigest ( this . #apBody) ;
13506
13517
sah . write ( this . #apBody, { at : 0 } ) ;
13507
13518
sah . write ( digest , { at : HEADER_OFFSET_DIGEST } ) ;
13508
13519
sah . flush ( ) ;
@@ -13516,14 +13527,18 @@ var sqlite3InitModule = (() => {
13516
13527
}
13517
13528
}
13518
13529
13519
- computeDigest ( byteArray ) {
13520
- let h1 = 0xdeadbeef ;
13521
- let h2 = 0x41c6ce57 ;
13522
- for ( const v of byteArray ) {
13523
- h1 = 31 * h1 + v * 307 ;
13524
- h2 = 31 * h2 + v * 307 ;
13530
+ computeDigest ( byteArray , fileFlags ) {
13531
+ if ( fileFlags & FLAG_COMPUTE_DIGEST_V2 ) {
13532
+ let h1 = 0xdeadbeef ;
13533
+ let h2 = 0x41c6ce57 ;
13534
+ for ( const v of byteArray ) {
13535
+ h1 = Math . imul ( h1 ^ v , 2654435761 ) ;
13536
+ h2 = Math . imul ( h2 ^ v , 104729 ) ;
13537
+ }
13538
+ return new Uint32Array ( [ h1 >>> 0 , h2 >>> 0 ] ) ;
13539
+ } else {
13540
+ return new Uint32Array ( [ 0 , 0 ] ) ;
13525
13541
}
13526
- return new Uint32Array ( [ h1 >>> 0 , h2 >>> 0 ] ) ;
13527
13542
}
13528
13543
13529
13544
async reset ( clearFiles ) {
@@ -13620,11 +13635,45 @@ var sqlite3InitModule = (() => {
13620
13635
} ) ;
13621
13636
this . #dhVfsRoot = this . #dhVfsParent = undefined ;
13622
13637
} catch ( e ) {
13623
- sqlite3 . config . error ( this . vfsName , 'removeVfs() failed:' , e ) ;
13638
+ sqlite3 . config . error (
13639
+ this . vfsName ,
13640
+ 'removeVfs() failed with no recovery strategy:' ,
13641
+ e ,
13642
+ ) ;
13624
13643
}
13625
13644
return true ;
13626
13645
}
13627
13646
13647
+ pauseVfs ( ) {
13648
+ if ( this . #mapS3FileToOFile_. size > 0 ) {
13649
+ sqlite3 . SQLite3Error . toss (
13650
+ capi . SQLITE_MISUSE ,
13651
+ 'Cannot pause VFS' ,
13652
+ this . vfsName ,
13653
+ 'because it has opened files.' ,
13654
+ ) ;
13655
+ }
13656
+ if ( this . #mapSAHToName. size > 0 ) {
13657
+ capi . sqlite3_vfs_unregister ( this . vfsName ) ;
13658
+ this . releaseAccessHandles ( ) ;
13659
+ }
13660
+ return this ;
13661
+ }
13662
+
13663
+ isPaused ( ) {
13664
+ return 0 === this . #mapSAHToName. size ;
13665
+ }
13666
+
13667
+ async unpauseVfs ( ) {
13668
+ if ( 0 === this . #mapSAHToName. size ) {
13669
+ return this . acquireAccessHandles ( false ) . then (
13670
+ ( ) => capi . sqlite3_vfs_register ( this . #cVfs, 0 ) ,
13671
+ this ,
13672
+ ) ;
13673
+ }
13674
+ return this ;
13675
+ }
13676
+
13628
13677
exportFile ( name ) {
13629
13678
const sah =
13630
13679
this . #mapFilenameToSAH. get ( name ) || toss ( 'File not found:' , name ) ;
@@ -13769,6 +13818,17 @@ var sqlite3InitModule = (() => {
13769
13818
async removeVfs ( ) {
13770
13819
return this . #p. removeVfs ( ) ;
13771
13820
}
13821
+
13822
+ pauseVfs ( ) {
13823
+ this . #p. pauseVfs ( ) ;
13824
+ return this ;
13825
+ }
13826
+ async unpauseVfs ( ) {
13827
+ return this . #p. unpauseVfs ( ) . then ( ( ) => this ) ;
13828
+ }
13829
+ isPaused ( ) {
13830
+ return this . #p. isPaused ( ) ;
13831
+ }
13772
13832
}
13773
13833
13774
13834
const apiVersionCheck = async ( ) => {
0 commit comments