@powersync/service-module-mongodb-storage 0.0.0-dev-20250721093954 → 0.0.0-dev-20250721104257

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @powersync/service-module-mongodb-storage
2
2
 
3
- ## 0.0.0-dev-20250721093954
3
+ ## 0.0.0-dev-20250721104257
4
4
 
5
5
  ### Patch Changes
6
6
 
@@ -8,10 +8,10 @@
8
8
  - a700ec9: Reporting mongo storage added to storage engine.
9
9
  - Updated dependencies [f1d187b]
10
10
  - Updated dependencies [a700ec9]
11
- - @powersync/service-core@0.0.0-dev-20250721093954
12
- - @powersync/service-types@0.0.0-dev-20250721093954
13
- - @powersync/lib-services-framework@0.0.0-dev-20250721093954
14
- - @powersync/lib-service-mongodb@0.0.0-dev-20250721093954
11
+ - @powersync/service-core@0.0.0-dev-20250721104257
12
+ - @powersync/service-types@0.0.0-dev-20250721104257
13
+ - @powersync/lib-services-framework@0.0.0-dev-20250721104257
14
+ - @powersync/lib-service-mongodb@0.0.0-dev-20250721104257
15
15
 
16
16
  ## 0.10.4
17
17
 
@@ -7,7 +7,7 @@ export declare class MongoReportStorage implements storage.ReportStorageFactory
7
7
  private readonly client;
8
8
  readonly db: PowerSyncMongo;
9
9
  constructor(db: PowerSyncMongo);
10
- scrapeSdkData(data: event_types.InstanceRequest): Promise<void>;
10
+ scrapeSdkData(data: event_types.InstanceRequest): Promise<ListCurrentConnectionsResponse>;
11
11
  reportSdkConnect(data: SdkConnectDocument): Promise<void>;
12
12
  reportSdkDisconnect(data: SdkConnectDocument): Promise<void>;
13
13
  listCurrentConnections(data: event_types.InstanceRequest): Promise<ListCurrentConnectionsResponse>;
@@ -6,7 +6,31 @@ export class MongoReportStorage {
6
6
  this.db = db;
7
7
  }
8
8
  async scrapeSdkData(data) {
9
- console.log('MongoReportStorage.scrapeSdkData', data);
9
+ const result = await this.db.sdk_report_events
10
+ .aggregate([
11
+ {
12
+ $group: {
13
+ _id: null,
14
+ user_ids: { $addToSet: '$user_id' },
15
+ client_ids: { $addToSet: '$client_id' },
16
+ sdks: { $addToSet: '$sdk' }
17
+ }
18
+ },
19
+ {
20
+ $project: {
21
+ _id: 0,
22
+ users: '$user_ids',
23
+ clients: '$client_ids',
24
+ sdks: '$sdks'
25
+ }
26
+ }
27
+ ])
28
+ .toArray();
29
+ return {
30
+ app_id: data.app_id,
31
+ org_id: data.org_id,
32
+ ...result[0]
33
+ };
10
34
  }
