Skip to content

Commit e71dc94

Browse files
authored
feat: Logger API/Helpers (#570)
1 parent d0d0c02 commit e71dc94

17 files changed

+97
-40
lines changed

.changeset/giant-moose-crash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@powersync/web': minor
3+
---
4+
5+
Removed `js-logger` dependency, using the logger helper exposed by `@powersync/common`.

.changeset/lemon-shrimps-pretend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@powersync/common': minor
3+
---
4+
5+
Added logger helpers, which can be used instead of the `js-logger` dependency.

packages/common/rollup.config.mjs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ export default (commandLineArgs) => {
3232
// This makes life easier
3333
external: [
3434
// This has dynamic logic - makes bundling hard
35-
'cross-fetch',
36-
// TODO: make the useDefaults logic better. Currently need access to this package directly
37-
'js-logger'
35+
'cross-fetch'
3836
]
3937
};
4038
};

packages/common/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export * from './db/DBAdapter.js';
3434
export * from './utils/AbortOperation.js';
3535
export * from './utils/BaseObserver.js';
3636
export * from './utils/DataStream.js';
37+
export * from './utils/Logger.js';
3738
export * from './utils/parseQuery.js';
3839

3940
export * from './types/types.js';

packages/common/src/utils/Logger.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import Logger, { type ILogger, type ILogLevel } from 'js-logger';
2+
3+
export { GlobalLogger, ILogger, ILoggerOpts, ILogHandler, ILogLevel } from 'js-logger';
4+
5+
const TypedLogger: ILogger = Logger as any;
6+
7+
export const LogLevel = {
8+
TRACE: TypedLogger.TRACE,
9+
DEBUG: TypedLogger.DEBUG,
10+
INFO: TypedLogger.INFO,
11+
TIME: TypedLogger.TIME,
12+
WARN: TypedLogger.WARN,
13+
ERROR: TypedLogger.ERROR,
14+
OFF: TypedLogger.OFF
15+
};
16+
17+
export interface CreateLoggerOptions {
18+
logLevel?: ILogLevel;
19+
}
20+
21+
/**
22+
* Retrieves the base (default) logger instance.
23+
*
24+
* This base logger controls the default logging configuration and is shared
25+
* across all loggers created with `createLogger`. Adjusting settings on this
26+
* base logger affects all loggers derived from it unless explicitly overridden.
27+
*
28+
*/
29+
export function createBaseLogger() {
30+
return Logger;
31+
}
32+
33+
/**
34+
* Creates and configures a new named logger based on the base logger.
35+
*
36+
* Named loggers allow specific modules or areas of your application to have
37+
* their own logging levels and behaviors. These loggers inherit configuration
38+
* from the base logger by default but can override settings independently.
39+
*/
40+
export function createLogger(name: string, options: CreateLoggerOptions = {}): ILogger {
41+
const logger = Logger.get(name);
42+
if (options.logLevel) {
43+
logger.setLevel(options.logLevel);
44+
}
45+
46+
return logger;
47+
}

packages/web/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@
6868
"async-mutex": "^0.4.0",
6969
"bson": "^6.6.0",
7070
"comlink": "^4.4.2",
71-
"commander": "^12.1.0",
72-
"js-logger": "^1.6.1"
71+
"commander": "^12.1.0"
7372
},
7473
"devDependencies": {
7574
"@journeyapps/wa-sqlite": "^1.2.2",

packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { DBAdapter, SQLOpenFactory } from '@powersync/common';
2-
import Logger, { ILogger } from 'js-logger';
1+
import { type ILogger, createLogger, DBAdapter, SQLOpenFactory } from '@powersync/common';
32
import { SSRDBAdapter } from './SSRDBAdapter';
43
import { ResolvedWebSQLFlags, WebSQLOpenFactoryOptions, isServerSide, resolveWebSQLFlags } from './web-sql-flags';
54

@@ -9,7 +8,7 @@ export abstract class AbstractWebSQLOpenFactory implements SQLOpenFactory {
98

109
constructor(protected options: WebSQLOpenFactoryOptions) {
1110
this.resolvedFlags = resolveWebSQLFlags(options.flags);
12-
this.logger = options.logger ?? Logger.get(`AbstractWebSQLOpenFactory - ${this.options.dbFilename}`);
11+
this.logger = options.logger ?? createLogger(`AbstractWebSQLOpenFactory - ${this.options.dbFilename}`);
1312
}
1413

1514
/**

packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import {
2+
type ILogger,
23
BaseObserver,
4+
createLogger,
35
DBAdapter,
46
DBAdapterListener,
57
DBGetUtils,
@@ -8,7 +10,6 @@ import {
810
QueryResult,
911
Transaction
1012
} from '@powersync/common';
11-
import Logger, { ILogger } from 'js-logger';
1213
import { getNavigatorLocks } from '../..//shared/navigator';
1314
import { AsyncDatabaseConnection } from './AsyncDatabaseConnection';
1415
import { SharedConnectionWorker, WebDBAdapter } from './WebDBAdapter';
@@ -50,7 +51,7 @@ export class LockedAsyncDatabaseAdapter
5051
constructor(protected options: LockedAsyncDatabaseAdapterOptions) {
5152
super();
5253
this._dbIdentifier = options.name;
53-
this.logger = options.logger ?? Logger.get(`LockedAsyncDatabaseAdapter - ${this._dbIdentifier}`);
54+
this.logger = options.logger ?? createLogger(`LockedAsyncDatabaseAdapter - ${this._dbIdentifier}`);
5455
// Set the name if provided. We can query for the name if not available yet
5556
this.debugMode = options.debugMode ?? false;
5657
if (this.debugMode) {

packages/web/src/db/adapters/web-sql-flags.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { SQLOpenOptions } from '@powersync/common';
2-
import { ILogger } from 'js-logger';
1+
import { type ILogger, SQLOpenOptions } from '@powersync/common';
32

43
/**
54
* Common settings used when creating SQL connections on web.

packages/web/src/db/sync/WebRemote.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { type ILogger } from 'js-logger';
2-
31
import {
42
AbstractRemote,
53
AbstractRemoteOptions,
64
BSONImplementation,
75
DEFAULT_REMOTE_LOGGER,
86
FetchImplementation,
97
FetchImplementationProvider,
8+
ILogger,
109
RemoteConnector
1110
} from '@powersync/common';
1211

0 commit comments

Comments
 (0)