From 9895c918810e90976f3990d9b74fe5edf478d784 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 8 Apr 2025 10:18:43 +0200 Subject: [PATCH 1/8] Updated BroadcastLogger to respect logLevels. Passing log level to db and sync worker. --- .../adapters/wa-sqlite/WASQLiteOpenFactory.ts | 11 ++++-- .../SharedWebStreamingSyncImplementation.ts | 2 ++ .../db/sync/WebStreamingSyncImplementation.ts | 5 ++- .../web/src/worker/db/WASQLiteDB.worker.ts | 22 ++++++++---- .../web/src/worker/sync/BroadcastLogger.ts | 35 ++++++++++++++++--- .../worker/sync/SharedSyncImplementation.ts | 11 ++++-- 6 files changed, 69 insertions(+), 17 deletions(-) diff --git a/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts b/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts index 6217b35d..95589f87 100644 --- a/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +++ b/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts @@ -12,6 +12,7 @@ import { } from '../web-sql-flags'; import { WorkerWrappedAsyncDatabaseConnection } from '../WorkerWrappedAsyncDatabaseConnection'; import { WASqliteConnection, WASQLiteVFS } from './WASQLiteConnection'; +import { ILogLevel } from 'js-logger'; export interface WASQLiteOpenFactoryOptions extends WebSQLOpenFactoryOptions { vfs?: WASQLiteVFS; @@ -20,6 +21,11 @@ export interface WASQLiteOpenFactoryOptions extends WebSQLOpenFactoryOptions { export interface ResolvedWASQLiteOpenFactoryOptions extends ResolvedWebSQLOpenOptions { vfs: WASQLiteVFS; } + +export interface WorkerDBOpenerOptions extends ResolvedWASQLiteOpenFactoryOptions { + logLevel: ILogLevel; +} + /** * Opens a SQLite connection using WA-SQLite. */ @@ -73,7 +79,7 @@ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory { ) : openWorkerDatabasePort(this.options.dbFilename, enableMultiTabs, optionsDbWorker, this.waOptions.vfs); - const workerDBOpener = Comlink.wrap>(workerPort); + const workerDBOpener = Comlink.wrap>(workerPort); return new WorkerWrappedAsyncDatabaseConnection({ remote: workerDBOpener, @@ -83,7 +89,8 @@ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory { temporaryStorage, cacheSizeKb, flags: this.resolvedFlags, - encryptionKey: encryptionKey + encryptionKey: encryptionKey, + logLevel: this.logger.getLevel() }), identifier: this.options.dbFilename, onClose: () => { diff --git a/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts b/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts index 916541d9..dadb1276 100644 --- a/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts +++ b/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts @@ -135,6 +135,8 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem } this.syncManager = Comlink.wrap(this.messagePort); + this.syncManager.setLogLevel(this.logger.getLevel()); + this.triggerCrudUpload = this.syncManager.triggerCrudUpload; /** diff --git a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts index 05d60f0a..9d55c3a7 100644 --- a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts +++ b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts @@ -6,6 +6,7 @@ import { } from '@powersync/common'; import { getNavigatorLocks } from '../../shared/navigator'; import { ResolvedWebSQLOpenOptions, WebSQLFlags } from '../adapters/web-sql-flags'; +import Logger from 'js-logger'; export interface WebStreamingSyncImplementationOptions extends AbstractStreamingSyncImplementationOptions { flags?: WebSQLFlags; @@ -26,7 +27,9 @@ export class WebStreamingSyncImplementation extends AbstractStreamingSyncImpleme obtainLock(lockOptions: LockOptions): Promise { const identifier = `streaming-sync-${lockOptions.type}-${this.webOptions.identifier}`; - lockOptions.type == LockType.SYNC && console.debug('requesting lock for ', identifier); + if (lockOptions.type == LockType.SYNC) { + (this.logger ?? Logger.get('WebStreamingSyncImplementation')).debug('requesting lock for ', identifier); + } return getNavigatorLocks().request(identifier, { signal: lockOptions.signal }, lockOptions.callback); } } diff --git a/packages/web/src/worker/db/WASQLiteDB.worker.ts b/packages/web/src/worker/db/WASQLiteDB.worker.ts index 7e28b024..c7ac24ec 100644 --- a/packages/web/src/worker/db/WASQLiteDB.worker.ts +++ b/packages/web/src/worker/db/WASQLiteDB.worker.ts @@ -6,8 +6,15 @@ import '@journeyapps/wa-sqlite'; import * as Comlink from 'comlink'; import { AsyncDatabaseConnection } from '../../db/adapters/AsyncDatabaseConnection'; import { WASqliteConnection } from '../../db/adapters/wa-sqlite/WASQLiteConnection'; -import { ResolvedWASQLiteOpenFactoryOptions } from '../../db/adapters/wa-sqlite/WASQLiteOpenFactory'; +import { + ResolvedWASQLiteOpenFactoryOptions, + WorkerDBOpenerOptions +} from '../../db/adapters/wa-sqlite/WASQLiteOpenFactory'; import { getNavigatorLocks } from '../../shared/navigator'; +import Logger from 'js-logger'; + +Logger.useDefaults(); +const logger = Logger.get('db-worker'); /** * Keeps track of open DB connections and the clients which @@ -39,11 +46,14 @@ const openWorkerConnection = async (options: ResolvedWASQLiteOpenFactoryOptions) }; }; -const openDBShared = async (options: ResolvedWASQLiteOpenFactoryOptions): Promise => { +const openDBShared = async (options: WorkerDBOpenerOptions): Promise => { // Prevent multiple simultaneous opens from causing race conditions return getNavigatorLocks().request(OPEN_DB_LOCK, async () => { const clientId = nextClientId++; - const { dbFilename } = options; + const { dbFilename, logLevel } = options; + + logger.setLevel(logLevel); + if (!DBMap.has(dbFilename)) { const clientIds = new Set(); const connection = await openWorkerConnection(options); @@ -65,14 +75,14 @@ const openDBShared = async (options: ResolvedWASQLiteOpenFactoryOptions): Promis }), close: Comlink.proxy(() => { const { clientIds } = dbEntry; - console.debug(`Close requested from client ${clientId} of ${[...clientIds]}`); + logger.debug(`Close requested from client ${clientId} of ${[...clientIds]}`); clientIds.delete(clientId); if (clientIds.size == 0) { - console.debug(`Closing connection to ${dbFilename}.`); + logger.debug(`Closing connection to ${dbFilename}.`); DBMap.delete(dbFilename); return db.close?.(); } - console.debug(`Connection to ${dbFilename} not closed yet due to active clients.`); + logger.debug(`Connection to ${dbFilename} not closed yet due to active clients.`); return; }) }; diff --git a/packages/web/src/worker/sync/BroadcastLogger.ts b/packages/web/src/worker/sync/BroadcastLogger.ts index 099f65d7..0b1bbb3c 100644 --- a/packages/web/src/worker/sync/BroadcastLogger.ts +++ b/packages/web/src/worker/sync/BroadcastLogger.ts @@ -13,6 +13,8 @@ export class BroadcastLogger implements ILogger { ERROR: ILogLevel; OFF: ILogLevel; + private currentLevel: ILogLevel = Logger.INFO; + constructor(protected clients: WrappedSyncPort[]) { this.TRACE = Logger.TRACE; this.DEBUG = Logger.DEBUG; @@ -24,63 +26,86 @@ export class BroadcastLogger implements ILogger { } trace(...x: any[]): void { + if (!this.enabledFor(this.TRACE)) return; + console.trace(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.trace(...sanitized)); } debug(...x: any[]): void { + if (!this.enabledFor(this.DEBUG)) return; + console.debug(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.debug(...sanitized)); } info(...x: any[]): void { + if (!this.enabledFor(this.INFO)) return; + console.info(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.info(...sanitized)); } log(...x: any[]): void { + if (!this.enabledFor(this.INFO)) return; + console.log(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.log(...sanitized)); } warn(...x: any[]): void { + if (!this.enabledFor(this.WARN)) return; + console.warn(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.warn(...sanitized)); } error(...x: any[]): void { + if (!this.enabledFor(this.ERROR)) return; + console.error(...x); const sanitized = this.sanitizeArgs(x); this.iterateClients((client) => client.clientProvider.error(...sanitized)); } time(label: string): void { + if (!this.enabledFor(this.TIME)) return; + console.time(label); this.iterateClients((client) => client.clientProvider.time(label)); } timeEnd(label: string): void { + if (!this.enabledFor(this.TIME)) return; + console.timeEnd(label); this.iterateClients((client) => client.clientProvider.timeEnd(label)); } + /** + * Set the global log level. + */ setLevel(level: ILogLevel): void { - // Levels are not adjustable on this level. + this.currentLevel = level; } + /** + * Get the current log level. + */ getLevel(): ILogLevel { - // Levels are not adjustable on this level. - return Logger.INFO; + return this.currentLevel; } + /** + * Returns true if the given level is enabled. + */ enabledFor(level: ILogLevel): boolean { - // Levels are not adjustable on this level. - return true; + return level.value >= this.currentLevel.value; } /** diff --git a/packages/web/src/worker/sync/SharedSyncImplementation.ts b/packages/web/src/worker/sync/SharedSyncImplementation.ts index f5c7c5bd..d9713933 100644 --- a/packages/web/src/worker/sync/SharedSyncImplementation.ts +++ b/packages/web/src/worker/sync/SharedSyncImplementation.ts @@ -13,7 +13,7 @@ import { } from '@powersync/common'; import { Mutex } from 'async-mutex'; import * as Comlink from 'comlink'; -import Logger, { type ILogger } from 'js-logger'; +import Logger, { ILogLevel, type ILogger } from 'js-logger'; import { WebRemote } from '../../db/sync/WebRemote'; import { WebStreamingSyncImplementation, @@ -145,6 +145,11 @@ export class SharedSyncImplementation return this.isInitialized; } + setLogLevel(level: ILogLevel) { + this.logger.setLevel(level); + this.broadCastLogger.setLevel(level); + } + /** * Configures the DBAdapter connection and a streaming sync client. */ @@ -234,7 +239,7 @@ export class SharedSyncImplementation async removePort(port: MessagePort) { const index = this.ports.findIndex((p) => p.port == port); if (index < 0) { - console.warn(`Could not remove port ${port} since it is not present in active ports.`); + this.logger.warn(`Could not remove port ${port} since it is not present in active ports.`); return; } @@ -311,7 +316,7 @@ export class SharedSyncImplementation abortController.signal.onabort = reject; try { - console.log('calling the last port client provider for credentials'); + this.logger.log('calling the last port client provider for credentials'); resolve(await lastPort.clientProvider.fetchCredentials()); } catch (ex) { reject(ex); From 4d6e73b7477a5c294a5e59630a8b48b92d5ccf53 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 8 Apr 2025 11:41:52 +0200 Subject: [PATCH 2/8] Exposing logger in AbstractPowerSyncDatabase, opens the ability to have controlled logging in packages like Attachments, React, and Vue. --- .../src/AbstractAttachmentQueue.ts | 42 ++++++++++--------- .../src/client/AbstractPowerSyncDatabase.ts | 34 ++++++++------- packages/react/src/WatchedQuery.ts | 8 +++- packages/react/src/hooks/useQuery.ts | 7 ++-- packages/vue/src/composables/useQuery.ts | 7 ++-- .../db/adapters/AbstractWebSQLOpenFactory.ts | 4 +- 6 files changed, 58 insertions(+), 44 deletions(-) diff --git a/packages/attachments/src/AbstractAttachmentQueue.ts b/packages/attachments/src/AbstractAttachmentQueue.ts index 888d38a5..a5f4d4d2 100644 --- a/packages/attachments/src/AbstractAttachmentQueue.ts +++ b/packages/attachments/src/AbstractAttachmentQueue.ts @@ -91,6 +91,10 @@ export abstract class AbstractAttachmentQueue { const _ids = `${ids.map((id) => `'${id}'`).join(',')}`; - console.debug(`Queuing for sync, attachment IDs: [${_ids}]`); + this.logger.debug(`Queuing for sync, attachment IDs: [${_ids}]`); if (this.initialSync) { this.initialSync = false; @@ -151,11 +155,11 @@ export abstract class AbstractAttachmentQueue 0) { const id = this.downloadQueue.values().next().value; this.downloadQueue.delete(id); @@ -474,9 +478,9 @@ export abstract class AbstractAttachmentQueue { for (const record of res) { await this.delete(record, tx); @@ -527,7 +531,7 @@ export abstract class AbstractAttachmentQueue { - console.debug(`Clearing attachment queue...`); + this.logger.debug(`Clearing attachment queue...`); await this.powersync.writeTransaction(async (tx) => { await tx.execute(`DELETE FROM ${this.table}`); }); diff --git a/packages/common/src/client/AbstractPowerSyncDatabase.ts b/packages/common/src/client/AbstractPowerSyncDatabase.ts index 2e71083e..c5650735 100644 --- a/packages/common/src/client/AbstractPowerSyncDatabase.ts +++ b/packages/common/src/client/AbstractPowerSyncDatabase.ts @@ -406,6 +406,10 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver cb.schemaChanged?.(schema)); } + get logger() { + return this.options.logger!; + } + /** * Wait for initialization to complete. * While initializing is automatic, this helps to catch and report initialization errors. @@ -555,7 +559,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver { @@ -633,7 +637,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver { @@ -661,7 +665,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver implements }); } + get logger() { + return this.db.logger; + } + addTemporaryHold() { const ref = new Object(); this.temporaryHolds.add(ref); @@ -88,7 +92,7 @@ export class WatchedQuery extends BaseObserver implements try { this.tables = await this.db.resolveTables(this.query.sqlStatement, this.query.queryParameters, this.options); } catch (e) { - console.error('Failed to fetch tables:', e); + this.logger.error('Failed to fetch tables:', e); this.setError(e); } } @@ -103,7 +107,7 @@ export class WatchedQuery extends BaseObserver implements const data = result ?? []; this.setData(data); } catch (e) { - console.error('Failed to fetch data:', e); + this.logger.error('Failed to fetch data:', e); this.setError(e); } } diff --git a/packages/react/src/hooks/useQuery.ts b/packages/react/src/hooks/useQuery.ts index b5701027..59c5225c 100644 --- a/packages/react/src/hooks/useQuery.ts +++ b/packages/react/src/hooks/useQuery.ts @@ -42,6 +42,7 @@ export const useQuery = ( options: AdditionalOptions = { runQueryOnce: false } ): QueryResult => { const powerSync = usePowerSync(); + const logger = powerSync.logger; if (!powerSync) { return { isLoading: false, isFetching: false, data: [], error: new Error('PowerSync not configured.') }; } @@ -50,7 +51,7 @@ export const useQuery = ( try { parsedQuery = parseQuery(query, parameters); } catch (error) { - console.error('Failed to parse query:', error); + logger.error('Failed to parse query:', error); return { isLoading: false, isFetching: false, data: [], error }; } @@ -107,7 +108,7 @@ export const useQuery = ( handleResult(result); } catch (e) { - console.error('Failed to fetch data:', e); + logger.error('Failed to fetch data:', e); handleError(e); } }; @@ -122,7 +123,7 @@ export const useQuery = ( setTables(tables); } catch (e) { - console.error('Failed to fetch tables:', e); + logger.error('Failed to fetch tables:', e); handleError(e); } }; diff --git a/packages/vue/src/composables/useQuery.ts b/packages/vue/src/composables/useQuery.ts index 57295e65..ca09ea3d 100644 --- a/packages/vue/src/composables/useQuery.ts +++ b/packages/vue/src/composables/useQuery.ts @@ -65,6 +65,7 @@ export const useQuery = ( let fetchData: () => Promise | undefined; const powerSync = usePowerSync(); + const logger = powerSync.value.logger; const finishLoading = () => { isLoading.value = false; @@ -99,7 +100,7 @@ export const useQuery = ( const result = await executor(); handleResult(result); } catch (e) { - console.error('Failed to fetch data:', e); + logger.error('Failed to fetch data:', e); handleError(e); } }; @@ -114,7 +115,7 @@ export const useQuery = ( try { parsedQuery = parseQuery(queryValue, toValue(sqlParameters).map(toValue)); } catch (e) { - console.error('Failed to parse query:', e); + logger.error('Failed to parse query:', e); handleError(e); return; } @@ -125,7 +126,7 @@ export const useQuery = ( try { resolvedTables = await powerSync.value.resolveTables(sql, parameters, options); } catch (e) { - console.error('Failed to fetch tables:', e); + logger.error('Failed to fetch tables:', e); handleError(e); return; } diff --git a/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts b/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts index 2e1755e3..134a2b2a 100644 --- a/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts +++ b/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts @@ -26,7 +26,7 @@ export abstract class AbstractWebSQLOpenFactory implements SQLOpenFactory { resolvedFlags: { disableSSRWarning, enableMultiTabs, ssrMode = isServerSide() } } = this; if (ssrMode && !disableSSRWarning) { - console.warn( + this.logger.warn( ` Running PowerSync in SSR mode. Only empty query results will be returned. @@ -35,7 +35,7 @@ export abstract class AbstractWebSQLOpenFactory implements SQLOpenFactory { } if (!enableMultiTabs) { - console.warn( + this.logger.warn( 'Multiple tab support is not enabled. Using this site across multiple tabs may not function correctly.' ); } From 637ac75e875e1122cff0f92f26563e45daa74535 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 8 Apr 2025 11:44:34 +0200 Subject: [PATCH 3/8] Changeset entries. --- .changeset/dirty-buttons-hunt.md | 7 +++++++ .changeset/fresh-jobs-explain.md | 5 +++++ .changeset/green-rings-judge.md | 5 +++++ 3 files changed, 17 insertions(+) create mode 100644 .changeset/dirty-buttons-hunt.md create mode 100644 .changeset/fresh-jobs-explain.md create mode 100644 .changeset/green-rings-judge.md diff --git a/.changeset/dirty-buttons-hunt.md b/.changeset/dirty-buttons-hunt.md new file mode 100644 index 00000000..cabfca0e --- /dev/null +++ b/.changeset/dirty-buttons-hunt.md @@ -0,0 +1,7 @@ +--- +'@powersync/attachments': patch +'@powersync/react': patch +'@powersync/vue': patch +--- + +Using newly exposed logger from AbstractPowerSyncDatabase to have controlled logging instead of using console based logging. diff --git a/.changeset/fresh-jobs-explain.md b/.changeset/fresh-jobs-explain.md new file mode 100644 index 00000000..6e972171 --- /dev/null +++ b/.changeset/fresh-jobs-explain.md @@ -0,0 +1,5 @@ +--- +'@powersync/common': minor +--- + +Exposing logger on AbstractPowerSyncDatabase. diff --git a/.changeset/green-rings-judge.md b/.changeset/green-rings-judge.md new file mode 100644 index 00000000..7f24b955 --- /dev/null +++ b/.changeset/green-rings-judge.md @@ -0,0 +1,5 @@ +--- +'@powersync/web': patch +--- + +Updated db and sync workers to respect log levels. From 5609dee27fb52aebf392f2c25a9f102a00708d5a Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 8 Apr 2025 13:48:38 +0200 Subject: [PATCH 4/8] Reverting helper package's logging to console in test environments. --- packages/attachments/src/AbstractAttachmentQueue.ts | 2 +- packages/react/src/WatchedQuery.ts | 2 +- packages/react/src/hooks/useQuery.ts | 2 +- packages/vue/src/composables/useQuery.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/attachments/src/AbstractAttachmentQueue.ts b/packages/attachments/src/AbstractAttachmentQueue.ts index a5f4d4d2..b056007f 100644 --- a/packages/attachments/src/AbstractAttachmentQueue.ts +++ b/packages/attachments/src/AbstractAttachmentQueue.ts @@ -92,7 +92,7 @@ export abstract class AbstractAttachmentQueue implements } get logger() { - return this.db.logger; + return this.db.logger ?? console; } addTemporaryHold() { diff --git a/packages/react/src/hooks/useQuery.ts b/packages/react/src/hooks/useQuery.ts index 59c5225c..b7400eae 100644 --- a/packages/react/src/hooks/useQuery.ts +++ b/packages/react/src/hooks/useQuery.ts @@ -42,7 +42,7 @@ export const useQuery = ( options: AdditionalOptions = { runQueryOnce: false } ): QueryResult => { const powerSync = usePowerSync(); - const logger = powerSync.logger; + const logger = powerSync?.logger ?? console; if (!powerSync) { return { isLoading: false, isFetching: false, data: [], error: new Error('PowerSync not configured.') }; } diff --git a/packages/vue/src/composables/useQuery.ts b/packages/vue/src/composables/useQuery.ts index ca09ea3d..2a5d32f2 100644 --- a/packages/vue/src/composables/useQuery.ts +++ b/packages/vue/src/composables/useQuery.ts @@ -65,7 +65,7 @@ export const useQuery = ( let fetchData: () => Promise | undefined; const powerSync = usePowerSync(); - const logger = powerSync.value.logger; + const logger = powerSync?.value?.logger ?? console; const finishLoading = () => { isLoading.value = false; From 189d4a0677145414ba3388203f0a50ecc442671c Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Thu, 17 Apr 2025 08:54:34 +0200 Subject: [PATCH 5/8] Changed .worker.ts console.log to console.debug --- packages/web/src/worker/sync/SharedSyncImplementation.worker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts b/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts index 8c8e1266..cb32a9c7 100644 --- a/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts +++ b/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts @@ -20,7 +20,7 @@ _self.onconnect = function (event: MessageEvent) { port.addEventListener('message', (event) => { const payload = event.data as ManualSharedSyncPayload; if (payload?.event == SharedSyncClientEvent.CLOSE_CLIENT) { - console.log('closing shared for port', port); + console.debug('closing shared for port', port); sharedSyncImplementation.removePort(port); } }); From 8a4f12bf55ad4532980b0b4977cbea2621a075a0 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 22 Apr 2025 16:43:46 +0200 Subject: [PATCH 6/8] Using logger types from @powersync/common for node package. --- .changeset/calm-roses-poke.md | 5 +++++ packages/node/src/sync/stream/NodeRemote.ts | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/calm-roses-poke.md diff --git a/.changeset/calm-roses-poke.md b/.changeset/calm-roses-poke.md new file mode 100644 index 00000000..e87a34ff --- /dev/null +++ b/.changeset/calm-roses-poke.md @@ -0,0 +1,5 @@ +--- +'@powersync/node': patch +--- + +Using logger types from @powersync/common. diff --git a/packages/node/src/sync/stream/NodeRemote.ts b/packages/node/src/sync/stream/NodeRemote.ts index b0c14748..b05be330 100644 --- a/packages/node/src/sync/stream/NodeRemote.ts +++ b/packages/node/src/sync/stream/NodeRemote.ts @@ -1,8 +1,7 @@ import * as os from 'node:os'; -import { ILogger } from 'js-logger'; - import { + type ILogger, AbstractRemote, AbstractRemoteOptions, BSONImplementation, From 9854fb01e3f20fbd9a2c2dc55eabd07b05b8f2d0 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Tue, 22 Apr 2025 16:44:58 +0200 Subject: [PATCH 7/8] Removed last console.debug calls from workers. --- packages/web/src/worker/db/WASQLiteDB.worker.ts | 1 - packages/web/src/worker/sync/SharedSyncImplementation.worker.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/web/src/worker/db/WASQLiteDB.worker.ts b/packages/web/src/worker/db/WASQLiteDB.worker.ts index 169f40f4..2ffd8be8 100644 --- a/packages/web/src/worker/db/WASQLiteDB.worker.ts +++ b/packages/web/src/worker/db/WASQLiteDB.worker.ts @@ -97,7 +97,6 @@ if (typeof SharedWorkerGlobalScope !== 'undefined') { const _self: SharedWorkerGlobalScope = self as any; _self.onconnect = function (event: MessageEvent) { const port = event.ports[0]; - console.debug('Exposing shared db on port', port); Comlink.expose(openDBShared, port); }; } else { diff --git a/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts b/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts index 2379524d..ad764445 100644 --- a/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts +++ b/packages/web/src/worker/sync/SharedSyncImplementation.worker.ts @@ -22,7 +22,6 @@ _self.onconnect = function (event: MessageEvent) { port.addEventListener('message', (event) => { const payload = event.data as ManualSharedSyncPayload; if (payload?.event == SharedSyncClientEvent.CLOSE_CLIENT) { - console.debug('closing shared for port', port); sharedSyncImplementation.removePort(port); } }); From 0857d51cf83c8c27e2946be4460cce498a7b4877 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Wed, 23 Apr 2025 12:18:46 +0200 Subject: [PATCH 8/8] Minor cleanup. --- packages/web/src/db/sync/WebStreamingSyncImplementation.ts | 2 +- packages/web/src/worker/sync/BroadcastLogger.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts index 105858be..10f8905d 100644 --- a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts +++ b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts @@ -28,7 +28,7 @@ export class WebStreamingSyncImplementation extends AbstractStreamingSyncImpleme obtainLock(lockOptions: LockOptions): Promise { const identifier = `streaming-sync-${lockOptions.type}-${this.webOptions.identifier}`; if (lockOptions.type == LockType.SYNC) { - (this.logger ?? createLogger('WebStreamingSyncImplementation')).debug('requesting lock for ', identifier); + this.logger.debug('requesting lock for ', identifier); } return getNavigatorLocks().request(identifier, { signal: lockOptions.signal }, lockOptions.callback); } diff --git a/packages/web/src/worker/sync/BroadcastLogger.ts b/packages/web/src/worker/sync/BroadcastLogger.ts index 4fa1aba6..01b01548 100644 --- a/packages/web/src/worker/sync/BroadcastLogger.ts +++ b/packages/web/src/worker/sync/BroadcastLogger.ts @@ -13,7 +13,7 @@ export class BroadcastLogger implements ILogger { ERROR: ILogLevel; OFF: ILogLevel; - private currentLevel: ILogLevel = Logger.INFO; + private currentLevel: ILogLevel = LogLevel.INFO; constructor(protected clients: WrappedSyncPort[]) { this.TRACE = LogLevel.TRACE;