Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/strong-flies-watch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@powersync/common': major
---

Remove js-logger dependency in favor of a custom logger interface that needs to be passed to PowerSync databases explicitly.
6 changes: 5 additions & 1 deletion demos/angular-supabase-todolist/src/app/powersync.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import {
AbstractPowerSyncDatabase,
Column,
ColumnType,
createConsoleLogger,
Index,
IndexedColumn,
LogLevels,
PowerSyncBackendConnector,
PowerSyncDatabase,
Schema,
Expand Down Expand Up @@ -69,7 +71,9 @@ export class PowerSyncService {
dbFilename: 'test.db',
vfs: WASQLiteVFS.OPFSCoopSyncVFS,
// Specify the path to the worker script
worker: 'assets/@powersync/worker/WASQLiteDB.umd.js'
worker: 'assets/@powersync/worker/WASQLiteDB.umd.js',
logLevel: LogLevels.debug,
logger: createConsoleLogger({ prefix: 'powersync' })
});

this.db = new PowerSyncDatabase({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
import { CircularProgress } from '@mui/material';
import { PowerSyncDatabase } from '@powersync/capacitor';
import { PowerSyncContext } from '@powersync/react';
import { createBaseLogger, LogLevel } from '@powersync/web';
import { createConsoleLogger, LogLevels } from '@powersync/web';
import React, { Suspense } from 'react';
import { AppSchema } from '../../library/powersync/AppSchema.js';
import { BackendConnector } from '../../library/powersync/BackendConnector.js';

const logger = createBaseLogger();
logger.useDefaults();
logger.setLevel(LogLevel.DEBUG);

// Uses the Web SDK for web, and Capacitor adapters for iOS/Android.
const powerSync = new PowerSyncDatabase({
database: {
Expand All @@ -18,7 +14,8 @@ const powerSync = new PowerSyncDatabase({
schema: AppSchema,
flags: {
enableMultiTabs: typeof SharedWorker !== 'undefined'
}
},
logger: createConsoleLogger({ minLevel: LogLevels.debug })
});
const connector = new BackendConnector();

Expand Down
15 changes: 2 additions & 13 deletions demos/example-electron-node/src/main/index.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,10 @@
import fs from 'node:fs';
import { Worker } from 'node:worker_threads';

import {
createBaseLogger,
createLogger,
LogLevel,
PowerSyncDatabase,
SyncStreamConnectionMethod
} from '@powersync/node';
import { createConsoleLogger, LogLevels, PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/node';
import { app, BrowserWindow, ipcMain, MessagePortMain } from 'electron';
import { AppSchema, BackendConnector } from './powersync';

const baseLogger = createBaseLogger();
baseLogger.useDefaults({ defaultLevel: LogLevel.WARN });

const logger = createLogger('PowerSyncDemo');

// This allows TypeScript to pick up the magic constants that's auto-generated by Forge's Webpack
// plugin that tells the Electron app where to look for the Webpack-bundled app code (depending on
// whether you're running in development or production).
Expand Down Expand Up @@ -47,7 +36,7 @@ const database = new PowerSyncDatabase({
return new Worker(new URL('./worker.ts', import.meta.url), options);
}
},
logger
logger: createConsoleLogger({ minLevel: LogLevels.debug })
});

const createWindow = (): void => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
import { PowerSyncContext } from '@powersync/react';
import { createBaseLogger, LogLevel, PowerSyncDatabase } from '@powersync/web';
import { createConsoleLogger, LogLevels, PowerSyncDatabase } from '@powersync/web';
import { CircularProgress } from '@mui/material';
import React, { Suspense } from 'react';
import { AppSchema } from '../../library/powersync/AppSchema.js';
import { BackendConnector } from '../../library/powersync/BackendConnector.js';

const logger = createBaseLogger();
logger.useDefaults();
logger.setLevel(LogLevel.DEBUG);

const powerSync = new PowerSyncDatabase({
database: { dbFilename: 'powersync2.db' },
schema: AppSchema,
flags: {
disableSSRWarning: true
}
},
logger: createConsoleLogger({ minLevel: LogLevels.debug })
});
const connector = new BackendConnector();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,27 @@
import { AppSchema } from '@/library/powersync/schema';
import { BackendConnector } from '@/library/powersync/connector';
import { PowerSyncContext } from '@powersync/react';
import { PowerSyncDatabase, WASQLiteOpenFactory } from '@powersync/web';
import { createConsoleLogger, LogLevels, PowerSyncDatabase, WASQLiteOpenFactory } from '@powersync/web';
import React, { Suspense } from 'react';

let dbInstance: PowerSyncDatabase | null = null;

const logger = createConsoleLogger({ minLevel: LogLevels.debug });

function getDB(): PowerSyncDatabase {
if (dbInstance) return dbInstance;

dbInstance = new PowerSyncDatabase({
database: new WASQLiteOpenFactory({
dbFilename: 'powersync-nextjs.db',
worker: '/@powersync/worker/WASQLiteDB.umd.js'
worker: '/@powersync/worker/WASQLiteDB.umd.js',
logger,
logLevel: LogLevels.debug
}),
schema: AppSchema,
flags: { disableSSRWarning: true },
sync: { worker: '/@powersync/worker/SharedSyncImplementation.umd.js' }
sync: { worker: '/@powersync/worker/SharedSyncImplementation.umd.js' },
logger
});

dbInstance.connect(new BackendConnector());
Expand Down
9 changes: 4 additions & 5 deletions demos/example-node/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import repl_factory from 'node:repl';
import { Worker } from 'node:worker_threads';

import {
createBaseLogger,
createLogger,
createConsoleLogger,
LogLevels,
PowerSyncDatabase,
SyncClientImplementation,
SyncStreamConnectionMethod
Expand All @@ -15,11 +15,10 @@ import { AppSchema, DemoConnector } from './powersync.js';
import { enableUncidiDiagnostics } from './UndiciDiagnostics.js';

const main = async () => {
const baseLogger = createBaseLogger();
const logger = createLogger('PowerSyncDemo');
const debug = process.env.POWERSYNC_DEBUG == '1';
const logger = createConsoleLogger({ prefix: 'PowerSyncDemo', minLevel: debug ? LogLevels.trace : LogLevels.warn });

const encryptionKey = process.env.ENCRYPTION_KEY ?? '';
baseLogger.useDefaults({ defaultLevel: debug ? logger.TRACE : logger.WARN });

// Enable detailed request/response logging for debugging purposes.
if (debug) {
Expand Down
7 changes: 4 additions & 3 deletions demos/example-vite-encryption/src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { column, Schema, Table, PowerSyncDatabase, createBaseLogger } from '@powersync/web';
import { column, Schema, Table, PowerSyncDatabase, createConsoleLogger, LogLevels } from '@powersync/web';

createBaseLogger().useDefaults();
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

const customers = new Table({ name: column.text });

Expand All @@ -12,7 +12,8 @@ const openDatabase = async (encryptionKey) => {
PowerSync = new PowerSyncDatabase({
schema: AppSchema,
database: { dbFilename: 'example-encryption.db' },
encryptionKey: encryptionKey
encryptionKey: encryptionKey,
logger
});

await PowerSync.init();
Expand Down
7 changes: 4 additions & 3 deletions demos/example-vite/src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { PowerSyncDatabase, Schema, Table, column, createBaseLogger } from '@powersync/web';
import { PowerSyncDatabase, Schema, Table, column, createConsoleLogger, LogLevels } from '@powersync/web';

createBaseLogger().useDefaults();
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

/**
* A placeholder connector which doesn't do anything.
Expand All @@ -27,7 +27,8 @@ let PowerSync;
const openDatabase = async () => {
PowerSync = new PowerSyncDatabase({
schema: AppSchema,
database: { dbFilename: 'test.sqlite' }
database: { dbFilename: 'test.sqlite' },
logger
});

await PowerSync.init();
Expand Down
7 changes: 4 additions & 3 deletions demos/example-webpack/src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Schema, Table, PowerSyncDatabase, column, createBaseLogger } from '@powersync/web';
import { Schema, Table, PowerSyncDatabase, column, createConsoleLogger, LogLevels } from '@powersync/web';

createBaseLogger().useDefaults();
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

/**
* A placeholder connector which doesn't do anything.
Expand All @@ -27,7 +27,8 @@ let PowerSync;
const openDatabase = async () => {
PowerSync = new PowerSyncDatabase({
schema: AppSchema,
database: { dbFilename: 'test.sqlite' }
database: { dbFilename: 'test.sqlite' },
logger
});

await PowerSync.init();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ import { PowerSyncContext, usePowerSync as _usePowerSync } from '@powersync/reac
import { AppSchema } from '@/definitions/Schema';
import { SupabaseConnector } from '@/library/SupabaseConnector';
import { useSupabase } from './SupabaseProvider';
import { createBaseLogger, LogLevel } from '@powersync/web';
import { createConsoleLogger, LogLevels } from '@powersync/web';

const logger = createBaseLogger();
logger.useDefaults();
logger.setLevel(LogLevel.DEBUG);
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

export interface SystemProviderProps {
dbFilename: string;
Expand All @@ -27,15 +25,16 @@ const SystemProvider: React.FC<PropsWithChildren<SystemProviderProps>> = (props)
schema: AppSchema,
flags: {
disableSSRWarning: false
}
},
logger: logger
}).getInstance()
);

React.useEffect(() => {
powersync.init();

const l = connector.registerListener({
initialized: () => { },
initialized: () => {},
sessionStarted: async () => {
await powersync.connect(connector);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,63 +1,59 @@
import React from 'react';
import { createBaseLogger, LogLevel, PowerSyncDatabase, SyncClientImplementation } from '@powersync/react-native';
import { createConsoleLogger, LogLevels, PowerSyncDatabase, SyncClientImplementation } from '@powersync/react-native';
import { SupabaseConnector } from '@/supabase/SupabaseConnector';
import { AppSchema } from '@/powersync/AppSchema';
import { OPSqliteOpenFactory } from '@powersync/op-sqlite';

const logger = createBaseLogger();
logger.useDefaults();
logger.setLevel(LogLevel.DEBUG);
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

export class System {
connector: SupabaseConnector;
powersync: PowerSyncDatabase;

constructor() {
this.connector = new SupabaseConnector();

const opSqlite = new OPSqliteOpenFactory({
dbFilename: 'powersync.db'
});

this.powersync = new PowerSyncDatabase({
schema: AppSchema,
database: opSqlite,
logger: logger
});
}

async init() {
await this.connector.signInAnonymously();

await this.powersync.init();

await this.powersync.connect(this.connector, {
clientImplementation: SyncClientImplementation.RUST
});

this.powersync.registerListener({
statusChanged: (status) => {
const hasSynced = Boolean(status.lastSyncedAt);
const downloading = status.dataFlowStatus?.downloading || false;
const uploading = status.dataFlowStatus?.uploading || false;
console.log(
'[PowerSync] Status changed:',
hasSynced ? '✅ Synced' : '⏳ Not yet synced',
downloading ? '📥 Downloading' : '✅ Not downloading',
uploading ? '📤 Uploading' : '✅ Not uploading'
);
},
});
}

async disconnect() {
await this.powersync.disconnect();
}
connector: SupabaseConnector;
powersync: PowerSyncDatabase;

constructor() {
this.connector = new SupabaseConnector();

const opSqlite = new OPSqliteOpenFactory({
dbFilename: 'powersync.db'
});

this.powersync = new PowerSyncDatabase({
schema: AppSchema,
database: opSqlite,
logger: logger
});
}

async init() {
await this.connector.signInAnonymously();

await this.powersync.init();

await this.powersync.connect(this.connector, {
clientImplementation: SyncClientImplementation.RUST
});

this.powersync.registerListener({
statusChanged: (status) => {
const hasSynced = Boolean(status.lastSyncedAt);
const downloading = status.dataFlowStatus?.downloading || false;
const uploading = status.dataFlowStatus?.uploading || false;
console.log(
'[PowerSync] Status changed:',
hasSynced ? '✅ Synced' : '⏳ Not yet synced',
downloading ? '📥 Downloading' : '✅ Not downloading',
uploading ? '📤 Uploading' : '✅ Not uploading'
);
}
});
}

async disconnect() {
await this.powersync.disconnect();
}
}

export const system = new System();

export const SystemContext = React.createContext(system);
export const useSystem = () => React.useContext(SystemContext);


Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import '@azure/core-asynciterator-polyfill';
import { createBaseLogger, PowerSyncContext, PowerSyncDatabase } from '@powersync/react-native';
import { createConsoleLogger, LogLevels, PowerSyncContext, PowerSyncDatabase } from '@powersync/react-native';
import { ReactNode, useEffect, useMemo } from 'react';

import { useAuth } from './AuthProvider';
import { Connector } from '@/library/connector';
import { AppSchema } from '@/library/schema';

createBaseLogger().useDefaults();
const logger = createConsoleLogger({ minLevel: LogLevels.debug });

const connector = new Connector();

Expand All @@ -16,7 +16,9 @@ export const PowerSyncProvider = ({ children }: { children: ReactNode }) => {
const powerSync = useMemo(() => {
const powerSync = new PowerSyncDatabase({
schema: AppSchema,
database: { dbFilename: 'test.sqlite' }
database: { dbFilename: 'test.sqlite' },

logger: logger
});
powerSync.init();
return powerSync;
Expand Down
Loading
Loading