@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.
|
|
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",
|