@@ -14,7 +14,7 @@ import Logger, { type ILogger } from 'js-logger';
14
14
import type { DBFunctionsInterface , OpenDB } from '../../../shared/types' ;
15
15
import { _openDB } from '../../../shared/open-db' ;
16
16
import { getWorkerDatabaseOpener , resolveWorkerDatabasePortFactory } from '../../../worker/db/open-worker-database' ;
17
- import { ResolvedWebSQLOpenOptions , resolveWebSQLFlags , WebSQLFlags } from '../web-sql-flags' ;
17
+ import { ResolvedWebSQLOpenOptions , resolveWebSQLFlags , TemporaryStorageOption , WebSQLFlags } from '../web-sql-flags' ;
18
18
import { getNavigatorLocks } from '../../../shared/navigator' ;
19
19
20
20
/**
@@ -32,6 +32,8 @@ export interface WASQLiteDBAdapterOptions extends Omit<PowerSyncOpenFactoryOptio
32
32
workerPort ?: MessagePort ;
33
33
34
34
worker ?: string | URL | ( ( options : ResolvedWebSQLOpenOptions ) => Worker | SharedWorker ) ;
35
+
36
+ temporaryStorage ?: TemporaryStorageOption ;
35
37
}
36
38
37
39
/**
@@ -86,6 +88,8 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
86
88
this . logger . warn ( 'Multiple tabs are not enabled in this browser' ) ;
87
89
}
88
90
91
+ const tempStoreQuery = `PRAGMA temp_store = ${ this . options . temporaryStorage ?? TemporaryStorageOption . MEMORY } ;` ;
92
+
89
93
if ( useWebWorker ) {
90
94
const optionsDbWorker = this . options . worker ;
91
95
@@ -103,6 +107,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
103
107
: getWorkerDatabaseOpener ( this . options . dbFilename , enableMultiTabs , optionsDbWorker ) ;
104
108
105
109
this . methods = await dbOpener ( this . options . dbFilename ) ;
110
+ await this . methods ! . execute ( tempStoreQuery ) ;
106
111
this . methods . registerOnTableChange (
107
112
Comlink . proxy ( ( event ) => {
108
113
this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
@@ -112,6 +117,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
112
117
return ;
113
118
}
114
119
this . methods = await _openDB ( this . options . dbFilename , { useWebWorker : false } ) ;
120
+ await this . methods ! . execute ( tempStoreQuery ) ;
115
121
this . methods . registerOnTableChange ( ( event ) => {
116
122
this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
117
123
} ) ;
0 commit comments