Skip to content

Commit 7b68aba

Browse files
add runtime validation of appMetadata
1 parent 3179e0f commit 7b68aba

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

demos/example-node/src/main.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,11 @@ const main = async () => {
5858
logger
5959
});
6060
console.log(await db.get('SELECT powersync_rs_version();'));
61-
6261
await db.connect(new DemoConnector(), {
6362
connectionMethod: SyncStreamConnectionMethod.WEB_SOCKET,
6463
clientImplementation: SyncClientImplementation.RUST,
6564
appMetadata: {
66-
package_version: process.env.npm_package_version || 'unknown'
65+
app_version: process.env.npm_package_version || 'unknown'
6766
}
6867
});
6968
// Example using a proxy agent for more control over the connection:

packages/common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,16 @@ The next upload iteration will be delayed.`);
664664
...DEFAULT_STREAM_CONNECTION_OPTIONS,
665665
...(options ?? {})
666666
};
667+
668+
// Validate app metadata
669+
const invalidMetadata = Object.entries(resolvedOptions.appMetadata).filter(
670+
([_, value]) => typeof value != 'string'
671+
);
672+
if (invalidMetadata.length > 0) {
673+
throw new Error(
674+
`Invalid appMetadata provided. Only string values are allowed. Invalid values: ${invalidMetadata.map(([key, value]) => `${key}: ${value}`).join(', ')}`
675+
);
676+
}
667677
const clientImplementation = resolvedOptions.clientImplementation;
668678
this.updateSyncStatus({ clientImplementation });
669679

0 commit comments

Comments
 (0)