@powersync/common 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,8 @@ import { fetch } from 'cross-fetch';
3
3
  import { PowerSyncCredentials } from '../../connection/PowerSyncCredentials';
4
4
  import { StreamingSyncLine, StreamingSyncRequest } from './streaming-sync-types';
5
5
  import { DataStream } from '../../../utils/DataStream';
6
+ import type { BSON } from 'bson';
7
+ export type BSONImplementation = typeof BSON;
6
8
  export type RemoteConnector = {
7
9
  fetchCredentials: () => Promise<PowerSyncCredentials | null>;
8
10
  };
@@ -47,6 +49,10 @@ export declare abstract class AbstractRemote {
47
49
  post(path: string, data: any, headers?: Record<string, string>): Promise<any>;
48
50
  get(path: string, headers?: Record<string, string>): Promise<any>;
49
51
  postStreaming(path: string, data: any, headers?: Record<string, string>, signal?: AbortSignal): Promise<any>;
52
+ /**
53
+ * Provides a BSON implementation. The import nature of this varies depending on the platform
54
+ */
55
+ abstract getBSON(): Promise<BSONImplementation>;
50
56
  /**
51
57
  * Connects to the sync/stream websocket endpoint
52
58
  */
@@ -4,7 +4,6 @@ import { DataStream } from '../../../utils/DataStream';
4
4
  import ndjsonStream from 'can-ndjson-stream';
5
5
  import { RSocketConnector } from 'rsocket-core';
6
6
  import { WebsocketClientTransport } from 'rsocket-websocket-client';
7
- import { serialize, deserialize } from 'bson';
8
7
  import { AbortOperation } from '../../../utils/AbortOperation';
9
8
  import { Buffer } from 'buffer';
10
9
  // Refresh at least 30 sec before it expires
@@ -120,6 +119,7 @@ export class AbstractRemote {
120
119
  async socketStream(options) {
121
120
  const { path } = options;
122
121
  const request = await this.buildRequest(path);
122
+ const bson = await this.getBSON();
123
123
  const connector = new RSocketConnector({
124
124
  transport: new WebsocketClientTransport({
125
125
  url: this.options.socketUrlTransformer(request.url)
@@ -131,7 +131,7 @@ export class AbstractRemote {
131
131
  metadataMimeType: 'application/bson',
132
132
  payload: {
133
133
  data: null,
134
- metadata: Buffer.from(serialize({
134
+ metadata: Buffer.from(bson.serialize({
135
135
  token: request.headers.Authorization
136
136
  }))
137
137
  }
@@ -167,8 +167,8 @@ export class AbstractRemote {
167
167
  const socket = await new Promise((resolve, reject) => {
168
168
  let connectionEstablished = false;
169
169
  const res = rsocket.requestStream({
170
- data: Buffer.from(serialize(options.data)),
171
- metadata: Buffer.from(serialize({
170
+ data: Buffer.from(bson.serialize(options.data)),
171
+ metadata: Buffer.from(bson.serialize({
172
172
  path
173
173
  }))
174
174
  }, SYNC_QUEUE_REQUEST_N, // The initial N amount
@@ -199,7 +199,7 @@ export class AbstractRemote {
199
199
  if (!data) {
200
200
  return;
201
201
  }
202
- const deserializedData = deserialize(data);
202
+ const deserializedData = bson.deserialize(data);
203
203
  stream.enqueueData(deserializedData);
204
204
  },
205
205
  onComplete: () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/common",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -23,7 +23,6 @@
23
23
  "homepage": "https://docs.powersync.com/resources/api-reference",
24
24
  "dependencies": {
25
25
  "async-mutex": "^0.4.0",
26
- "bson": "^6.6.0",
27
26
  "buffer": "^6.0.3",
28
27
  "can-ndjson-stream": "^1.0.2",
29
28
  "cross-fetch": "^4.0.0",
@@ -38,7 +37,8 @@
38
37
  "@types/node": "^20.5.9",
39
38
  "@types/uuid": "^9.0.1",
40
39
  "typescript": "^5.1.3",
41
- "vitest": "^1.5.2"
40
+ "vitest": "^1.5.2",
41
+ "bson": "^6.6.0"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b",