diff --git a/packages/common/src/client/AbstractPowerSyncDatabase.ts b/packages/common/src/client/AbstractPowerSyncDatabase.ts index a7833556..c38e0a45 100644 --- a/packages/common/src/client/AbstractPowerSyncDatabase.ts +++ b/packages/common/src/client/AbstractPowerSyncDatabase.ts @@ -24,7 +24,8 @@ import { CrudEntry, CrudEntryJSON } from './sync/bucket/CrudEntry.js'; import { CrudTransaction } from './sync/bucket/CrudTransaction.js'; import { DEFAULT_CRUD_UPLOAD_THROTTLE_MS, - PowerSyncConnectionOptions, + type PowerSyncConnectionOptionalOptions, + type PowerSyncConnectionOptions, StreamingSyncImplementation, StreamingSyncImplementationListener } from './sync/stream/AbstractStreamingSyncImplementation.js'; @@ -35,21 +36,9 @@ export interface DisconnectAndClearOptions { clearLocal?: boolean; } -export interface BasePowerSyncDatabaseOptions { +export interface BasePowerSyncDatabaseOptions extends PowerSyncConnectionOptionalOptions { /** Schema used for the local database. */ schema: Schema; - - /** - * Delay for retrying sync streaming operations - * from the PowerSync backend after an error occurs. - */ - retryDelay?: number; - /** - * Backend Connector CRUD operations are throttled - * to occur at most every `crudUploadThrottleMs` - * milliseconds. - */ - crudUploadThrottleMs?: number; logger?: ILogger; } @@ -129,7 +118,7 @@ export const DEFAULT_POWERSYNC_CLOSE_OPTIONS: PowerSyncCloseOptions = { export const DEFAULT_WATCH_THROTTLE_MS = 30; export const DEFAULT_POWERSYNC_DB_OPTIONS = { - retryDelay: 5000, + retryDelayMs: 5000, logger: Logger.get('PowerSyncDatabase'), crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS }; @@ -244,10 +233,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver; - /** +} + +export interface PowerSyncConnectionOptionalOptions { + /** * Delay for retrying sync streaming operations * from the PowerSync backend after an error occurs. */ - retryDelayMs?: number; - /** - * Backend Connector CRUD operations are throttled - * to occur at most every `crudUploadThrottleMs` - * milliseconds. - */ - crudUploadThrottleMs?: number; + retryDelayMs?: number; + /** + * Backend Connector CRUD operations are throttled + * to occur at most every `crudUploadThrottleMs` + * milliseconds. + */ + crudUploadThrottleMs?: number; } -export type PowerSyncConnectionRequiredOptions = Required>; export interface StreamingSyncImplementation extends BaseObserver, Disposable { /** diff --git a/packages/react-native/src/db/PowerSyncDatabase.ts b/packages/react-native/src/db/PowerSyncDatabase.ts index a0c18733..29dedae0 100644 --- a/packages/react-native/src/db/PowerSyncDatabase.ts +++ b/packages/react-native/src/db/PowerSyncDatabase.ts @@ -51,8 +51,8 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { ): AbstractStreamingSyncImplementation { const remote = new ReactNativeRemote(connector); // Use the options passed in during connect, or fallback to the options set during database creation - const retryDelayMs = options?.retryDelayMs || this.options.retryDelay; - const crudUploadThrottleMs = options?.crudUploadThrottleMs || this.options.crudUploadThrottleMs; + const retryDelayMs = options?.retryDelayMs ?? this.options.retryDelayMs; + const crudUploadThrottleMs = options?.crudUploadThrottleMs ?? this.options.crudUploadThrottleMs; return new ReactNativeStreamingSyncImplementation({ adapter: this.bucketStorageAdapter, diff --git a/packages/web/src/db/PowerSyncDatabase.ts b/packages/web/src/db/PowerSyncDatabase.ts index d35fab99..7edc734b 100644 --- a/packages/web/src/db/PowerSyncDatabase.ts +++ b/packages/web/src/db/PowerSyncDatabase.ts @@ -3,6 +3,7 @@ import { type PowerSyncBackendConnector, type PowerSyncCloseOptions, type PowerSyncConnectionOptions, + type PowerSyncConnectionOptionalOptions, AbstractPowerSyncDatabase, DBAdapter, DEFAULT_POWERSYNC_CLOSE_OPTIONS, @@ -167,15 +168,12 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { protected generateSyncStreamImplementation( connector: PowerSyncBackendConnector, // This is used to pass in options on connection instead of only during db creation - options?: { - retryDelayMs?: number; - crudUploadThrottleMs?: number; - } + options?: PowerSyncConnectionOptionalOptions ): StreamingSyncImplementation { const remote = new WebRemote(connector); // Use the options passed in during connect, or fallback to the options set during database creation - const retryDelayMs = options?.retryDelayMs || this.options.retryDelay; - const crudUploadThrottleMs = options?.crudUploadThrottleMs || this.options.crudUploadThrottleMs; + const retryDelayMs = options?.retryDelayMs ?? this.options.retryDelayMs; + const crudUploadThrottleMs = options?.crudUploadThrottleMs ?? this.options.crudUploadThrottleMs; const syncOptions: WebStreamingSyncImplementationOptions = { ...(this.options as {}), diff --git a/packages/web/tests/src/db/PowersyncDatabase.test.ts b/packages/web/tests/src/db/PowersyncDatabase.test.ts index 012f0149..65e8a68e 100644 --- a/packages/web/tests/src/db/PowersyncDatabase.test.ts +++ b/packages/web/tests/src/db/PowersyncDatabase.test.ts @@ -34,7 +34,7 @@ describe('PowerSyncDatabase - generateSyncStreamImplementation', () => { flags: { ssrMode: true, }, - retryDelay: 1000, + retryDelayMs: 1000, crudUploadThrottleMs: 2000 }) @@ -86,7 +86,7 @@ describe('PowerSyncDatabase - generateSyncStreamImplementation', () => { ssrMode: false, enableMultiTabs: false, }, - retryDelay: 1000, + retryDelayMs: 1000, crudUploadThrottleMs: 2000 })