@powersync/service-module-mongodb-storage 0.0.0-dev-20250715085057 → 0.0.0-dev-20250715131920
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.
- package/CHANGELOG.md +4 -4
- package/dist/storage/MongoReportStorage.d.ts +12 -0
- package/dist/storage/MongoReportStorage.js +21 -0
- package/dist/storage/MongoReportStorage.js.map +1 -0
- package/dist/storage/implementation/MongoStorageProvider.js +7 -3
- package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
- package/dist/storage/implementation/db.d.ts +2 -1
- package/dist/storage/implementation/db.js +2 -0
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +8 -0
- package/package.json +5 -5
- package/src/storage/MongoReportStorage.ts +28 -0
- package/src/storage/implementation/MongoStorageProvider.ts +8 -3
- package/src/storage/implementation/db.ts +3 -0
- package/src/storage/implementation/models.ts +9 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb-storage
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20250715131920
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
- Updated dependencies [71cf892]
|
|
9
9
|
- Updated dependencies [ba1ceef]
|
|
10
10
|
- Updated dependencies [f1431b6]
|
|
11
|
-
- @powersync/lib-service-mongodb@0.0.0-dev-
|
|
12
|
-
- @powersync/service-core@0.0.0-dev-
|
|
13
|
-
- @powersync/service-types@0.0.0-dev-
|
|
11
|
+
- @powersync/lib-service-mongodb@0.0.0-dev-20250715131920
|
|
12
|
+
- @powersync/service-core@0.0.0-dev-20250715131920
|
|
13
|
+
- @powersync/service-types@0.0.0-dev-20250715131920
|
|
14
14
|
|
|
15
15
|
## 0.10.3
|
|
16
16
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { storage } from '@powersync/service-core';
|
|
2
|
+
import { event_types } from '@powersync/service-types';
|
|
3
|
+
import { PowerSyncMongo } from './implementation/db.js';
|
|
4
|
+
export declare class MongoReportStorage implements storage.ReportStorageFactory {
|
|
5
|
+
private readonly client;
|
|
6
|
+
readonly db: PowerSyncMongo;
|
|
7
|
+
constructor(db: PowerSyncMongo);
|
|
8
|
+
reportSdkConnect(data: event_types.SdkConnectEventData): Promise<void>;
|
|
9
|
+
reportSdkDisconnect(data: event_types.SdkDisconnectEventData): Promise<void>;
|
|
10
|
+
listCurrentConnections(data: event_types.CurrentConnectionsData): Promise<void>;
|
|
11
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class MongoReportStorage {
|
|
2
|
+
client;
|
|
3
|
+
db;
|
|
4
|
+
constructor(db) {
|
|
5
|
+
this.client = db.client;
|
|
6
|
+
this.db = db;
|
|
7
|
+
}
|
|
8
|
+
async reportSdkConnect(data) {
|
|
9
|
+
console.log('MongoReportStorage.reportSdkConnect', data);
|
|
10
|
+
}
|
|
11
|
+
async reportSdkDisconnect(data) {
|
|
12
|
+
console.log('MongoReportStorage.reportSdkDisconnect', data);
|
|
13
|
+
}
|
|
14
|
+
async listCurrentConnections(data) {
|
|
15
|
+
console.log('MongoReportStorage.listCurrentConnections', data);
|
|
16
|
+
}
|
|
17
|
+
async [Symbol.asyncDispose]() {
|
|
18
|
+
// No-op
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=MongoReportStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAoB;IAC3B,EAAE,CAAiB;IAEnC,YAAY,EAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAqC;QAC1D,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,IAAwC;QAChE,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,IAAwC;QACnE,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,QAAQ;IACV,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ import { POWERSYNC_VERSION } from '@powersync/service-core';
|
|
|
4
4
|
import { MongoStorageConfig } from '../../types/types.js';
|
|
5
5
|
import { MongoBucketStorage } from '../MongoBucketStorage.js';
|
|
6
6
|
import { PowerSyncMongo } from './db.js';
|
|
7
|
+
import { MongoReportStorage } from '../MongoReportStorage.js';
|
|
7
8
|
export class MongoStorageProvider {
|
|
8
9
|
get type() {
|
|
9
10
|
return lib_mongo.MONGO_CONNECTION_TYPE;
|
|
@@ -28,15 +29,18 @@ export class MongoStorageProvider {
|
|
|
28
29
|
// Errors here will cause the process to exit.
|
|
29
30
|
await client.connect();
|
|
30
31
|
const database = new PowerSyncMongo(client, { database: resolvedConfig.storage.database });
|
|
31
|
-
const
|
|
32
|
+
const syncStorageFactory = new MongoBucketStorage(database, {
|
|
32
33
|
// TODO currently need the entire resolved config due to this
|
|
33
34
|
slot_name_prefix: resolvedConfig.slot_name_prefix
|
|
34
35
|
});
|
|
36
|
+
// TODO: CREATE REPORT STORAGE FACTORY
|
|
37
|
+
const reportStorageFactory = new MongoReportStorage(database);
|
|
35
38
|
return {
|
|
36
|
-
storage:
|
|
39
|
+
storage: syncStorageFactory,
|
|
40
|
+
reportStorage: reportStorageFactory,
|
|
37
41
|
shutDown: async () => {
|
|
38
42
|
shuttingDown = true;
|
|
39
|
-
await
|
|
43
|
+
await syncStorageFactory[Symbol.asyncDispose]();
|
|
40
44
|
await client.close();
|
|
41
45
|
},
|
|
42
46
|
tearDown: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC3G,OAAO,EAAE,iBAAiB,EAAW,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoStorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
2
2
|
import { mongo } from '@powersync/lib-service-mongodb';
|
|
3
3
|
import { MongoStorageConfig } from '../../types/types.js';
|
|
4
|
-
import { BucketDataDocument, BucketParameterDocument, BucketStateDocument, CheckpointEventDocument, CurrentDataDocument, CustomWriteCheckpointDocument, IdSequenceDocument, InstanceDocument, SourceTableDocument, SyncRuleDocument, WriteCheckpointDocument } from './models.js';
|
|
4
|
+
import { BucketDataDocument, BucketParameterDocument, BucketStateDocument, CheckpointEventDocument, CurrentDataDocument, CustomWriteCheckpointDocument, IdSequenceDocument, InstanceDocument, SdkConnectEventDocument, SourceTableDocument, SyncRuleDocument, WriteCheckpointDocument } from './models.js';
|
|
5
5
|
export interface PowerSyncMongoOptions {
|
|
6
6
|
/**
|
|
7
7
|
* Optional - uses the database from the MongoClient connection URI if not specified.
|
|
@@ -21,6 +21,7 @@ export declare class PowerSyncMongo {
|
|
|
21
21
|
readonly locks: mongo.Collection<lib_mongo.locks.Lock>;
|
|
22
22
|
readonly bucket_state: mongo.Collection<BucketStateDocument>;
|
|
23
23
|
readonly checkpoint_events: mongo.Collection<CheckpointEventDocument>;
|
|
24
|
+
readonly sdk_connect_events: mongo.Collection<SdkConnectEventDocument>;
|
|
24
25
|
readonly client: mongo.MongoClient;
|
|
25
26
|
readonly db: mongo.Db;
|
|
26
27
|
constructor(client: mongo.MongoClient, options?: PowerSyncMongoOptions);
|
|
@@ -13,6 +13,7 @@ export class PowerSyncMongo {
|
|
|
13
13
|
locks;
|
|
14
14
|
bucket_state;
|
|
15
15
|
checkpoint_events;
|
|
16
|
+
sdk_connect_events;
|
|
16
17
|
client;
|
|
17
18
|
db;
|
|
18
19
|
constructor(client, options) {
|
|
@@ -33,6 +34,7 @@ export class PowerSyncMongo {
|
|
|
33
34
|
this.locks = this.db.collection('locks');
|
|
34
35
|
this.bucket_state = this.db.collection('bucket_state');
|
|
35
36
|
this.checkpoint_events = this.db.collection('checkpoint_events');
|
|
37
|
+
this.sdk_connect_events = this.db.collection('sdk_connect_events');
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Clear all collections.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/storage/implementation/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/storage/implementation/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -183,3 +183,11 @@ export interface WriteCheckpointDocument {
|
|
|
183
183
|
export interface InstanceDocument {
|
|
184
184
|
_id: string;
|
|
185
185
|
}
|
|
186
|
+
export interface SdkConnectEventDocument {
|
|
187
|
+
version: string;
|
|
188
|
+
sdk: string;
|
|
189
|
+
user_agent: string;
|
|
190
|
+
client_id: string;
|
|
191
|
+
user_id: string;
|
|
192
|
+
jwt_exp: number;
|
|
193
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-mongodb-storage",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
|
-
"version": "0.0.0-dev-
|
|
5
|
+
"version": "0.0.0-dev-20250715131920",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"license": "FSL-1.1-Apache-2.0",
|
|
8
8
|
"type": "module",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"lru-cache": "^10.2.2",
|
|
28
28
|
"ts-codec": "^1.3.0",
|
|
29
29
|
"uuid": "^11.1.0",
|
|
30
|
-
"@powersync/lib-service-mongodb": "0.0.0-dev-
|
|
30
|
+
"@powersync/lib-service-mongodb": "0.0.0-dev-20250715131920",
|
|
31
31
|
"@powersync/lib-services-framework": "0.7.0",
|
|
32
|
-
"@powersync/service-core": "0.0.0-dev-
|
|
33
|
-
"@powersync/service-types": "0.0.0-dev-
|
|
32
|
+
"@powersync/service-core": "0.0.0-dev-20250715131920",
|
|
33
|
+
"@powersync/service-types": "0.0.0-dev-20250715131920",
|
|
34
34
|
"@powersync/service-jsonbig": "0.17.10",
|
|
35
35
|
"@powersync/service-sync-rules": "0.27.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
38
|
+
"@powersync/service-core-tests": "0.0.0-dev-20250715131920"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { storage } from '@powersync/service-core';
|
|
3
|
+
import { event_types } from '@powersync/service-types';
|
|
4
|
+
import { PowerSyncMongo } from './implementation/db.js';
|
|
5
|
+
|
|
6
|
+
export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
7
|
+
private readonly client: mongo.MongoClient;
|
|
8
|
+
public readonly db: PowerSyncMongo;
|
|
9
|
+
|
|
10
|
+
constructor(db: PowerSyncMongo) {
|
|
11
|
+
this.client = db.client;
|
|
12
|
+
this.db = db;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async reportSdkConnect(data: event_types.SdkConnectEventData): Promise<void> {
|
|
16
|
+
console.log('MongoReportStorage.reportSdkConnect', data);
|
|
17
|
+
}
|
|
18
|
+
async reportSdkDisconnect(data: event_types.SdkDisconnectEventData): Promise<void> {
|
|
19
|
+
console.log('MongoReportStorage.reportSdkDisconnect', data);
|
|
20
|
+
}
|
|
21
|
+
async listCurrentConnections(data: event_types.CurrentConnectionsData): Promise<void> {
|
|
22
|
+
console.log('MongoReportStorage.listCurrentConnections', data);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async [Symbol.asyncDispose]() {
|
|
26
|
+
// No-op
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -4,6 +4,7 @@ import { POWERSYNC_VERSION, storage } from '@powersync/service-core';
|
|
|
4
4
|
import { MongoStorageConfig } from '../../types/types.js';
|
|
5
5
|
import { MongoBucketStorage } from '../MongoBucketStorage.js';
|
|
6
6
|
import { PowerSyncMongo } from './db.js';
|
|
7
|
+
import { MongoReportStorage } from '../MongoReportStorage.js';
|
|
7
8
|
|
|
8
9
|
export class MongoStorageProvider implements storage.BucketStorageProvider {
|
|
9
10
|
get type() {
|
|
@@ -37,15 +38,19 @@ export class MongoStorageProvider implements storage.BucketStorageProvider {
|
|
|
37
38
|
await client.connect();
|
|
38
39
|
|
|
39
40
|
const database = new PowerSyncMongo(client, { database: resolvedConfig.storage.database });
|
|
40
|
-
const
|
|
41
|
+
const syncStorageFactory = new MongoBucketStorage(database, {
|
|
41
42
|
// TODO currently need the entire resolved config due to this
|
|
42
43
|
slot_name_prefix: resolvedConfig.slot_name_prefix
|
|
43
44
|
});
|
|
45
|
+
|
|
46
|
+
// TODO: CREATE REPORT STORAGE FACTORY
|
|
47
|
+
const reportStorageFactory = new MongoReportStorage(database);
|
|
44
48
|
return {
|
|
45
|
-
storage:
|
|
49
|
+
storage: syncStorageFactory,
|
|
50
|
+
reportStorage: reportStorageFactory,
|
|
46
51
|
shutDown: async () => {
|
|
47
52
|
shuttingDown = true;
|
|
48
|
-
await
|
|
53
|
+
await syncStorageFactory[Symbol.asyncDispose]();
|
|
49
54
|
await client.close();
|
|
50
55
|
},
|
|
51
56
|
tearDown: () => {
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
CustomWriteCheckpointDocument,
|
|
13
13
|
IdSequenceDocument,
|
|
14
14
|
InstanceDocument,
|
|
15
|
+
SdkConnectEventDocument,
|
|
15
16
|
SourceTableDocument,
|
|
16
17
|
SyncRuleDocument,
|
|
17
18
|
WriteCheckpointDocument
|
|
@@ -37,6 +38,7 @@ export class PowerSyncMongo {
|
|
|
37
38
|
readonly locks: mongo.Collection<lib_mongo.locks.Lock>;
|
|
38
39
|
readonly bucket_state: mongo.Collection<BucketStateDocument>;
|
|
39
40
|
readonly checkpoint_events: mongo.Collection<CheckpointEventDocument>;
|
|
41
|
+
readonly sdk_connect_events: mongo.Collection<SdkConnectEventDocument>;
|
|
40
42
|
|
|
41
43
|
readonly client: mongo.MongoClient;
|
|
42
44
|
readonly db: mongo.Db;
|
|
@@ -61,6 +63,7 @@ export class PowerSyncMongo {
|
|
|
61
63
|
this.locks = this.db.collection('locks');
|
|
62
64
|
this.bucket_state = this.db.collection('bucket_state');
|
|
63
65
|
this.checkpoint_events = this.db.collection('checkpoint_events');
|
|
66
|
+
this.sdk_connect_events = this.db.collection('sdk_connect_events');
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
/**
|
|
@@ -213,3 +213,12 @@ export interface InstanceDocument {
|
|
|
213
213
|
// The instance UUID
|
|
214
214
|
_id: string;
|
|
215
215
|
}
|
|
216
|
+
|
|
217
|
+
export interface SdkConnectEventDocument {
|
|
218
|
+
version: string;
|
|
219
|
+
sdk: string;
|
|
220
|
+
user_agent: string;
|
|
221
|
+
client_id: string;
|
|
222
|
+
user_id: string;
|
|
223
|
+
jwt_exp: number;
|
|
224
|
+
}
|