@@ -14,7 +14,7 @@ import Logger, { type ILogger } from 'js-logger';
1414import type { DBFunctionsInterface , OpenDB } from '../../../shared/types' ;
1515import { _openDB } from '../../../shared/open-db' ;
1616import { 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' ;
1818import { getNavigatorLocks } from '../../../shared/navigator' ;
1919
2020/**
@@ -32,6 +32,8 @@ export interface WASQLiteDBAdapterOptions extends Omit<PowerSyncOpenFactoryOptio
3232 workerPort ?: MessagePort ;
3333
3434 worker ?: string | URL | ( ( options : ResolvedWebSQLOpenOptions ) => Worker | SharedWorker ) ;
35+
36+ temporaryStorage ?: TemporaryStorageOption ;
3537}
3638
3739/**
@@ -86,6 +88,8 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
8688 this . logger . warn ( 'Multiple tabs are not enabled in this browser' ) ;
8789 }
8890
91+ const tempStoreQuery = `PRAGMA temp_store = ${ this . options . temporaryStorage ?? TemporaryStorageOption . MEMORY } ;` ;
92+
8993 if ( useWebWorker ) {
9094 const optionsDbWorker = this . options . worker ;
9195
@@ -103,6 +107,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
103107 : getWorkerDatabaseOpener ( this . options . dbFilename , enableMultiTabs , optionsDbWorker ) ;
104108
105109 this . methods = await dbOpener ( this . options . dbFilename ) ;
110+ await this . methods ! . execute ( tempStoreQuery ) ;
106111 this . methods . registerOnTableChange (
107112 Comlink . proxy ( ( event ) => {
108113 this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
@@ -112,6 +117,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
112117 return ;
113118 }
114119 this . methods = await _openDB ( this . options . dbFilename , { useWebWorker : false } ) ;
120+ await this . methods ! . execute ( tempStoreQuery ) ;
115121 this . methods . registerOnTableChange ( ( event ) => {
116122 this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
117123 } ) ;
0 commit comments