@@ -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,12 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
8688 this . logger . warn ( 'Multiple tabs are not enabled in this browser' ) ;
8789 }
8890
91+ let tempStorePragma = 'PRAGMA temp_store = memory;' ;
92+
93+ if ( this . options . temporaryStorage === TemporaryStorageOption . FILESYSTEM ) {
94+ tempStorePragma = 'PRAGMA temp_store = file;' ;
95+ }
96+
8997 if ( useWebWorker ) {
9098 const optionsDbWorker = this . options . worker ;
9199
@@ -103,6 +111,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
103111 : getWorkerDatabaseOpener ( this . options . dbFilename , enableMultiTabs , optionsDbWorker ) ;
104112
105113 this . methods = await dbOpener ( this . options . dbFilename ) ;
114+ await this . methods ?. execute ( tempStorePragma ) ;
106115 this . methods . registerOnTableChange (
107116 Comlink . proxy ( ( event ) => {
108117 this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
@@ -112,6 +121,7 @@ export class WASQLiteDBAdapter extends BaseObserver<DBAdapterListener> implement
112121 return ;
113122 }
114123 this . methods = await _openDB ( this . options . dbFilename , { useWebWorker : false } ) ;
124+ await this . methods ?. execute ( tempStorePragma ) ;
115125 this . methods . registerOnTableChange ( ( event ) => {
116126 this . iterateListeners ( ( cb ) => cb . tablesUpdated ?.( event ) ) ;
117127 } ) ;
0 commit comments