Skip to content

Commit 124ac0a

Browse files
committed
Merge branch 'main' into feat/logging-cleanup
2 parents 189d4a0 + e71dc94 commit 124ac0a

25 files changed

+147
-61
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`.
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.

.changeset/moody-fans-knock.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@powersync/kysely-driver': minor
3+
---
4+
5+
Updated Kysely depedency to ^0.28.0. Introduces new features to the PowerSync Kysely wrapper. See https://github.com/kysely-org/kysely/releases/tag/0.28.0

demos/example-electron-node/config.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ const mainConfig: Configuration = {
8585
new CopyPlugin({
8686
patterns: [{
8787
from: path.resolve(require.resolve('@powersync/node/package.json'), `../lib/${extensionPath}`),
88-
to: extensionPath,
88+
to: path.join('powersync', extensionPath),
8989
}],
9090
}),
9191
new DefinePluginImpl({
@@ -95,7 +95,8 @@ const mainConfig: Configuration = {
9595
],
9696
resolve: {
9797
extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json']
98-
}
98+
},
99+
target: "electron-main",
99100
};
100101

101102
const rendererConfig: Configuration = {
@@ -116,7 +117,9 @@ const rendererConfig: Configuration = {
116117

117118
const config: ForgeConfig = {
118119
packagerConfig: {
119-
asar: true
120+
asar: {
121+
unpack: '**/{.**,**}/**/powersync/*'
122+
},
120123
},
121124
rebuildConfig: {
122125
force: true,

demos/example-electron-node/src/main/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import fs from 'node:fs';
12
import { Worker } from 'node:worker_threads';
23

34
import { PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/node';
@@ -19,10 +20,22 @@ if (require('electron-squirrel-startup')) {
1920
app.quit();
2021
}
2122

23+
const userDataDirectory = app.getPath('userData');
24+
try {
25+
if (!fs.existsSync(userDataDirectory)) {
26+
fs.mkdirSync(userDataDirectory);
27+
}
28+
} catch (e) {
29+
console.error('Could not create database directory', e);
30+
}
31+
32+
console.log('Storing data in ', userDataDirectory);
33+
2234
const database = new PowerSyncDatabase({
2335
schema: AppSchema,
2436
database: {
2537
dbFilename: 'test.db',
38+
dbLocation: userDataDirectory,
2639
openWorker(_, options) {
2740
return new Worker(new URL('./worker.ts', import.meta.url), options);
2841
}

demos/example-electron-node/src/main/worker.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ function resolvePowerSyncCoreExtension() {
1818

1919
// This example uses copy-webpack-plugin to copy the prebuilt library over. This ensures that it is
2020
// available in packaged release builds.
21-
return path.resolve(__dirname, extensionPath);
21+
let libraryPath = path.resolve(__dirname, 'powersync', extensionPath);
22+
23+
if (__dirname.indexOf('app.asar') != -1) {
24+
// Our build configuration ensures the extension is always available outside of the archive too.
25+
libraryPath = libraryPath.replace('app.asar', 'app.asar.unpacked');
26+
}
27+
28+
return libraryPath;
2229
}
2330

2431
startPowerSyncWorker({ extensionPath: resolvePowerSyncCoreExtension });

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';
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/kysely-driver/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@powersync/common": "workspace:^1.27.1"
3030
},
3131
"dependencies": {
32-
"kysely": "^0.27.4"
32+
"kysely": "^0.28.0"
3333
},
3434
"devDependencies": {
3535
"@powersync/web": "workspace:*",

0 commit comments

Comments
 (0)