diff --git a/.changeset/eighty-rocks-begin.md b/.changeset/eighty-rocks-begin.md new file mode 100644 index 000000000..6e437f463 --- /dev/null +++ b/.changeset/eighty-rocks-begin.md @@ -0,0 +1,5 @@ +--- +'@powersync/web': minor +--- + +Prebundle js-logger depedency. diff --git a/.changeset/thin-birds-peel.md b/.changeset/thin-birds-peel.md new file mode 100644 index 000000000..975b94320 --- /dev/null +++ b/.changeset/thin-birds-peel.md @@ -0,0 +1,5 @@ +--- +'@powersync/common': minor +--- + +Added logger helpers, which can be used instead of `js-logger` depedency. diff --git a/demos/django-react-native-todolist/app/index.tsx b/demos/django-react-native-todolist/app/index.tsx index 15fd1332d..7e5bbdf54 100644 --- a/demos/django-react-native-todolist/app/index.tsx +++ b/demos/django-react-native-todolist/app/index.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { ActivityIndicator, View } from 'react-native'; import { router } from 'expo-router'; -import Logger from 'js-logger'; +import { createBaseLogger, LogLevels } from '@powersync/react-native'; /** * This is the entry point when the app loads. * Checks for a Supabase session. @@ -10,8 +10,9 @@ import Logger from 'js-logger'; */ const App = () => { React.useEffect(() => { - Logger.useDefaults(); - Logger.setLevel(Logger.DEBUG); + const defaultLogger = createBaseLogger(); + defaultLogger.useDefaults(); + defaultLogger.setLevel(LogLevels.DEBUG); setImmediate(() => router.replace('signin')); }, []); diff --git a/demos/django-react-native-todolist/package.json b/demos/django-react-native-todolist/package.json index c19771487..9b1b6b700 100644 --- a/demos/django-react-native-todolist/package.json +++ b/demos/django-react-native-todolist/package.json @@ -28,7 +28,6 @@ "expo-router": "4.0.20", "expo-splash-screen": "~0.29.22", "expo-status-bar": "~2.0.1", - "js-logger": "^1.6.1", "lodash": "^4.17.21", "react": "18.3.1", "react-native": "0.76.9", diff --git a/demos/example-capacitor/package.json b/demos/example-capacitor/package.json index 689831a66..b9609d0e9 100644 --- a/demos/example-capacitor/package.json +++ b/demos/example-capacitor/package.json @@ -26,7 +26,6 @@ "@journeyapps/wa-sqlite": "^1.2.0", "@powersync/react": "workspace:*", "@powersync/web": "workspace:*", - "js-logger": "^1.6.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.23.0" diff --git a/demos/example-capacitor/src/components/providers/SystemProvider.tsx b/demos/example-capacitor/src/components/providers/SystemProvider.tsx index 8db8d5638..9e27e2f5c 100644 --- a/demos/example-capacitor/src/components/providers/SystemProvider.tsx +++ b/demos/example-capacitor/src/components/providers/SystemProvider.tsx @@ -1,14 +1,14 @@ import { PowerSyncContext } from '@powersync/react'; -import { PowerSyncDatabase } from '@powersync/web'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/web'; import { CircularProgress } from '@mui/material'; -import Logger from 'js-logger'; import React, { Suspense } from 'react'; import { AppSchema } from '../../library/powersync/AppSchema.js'; import { BackendConnector } from '../../library/powersync/BackendConnector.js'; import { Capacitor } from '@capacitor/core'; -Logger.useDefaults(); -Logger.setLevel(Logger.DEBUG); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); const platform = Capacitor.getPlatform(); const isIOs = platform === 'ios'; diff --git a/demos/example-capacitor/vite.config.ts b/demos/example-capacitor/vite.config.ts index 5ff1782e4..e36be6a57 100644 --- a/demos/example-capacitor/vite.config.ts +++ b/demos/example-capacitor/vite.config.ts @@ -19,7 +19,6 @@ export default defineConfig({ // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], include: [] - // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. }, plugins: [wasm(), topLevelAwait()], worker: { diff --git a/demos/example-electron-node/src/main/index.ts b/demos/example-electron-node/src/main/index.ts index 89361ef6b..86082273d 100644 --- a/demos/example-electron-node/src/main/index.ts +++ b/demos/example-electron-node/src/main/index.ts @@ -1,12 +1,19 @@ import { Worker } from 'node:worker_threads'; -import { PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/node'; +import { + createBaseLogger, + createLogger, + LogLevels, + PowerSyncDatabase, + SyncStreamConnectionMethod +} from '@powersync/node'; import { app, BrowserWindow, ipcMain, MessagePortMain } from 'electron'; import { AppSchema, BackendConnector } from './powersync'; -import { default as Logger } from 'js-logger'; -const logger = Logger.get('PowerSyncDemo'); -Logger.useDefaults({ defaultLevel: logger.WARN }); +const baseLogger = createBaseLogger(); +baseLogger.useDefaults(); +baseLogger.setLevel(LogLevels.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 @@ -58,7 +65,7 @@ app.whenReady().then(() => { const unregister = database.registerListener({ statusChanged(status) { port.postMessage(status.toJSON()); - }, + } }); port.once('close', unregister); }; @@ -67,14 +74,19 @@ app.whenReady().then(() => { const abort = new AbortController(); port.once('close', () => abort.abort()); - database.watchWithCallback(sql, args, { - onResult(results) { - port.postMessage(results.rows._array); - }, - onError(error) { - console.error(`Watch ${sql} with ${args} failed`, error); + database.watchWithCallback( + sql, + args, + { + onResult(results) { + port.postMessage(results.rows._array); + }, + onError(error) { + console.error(`Watch ${sql} with ${args} failed`, error); + } }, - }, {signal: abort.signal}); + { signal: abort.signal } + ); }; ipcMain.on('port', (portEvent) => { @@ -82,16 +94,16 @@ app.whenReady().then(() => { port.start(); port.on('message', (event) => { - const {method, payload} = event.data; + const { method, payload } = event.data; switch (method) { case 'syncStatus': forwardSyncStatus(port); break; case 'watch': - const {sql, args} = payload; + const { sql, args } = payload; forwardWatchResults(sql, args, port); break; - }; + } }); }); diff --git a/demos/example-electron/package.json b/demos/example-electron/package.json index 852348a9e..917a20283 100644 --- a/demos/example-electron/package.json +++ b/demos/example-electron/package.json @@ -29,7 +29,6 @@ "@powersync/react": "workspace:*", "@powersync/web": "workspace:*", "electron-squirrel-startup": "^1.0.0", - "js-logger": "^1.6.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.23.0" diff --git a/demos/example-electron/src/components/providers/SystemProvider.tsx b/demos/example-electron/src/components/providers/SystemProvider.tsx index 0399d6fb3..b71a92b3c 100644 --- a/demos/example-electron/src/components/providers/SystemProvider.tsx +++ b/demos/example-electron/src/components/providers/SystemProvider.tsx @@ -1,13 +1,13 @@ import { PowerSyncContext } from '@powersync/react'; -import { PowerSyncDatabase } from '@powersync/web'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/web'; import { CircularProgress } from '@mui/material'; -import Logger from 'js-logger'; import React, { Suspense } from 'react'; import { AppSchema } from '../../library/powersync/AppSchema.js'; import { BackendConnector } from '../../library/powersync/BackendConnector.js'; -Logger.useDefaults(); -Logger.setLevel(Logger.DEBUG); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); const powerSync = new PowerSyncDatabase({ database: { dbFilename: 'powersync2.db' }, diff --git a/demos/example-electron/vite.renderer.config.ts b/demos/example-electron/vite.renderer.config.ts index 4f4a7d731..42e01d4ce 100644 --- a/demos/example-electron/vite.renderer.config.ts +++ b/demos/example-electron/vite.renderer.config.ts @@ -25,8 +25,7 @@ export default defineConfig((env) => { // Don't optimize these packages as they contain web workers and WASM files. // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], - include: [], - // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. + include: [] }, plugins: [ // @ts-expect-error there is TS issue that doesn't actually affect the runtime diff --git a/demos/example-nextjs/package.json b/demos/example-nextjs/package.json index 73f05b3b1..9fc5f61c3 100644 --- a/demos/example-nextjs/package.json +++ b/demos/example-nextjs/package.json @@ -20,7 +20,6 @@ "@mui/material": "^5.15.18", "@powersync/react": "workspace:*", "@powersync/web": "workspace:*", - "js-logger": "^1.6.1", "lato-font": "^3.0.0", "lexical": "^0.15.0", "next": "14.2.3", diff --git a/demos/example-nextjs/src/components/providers/SystemProvider.tsx b/demos/example-nextjs/src/components/providers/SystemProvider.tsx index 21ed328e8..4445bad29 100644 --- a/demos/example-nextjs/src/components/providers/SystemProvider.tsx +++ b/demos/example-nextjs/src/components/providers/SystemProvider.tsx @@ -3,14 +3,13 @@ import { AppSchema } from '@/library/powersync/AppSchema'; import { BackendConnector } from '@/library/powersync/BackendConnector'; import { PowerSyncContext } from '@powersync/react'; -import { PowerSyncDatabase } from '@powersync/web'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/web'; import { CircularProgress } from '@mui/material'; -import Logger from 'js-logger'; import React, { Suspense } from 'react'; -// eslint-disable-next-line react-hooks/rules-of-hooks -Logger.useDefaults(); -Logger.setLevel(Logger.DEBUG); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); const powerSync = new PowerSyncDatabase({ database: { dbFilename: 'powersync2.db' }, diff --git a/demos/example-node/src/main.ts b/demos/example-node/src/main.ts index 6dc6e777f..79abfd3f7 100644 --- a/demos/example-node/src/main.ts +++ b/demos/example-node/src/main.ts @@ -1,14 +1,14 @@ import repl_factory from 'node:repl'; import { once } from 'node:events'; -import { PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/node'; -import { default as Logger } from 'js-logger'; +import { createBaseLogger, LogLevels, PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/node'; import { AppSchema, DemoConnector } from './powersync.js'; import { exit } from 'node:process'; const main = async () => { - const logger = Logger.get('PowerSyncDemo'); - Logger.useDefaults({ defaultLevel: logger.WARN }); + const baseLogger = createBaseLogger(); + baseLogger.useDefaults({ defaultLevel: LogLevels.WARN }); + const logger = baseLogger.get('PowerSyncDemo'); if (!('BACKEND' in process.env) || !('SYNC_SERVICE' in process.env)) { console.warn( diff --git a/demos/example-vite-encryption/src/index.js b/demos/example-vite-encryption/src/index.js index 1a78af525..84294f606 100644 --- a/demos/example-vite-encryption/src/index.js +++ b/demos/example-vite-encryption/src/index.js @@ -1,7 +1,8 @@ -import { column, Schema, Table, PowerSyncDatabase } from '@powersync/web'; -import Logger from 'js-logger'; +import { column, Schema, Table, PowerSyncDatabase, createBaseLogger, LogLevels } from '@powersync/web'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); const customers = new Table({ name: column.text }); diff --git a/demos/example-vite/src/index.js b/demos/example-vite/src/index.js index c2e8924cf..721c427aa 100644 --- a/demos/example-vite/src/index.js +++ b/demos/example-vite/src/index.js @@ -1,7 +1,8 @@ -import { column, Schema, Table, PowerSyncDatabase } from '@powersync/web'; -import Logger from 'js-logger'; +import { column, Schema, Table, PowerSyncDatabase, createBaseLogger, LogLevels } from '@powersync/web'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); /** * A placeholder connector which doesn't do anything. @@ -19,7 +20,7 @@ class DummyConnector { async uploadData(database) {} } -const customers = new Table({ name: column.text }) +const customers = new Table({ name: column.text }); export const AppSchema = new Schema({ customers }); diff --git a/demos/example-webpack/src/index.js b/demos/example-webpack/src/index.js index bc4e0c93d..8b8f86f2a 100644 --- a/demos/example-webpack/src/index.js +++ b/demos/example-webpack/src/index.js @@ -1,7 +1,8 @@ -import { Schema, Table, PowerSyncDatabase, column } from '@powersync/web'; -import Logger from 'js-logger'; +import { Schema, Table, PowerSyncDatabase, column, createBaseLogger, LogLevels } from '@powersync/web'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); /** * A placeholder connector which doesn't do anything. @@ -19,7 +20,7 @@ class DummyConnector { async uploadData(database) {} } -const customers = new Table({ name: column.text }) +const customers = new Table({ name: column.text }); export const AppSchema = new Schema({ customers }); diff --git a/demos/react-multi-client/package.json b/demos/react-multi-client/package.json index ce789cf73..b5f093ed9 100644 --- a/demos/react-multi-client/package.json +++ b/demos/react-multi-client/package.json @@ -18,7 +18,6 @@ "@webflow/webflow-cli": "^1.6.9", "async-mutex": "^0.5.0", "autoprefixer": "10.4.14", - "js-logger": "^1.6.1", "lodash": "^4.17.21", "postcss": "8.4.27", "react": "^18.2.0", diff --git a/demos/react-multi-client/src/components/providers/SystemProvider.tsx b/demos/react-multi-client/src/components/providers/SystemProvider.tsx index 21f2f244f..8a82cfae2 100644 --- a/demos/react-multi-client/src/components/providers/SystemProvider.tsx +++ b/demos/react-multi-client/src/components/providers/SystemProvider.tsx @@ -6,10 +6,11 @@ import { PowerSyncContext, usePowerSync as _usePowerSync } from '@powersync/reac import { AppSchema } from '@/definitions/Schema'; import { SupabaseConnector } from '@/library/SupabaseConnector'; import { useSupabase } from './SupabaseProvider'; -import Logger from 'js-logger'; +import { createBaseLogger, LogLevels } from '@powersync/web'; -Logger.useDefaults(); -Logger.setLevel(Logger.DEBUG); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); export interface SystemProviderProps { dbFilename: string; @@ -34,7 +35,7 @@ const SystemProvider: React.FC> = (props) powersync.init(); const l = connector.registerListener({ - initialized: () => {}, + initialized: () => { }, sessionStarted: async () => { await powersync.connect(connector); } diff --git a/demos/react-multi-client/vite.config.mts b/demos/react-multi-client/vite.config.mts index 797616c11..ab0b7d202 100644 --- a/demos/react-multi-client/vite.config.mts +++ b/demos/react-multi-client/vite.config.mts @@ -26,7 +26,6 @@ export default defineConfig({ // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], include: [] - // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. }, plugins: [ wasm(), diff --git a/demos/react-native-supabase-group-chat/src/providers/PowerSync.tsx b/demos/react-native-supabase-group-chat/src/providers/PowerSync.tsx index 67370ddbb..23136b604 100644 --- a/demos/react-native-supabase-group-chat/src/providers/PowerSync.tsx +++ b/demos/react-native-supabase-group-chat/src/providers/PowerSync.tsx @@ -1,13 +1,14 @@ import '@azure/core-asynciterator-polyfill'; -import { PowerSyncContext, PowerSyncDatabase } from '@powersync/react-native'; -import Logger from 'js-logger'; +import { createBaseLogger, LogLevels, PowerSyncContext, PowerSyncDatabase } from '@powersync/react-native'; import { ReactNode, useEffect, useMemo } from 'react'; import { useAuth } from './AuthProvider'; import { Connector } from '../lib/connector'; import { schema } from '../lib/schema'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); const connector = new Connector(); diff --git a/demos/react-native-supabase-todolist/app/index.tsx b/demos/react-native-supabase-todolist/app/index.tsx index 7624da014..f494a58e5 100644 --- a/demos/react-native-supabase-todolist/app/index.tsx +++ b/demos/react-native-supabase-todolist/app/index.tsx @@ -3,14 +3,15 @@ import { ActivityIndicator, View } from 'react-native'; import { useSystem } from '../library/powersync/system'; import { router } from 'expo-router'; -import Logger from 'js-logger'; import { ThemeProvider, createTheme } from '@rneui/themed'; +import { createBaseLogger, LogLevels } from '@powersync/react-native'; const theme = createTheme({ mode: 'light' }); + /** * This is the entry point when the app loads. * Checks for a Supabase session. @@ -21,8 +22,10 @@ const App: React.FC = () => { const { supabaseConnector } = useSystem(); React.useEffect(() => { - Logger.useDefaults(); - Logger.setLevel(Logger.DEBUG); + const defaultLogger = createBaseLogger(); + defaultLogger.useDefaults(); + defaultLogger.setLevel(LogLevels.DEBUG); + supabaseConnector.client.auth .getSession() .then(({ data }) => { diff --git a/demos/react-native-supabase-todolist/library/powersync/system.ts b/demos/react-native-supabase-todolist/library/powersync/system.ts index d95650c4b..64852452e 100644 --- a/demos/react-native-supabase-todolist/library/powersync/system.ts +++ b/demos/react-native-supabase-todolist/library/powersync/system.ts @@ -1,11 +1,10 @@ import '@azure/core-asynciterator-polyfill'; -import { PowerSyncDatabase } from '@powersync/react-native'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/react-native'; import React from 'react'; import { SupabaseStorageAdapter } from '../storage/SupabaseStorageAdapter'; import { type AttachmentRecord } from '@powersync/attachments'; -import Logger from 'js-logger'; import { KVStorage } from '../storage/KVStorage'; import { AppConfig } from '../supabase/AppConfig'; import { SupabaseConnector } from '../supabase/SupabaseConnector'; @@ -13,7 +12,9 @@ import { AppSchema } from './AppSchema'; import { PhotoAttachmentQueue } from './PhotoAttachmentQueue'; import { configureFts } from '../fts/fts_setup'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); export class System { kvStorage: KVStorage; diff --git a/demos/react-native-supabase-todolist/package.json b/demos/react-native-supabase-todolist/package.json index bc65d6130..7c43cc820 100644 --- a/demos/react-native-supabase-todolist/package.json +++ b/demos/react-native-supabase-todolist/package.json @@ -33,7 +33,6 @@ "expo-secure-store": "~14.0.1", "expo-splash-screen": "~0.29.22", "expo-status-bar": "~2.0.1", - "js-logger": "^1.6.1", "lodash": "^4.17.21", "react": "18.3.1", "react-native": "0.76.9", diff --git a/demos/react-native-web-supabase-todolist/app/index.tsx b/demos/react-native-web-supabase-todolist/app/index.tsx index 3f7b7d22b..53557bf75 100644 --- a/demos/react-native-web-supabase-todolist/app/index.tsx +++ b/demos/react-native-web-supabase-todolist/app/index.tsx @@ -3,7 +3,6 @@ import { ActivityIndicator, View } from 'react-native'; import { useSystem } from '../library/powersync/system'; import { router } from 'expo-router'; -import Logger from 'js-logger'; /** * This is the entry point when the app loads. @@ -13,10 +12,8 @@ import Logger from 'js-logger'; */ const App: React.FC = () => { const { supabaseConnector } = useSystem(); - React.useEffect(() => { - Logger.useDefaults(); - Logger.setLevel(Logger.DEBUG); + supabaseConnector.client.auth .getSession() .then(({ data }) => { diff --git a/demos/react-native-web-supabase-todolist/library/powersync/system.ts b/demos/react-native-web-supabase-todolist/library/powersync/system.ts index 7d31323f3..6c9f26810 100644 --- a/demos/react-native-web-supabase-todolist/library/powersync/system.ts +++ b/demos/react-native-web-supabase-todolist/library/powersync/system.ts @@ -3,17 +3,18 @@ import '@azure/core-asynciterator-polyfill'; import React from 'react'; import { PowerSyncDatabase as PowerSyncDatabaseNative } from '@powersync/react-native'; import { PowerSyncDatabase as PowerSyncDatabaseWeb, WASQLiteOpenFactory } from '@powersync/web'; -import { AbstractPowerSyncDatabase } from '@powersync/common'; +import { AbstractPowerSyncDatabase, createBaseLogger, LogLevels } from '@powersync/common'; import { SupabaseStorageAdapter } from '../storage/SupabaseStorageAdapter'; import { type AttachmentRecord } from '@powersync/attachments'; -import Logger from 'js-logger'; import { KVStorage } from '../storage/KVStorage'; import { AppConfig } from '../supabase/AppConfig'; import { SupabaseConnector } from '../supabase/SupabaseConnector'; import { AppSchema } from './AppSchema'; import { PhotoAttachmentQueue } from './PhotoAttachmentQueue'; -Logger.useDefaults(); +const defaultLogger = createBaseLogger(); +defaultLogger.useDefaults(); +defaultLogger.setLevel(LogLevels.DEBUG); export class System { kvStorage: KVStorage; diff --git a/demos/react-supabase-todolist-optional-sync/package.json b/demos/react-supabase-todolist-optional-sync/package.json index cf1e04f27..441157828 100644 --- a/demos/react-supabase-todolist-optional-sync/package.json +++ b/demos/react-supabase-todolist-optional-sync/package.json @@ -19,7 +19,6 @@ "@mui/x-data-grid": "^6.19.6", "@supabase/supabase-js": "^2.39.7", "formik": "^2.4.6", - "js-logger": "^1.6.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/demos/react-supabase-todolist-optional-sync/src/components/providers/SystemProvider.tsx b/demos/react-supabase-todolist-optional-sync/src/components/providers/SystemProvider.tsx index b5b4381d2..596de8c43 100644 --- a/demos/react-supabase-todolist-optional-sync/src/components/providers/SystemProvider.tsx +++ b/demos/react-supabase-todolist-optional-sync/src/components/providers/SystemProvider.tsx @@ -1,9 +1,8 @@ -import { AppSchema, makeSchema, switchToSyncedSchema } from '@/library/powersync/AppSchema'; +import { makeSchema, switchToSyncedSchema } from '@/library/powersync/AppSchema'; import { SupabaseConnector } from '@/library/powersync/SupabaseConnector'; import { CircularProgress } from '@mui/material'; import { PowerSyncContext } from '@powersync/react'; -import { PowerSyncDatabase } from '@powersync/web'; -import Logger from 'js-logger'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/web'; import React, { Suspense } from 'react'; import { NavigationPanelContextProvider } from '../navigation/NavigationPanelContext'; import { getSyncEnabled } from '@/library/powersync/SyncMode'; @@ -26,15 +25,16 @@ export const SystemProvider = ({ children }: { children: React.ReactNode }) => { const [powerSync] = React.useState(db); React.useEffect(() => { - // Linting thinks this is a hook due to it's name - Logger.useDefaults(); // eslint-disable-line - Logger.setLevel(Logger.DEBUG); + const defaultLogger = createBaseLogger(); + defaultLogger.useDefaults(); + defaultLogger.setLevel(LogLevels.DEBUG); + // For console testing purposes (window as any)._powersync = powerSync; powerSync.init(); const l = connector.registerListener({ - initialized: () => {}, + initialized: () => { }, sessionStarted: async () => { var isSyncMode = getSyncEnabled(dbName); diff --git a/demos/react-supabase-todolist-optional-sync/vite.config.mts b/demos/react-supabase-todolist-optional-sync/vite.config.mts index 543956b6e..ab0b7d202 100644 --- a/demos/react-supabase-todolist-optional-sync/vite.config.mts +++ b/demos/react-supabase-todolist-optional-sync/vite.config.mts @@ -25,8 +25,7 @@ export default defineConfig({ // Don't optimize these packages as they contain web workers and WASM files. // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], - include: [], - // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. + include: [] }, plugins: [ wasm(), diff --git a/demos/react-supabase-todolist/package.json b/demos/react-supabase-todolist/package.json index 8104be01d..62feb516e 100644 --- a/demos/react-supabase-todolist/package.json +++ b/demos/react-supabase-todolist/package.json @@ -19,7 +19,6 @@ "@mui/x-data-grid": "^6.19.6", "@supabase/supabase-js": "^2.39.7", "formik": "^2.4.6", - "js-logger": "^1.6.1", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/demos/react-supabase-todolist/src/components/providers/SystemProvider.tsx b/demos/react-supabase-todolist/src/components/providers/SystemProvider.tsx index 07b597e15..bc696a63d 100644 --- a/demos/react-supabase-todolist/src/components/providers/SystemProvider.tsx +++ b/demos/react-supabase-todolist/src/components/providers/SystemProvider.tsx @@ -3,18 +3,21 @@ import { AppSchema } from '@/library/powersync/AppSchema'; import { SupabaseConnector } from '@/library/powersync/SupabaseConnector'; import { CircularProgress } from '@mui/material'; import { PowerSyncContext } from '@powersync/react'; -import { PowerSyncDatabase } from '@powersync/web'; -import Logger from 'js-logger'; +import { createBaseLogger, LogLevels, PowerSyncDatabase } from '@powersync/web'; import React, { Suspense } from 'react'; import { NavigationPanelContextProvider } from '../navigation/NavigationPanelContext'; +const baseLogger = createBaseLogger(); +baseLogger.useDefaults(); +baseLogger.setLevel(LogLevels.DEBUG); + const SupabaseContext = React.createContext(null); export const useSupabase = () => React.useContext(SupabaseContext); export const db = new PowerSyncDatabase({ schema: AppSchema, database: { - dbFilename: 'example.db' + dbFilename: 'example1.db' } }); @@ -23,15 +26,13 @@ export const SystemProvider = ({ children }: { children: React.ReactNode }) => { const [powerSync] = React.useState(db); React.useEffect(() => { - // Linting thinks this is a hook due to it's name - Logger.useDefaults(); // eslint-disable-line - Logger.setLevel(Logger.DEBUG); + // For console testing purposes (window as any)._powersync = powerSync; powerSync.init(); const l = connector.registerListener({ - initialized: () => {}, + initialized: () => { }, sessionStarted: () => { powerSync.connect(connector); } diff --git a/demos/react-supabase-todolist/vite.config.mts b/demos/react-supabase-todolist/vite.config.mts index 797616c11..ab0b7d202 100644 --- a/demos/react-supabase-todolist/vite.config.mts +++ b/demos/react-supabase-todolist/vite.config.mts @@ -26,7 +26,6 @@ export default defineConfig({ // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], include: [] - // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. }, plugins: [ wasm(), diff --git a/demos/vue-supabase-todolist/package.json b/demos/vue-supabase-todolist/package.json index 2a85040a5..b0f70ee00 100644 --- a/demos/vue-supabase-todolist/package.json +++ b/demos/vue-supabase-todolist/package.json @@ -17,7 +17,6 @@ "@supabase/supabase-js": "^2.39.7", "@vuelidate/core": "^2.0.3", "@vuelidate/validators": "^2.0.4", - "js-logger": "^1.6.1", "vue": "^3.4.21", "vue-router": "4", "vuetify": "3.6.8" diff --git a/demos/vue-supabase-todolist/src/App.vue b/demos/vue-supabase-todolist/src/App.vue index ac3370a7e..e37aa8359 100644 --- a/demos/vue-supabase-todolist/src/App.vue +++ b/demos/vue-supabase-todolist/src/App.vue @@ -1,10 +1,11 @@