11
35
  async reportSdkConnect(data) {
12
36
  await this.db.sdk_report_events.findOneAndUpdate({ user_id: data.user_id, client_id: data.client_id }, {
@@ -19,14 +43,31 @@ export class MongoReportStorage {
19
43
  await this.db.sdk_report_events.findOneAndDelete({ user_id: data.user_id, client_id: data.client_id });
20
44
  }
21
45
  async listCurrentConnections(data) {
22
- return this.db.sdk_report_events.aggregate([
46
+ const result = await this.db.sdk_report_events
47
+ .aggregate([
23
48
  {
24
49
  $group: {
25
- user_id: '$user_id',
26
- client_id: '$client_id'
50
+ _id: null,
51
+ user_ids: { $addToSet: '$user_id' },
52
+ client_ids: { $addToSet: '$client_id' },
53
+ sdks: { $addToSet: '$sdk' }
54
+ }
55
+ },
56
+ {
57
+ $project: {
58
+ _id: 0,
59
+ users: '$user_ids',
60
+ clients: '$client_ids',
61
+ sdks: '$sdks'
27
62
  }
28
63
  }
29
- ]);
64
+ ])
65
+ .toArray();
66
+ return {
67
+ app_id: data.app_id,
68
+ org_id: data.org_id,
69
+ ...result[0]
70
+ };
30
71
  }
31
72
  async [Symbol.asyncDispose]() {
32
73
  // No-op
@@ -1 +1 @@
1
- {"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"AAOA,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,aAAa,CAAC,IAAiC;QACnD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAwB;QAC7C,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAC9C,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACpD;YACE,IAAI,EAAE,IAAI;SACX,EACD;YACE,MAAM,EAAE,IAAI;SACb,CACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,IAAwB;QAChD,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,IAAiC;QAC5D,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACzC;gBACE,MAAM,EAAE;oBACN,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,YAAY;iBACxB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,QAAQ;IACV,CAAC;CACF"}
1
+ {"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"AAOA,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,aAAa,CAAC,IAAiC;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB;aAC3C,SAAS,CAAyB;YACjC;gBACE,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;oBACT,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;oBACnC,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;oBACvC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;iBAC5B;aACF;YACD;gBACE,QAAQ,EAAE;oBACR,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,OAAO;iBACd;aACF;SACF,CAAC;aACD,OAAO,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,MAAM,CAAC,CAAC,CAAC;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAwB;QAC7C,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAC9C,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACpD;YACE,IAAI,EAAE,IAAI;SACX,EACD;YACE,MAAM,EAAE,IAAI;SACb,CACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,IAAwB;QAChD,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,IAAiC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB;aAC3C,SAAS,CAAyB;YACjC;gBACE,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;oBACT,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;oBACnC,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;oBACvC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;iBAC5B;aACF;YACD;gBACE,QAAQ,EAAE;oBACR,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,OAAO;iBACd;aACF;SACF,CAAC;aACD,OAAO,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,MAAM,CAAC,CAAC,CAAC;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,QAAQ;IACV,CAAC;CACF"}
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-20250721093954",
5
+ "version": "0.0.0-dev-20250721104257",
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-20250721093954",
31
- "@powersync/lib-services-framework": "0.0.0-dev-20250721093954",
32
- "@powersync/service-core": "0.0.0-dev-20250721093954",
33
- "@powersync/service-types": "0.0.0-dev-20250721093954",
30
+ "@powersync/lib-service-mongodb": "0.0.0-dev-20250721104257",
31
+ "@powersync/lib-services-framework": "0.0.0-dev-20250721104257",
32
+ "@powersync/service-core": "0.0.0-dev-20250721104257",
33
+ "@powersync/service-types": "0.0.0-dev-20250721104257",
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-20250721093954"
38
+ "@powersync/service-core-tests": "0.0.0-dev-20250721104257"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsc -b",
@@ -3,7 +3,7 @@ import { storage } from '@powersync/service-core';
3
3
  import { event_types } from '@powersync/service-types';
4
4
  import { PowerSyncMongo } from './implementation/db.js';
5
5
  import { SdkConnectDocument } from './implementation/models.js';
6
- import { ListCurrentConnectionsResponse } from '@powersync/service-types/dist/events.js';
6
+ import { ListCurrentConnections, ListCurrentConnectionsResponse } from '@powersync/service-types/dist/events.js';
7
7
 
8
8
  export class MongoReportStorage implements storage.ReportStorageFactory {
9
9
  private readonly client: mongo.MongoClient;
@@ -14,8 +14,32 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
14
14
  this.db = db;
15
15
  }
16
16
 
17
- async scrapeSdkData(data: event_types.InstanceRequest): Promise<void> {
18
- console.log('MongoReportStorage.scrapeSdkData', data);
17
+ async scrapeSdkData(data: event_types.InstanceRequest): Promise<ListCurrentConnectionsResponse> {
18
+ const result = await this.db.sdk_report_events
19
+ .aggregate<ListCurrentConnections>([
20
+ {
21
+ $group: {
22
+ _id: null,
23
+ user_ids: { $addToSet: '$user_id' },
24
+ client_ids: { $addToSet: '$client_id' },
25
+ sdks: { $addToSet: '$sdk' }
26
+ }
27
+ },
28
+ {
29
+ $project: {
30
+ _id: 0,
31
+ users: '$user_ids',
32
+ clients: '$client_ids',
33
+ sdks: '$sdks'
34
+ }
35
+ }
36
+ ])
37
+ .toArray();
38
+ return {
39
+ app_id: data.app_id,
40
+ org_id: data.org_id,
41
+ ...result[0]
42
+ };
19
43
  }
20
44
 
21
45
  async reportSdkConnect(data: SdkConnectDocument): Promise<void> {
@@ -33,14 +57,31 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
33
57
  await this.db.sdk_report_events.findOneAndDelete({ user_id: data.user_id, client_id: data.client_id });
34
58
  }
35
59
  async listCurrentConnections(data: event_types.InstanceRequest): Promise<ListCurrentConnectionsResponse> {
36
- return this.db.sdk_report_events.aggregate([
37
- {
38
- $group: {
39
- user_id: '$user_id',
40
- client_id: '$client_id'
60
+ const result = await this.db.sdk_report_events
61
+ .aggregate<ListCurrentConnections>([
62
+ {
63
+ $group: {
64
+ _id: null,
65
+ user_ids: { $addToSet: '$user_id' },
66
+ client_ids: { $addToSet: '$client_id' },
67
+ sdks: { $addToSet: '$sdk' }
68
+ }
69
+ },
70
+ {
71
+ $project: {
72
+ _id: 0,
73
+ users: '$user_ids',
74
+ clients: '$client_ids',
75
+ sdks: '$sdks'
76
+ }
41
77
  }
42
- }
43
- ]);
78
+ ])
79
+ .toArray();
80
+ return {
81
+ app_id: data.app_id,
82
+ org_id: data.org_id,
83
+ ...result[0]
84
+ };
44
85
  }
45
86
 
46
87
  async [Symbol.asyncDispose]() {