@powersync/service-module-mongodb-storage 0.0.0-dev-20250804065653 → 0.0.0-dev-20250804094552

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,11 +1,12 @@
1
1
  # @powersync/service-module-mongodb-storage
2
2
 
3
- ## 0.0.0-dev-20250804065653
3
+ ## 0.0.0-dev-20250804094552
4
4
 
5
5
  ### Minor Changes
6
6
 
7
7
  - d56eeb9: Delay switching over to new sync rules until we have a consistent checkpoint.
8
8
  - d4db4e2: MySQL:
9
+
9
10
  - Added schema change handling
10
11
  - Except for some edge cases, the following schema changes are now handled automatically:
11
12
  - Creation, renaming, dropping and truncation of tables.
@@ -29,11 +30,11 @@
29
30
  - Updated dependencies [d56eeb9]
30
31
  - Updated dependencies [a700ec9]
31
32
  - Updated dependencies [d4db4e2]
32
- - @powersync/service-core@0.0.0-dev-20250804065653
33
- - @powersync/service-types@0.0.0-dev-20250804065653
34
- - @powersync/lib-services-framework@0.0.0-dev-20250804065653
35
- - @powersync/service-sync-rules@0.0.0-dev-20250804065653
36
- - @powersync/lib-service-mongodb@0.0.0-dev-20250804065653
33
+ - @powersync/service-core@0.0.0-dev-20250804094552
34
+ - @powersync/service-types@0.0.0-dev-20250804094552
35
+ - @powersync/lib-services-framework@0.0.0-dev-20250804094552
36
+ - @powersync/service-sync-rules@0.0.0-dev-20250804094552
37
+ - @powersync/lib-service-mongodb@0.0.0-dev-20250804094552
37
38
 
38
39
  ## 0.10.4
39
40
 
@@ -48,6 +48,11 @@ export class MongoReportStorage {
48
48
  users: { $size: '$user_ids' },
49
49
  clients: { $size: '$client_ids' }
50
50
  }
51
+ },
52
+ {
53
+ $sort: {
54
+ sdk: 1
55
+ }
51
56
  }
52
57
  ]
53
58
  }
@@ -183,8 +188,12 @@ export class MongoReportStorage {
183
188
  });
184
189
  }
185
190
  async reportSdkDisconnect(data) {
186
- const updateFilter = this.updateDocFilter(data.user_id, data.client_id);
187
- await this.db.sdk_report_events.findOneAndUpdate(updateFilter, {
191
+ const { connect_at, user_id, client_id } = data;
192
+ await this.db.sdk_report_events.findOneAndUpdate({
193
+ client_id,
194
+ user_id,
195
+ connect_at
196
+ }, {
188
197
  $set: {
189
198
  disconnect_at: data.disconnect_at
190
199
  },
@@ -1 +1 @@
1
- {"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"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"}
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-20250804065653",
5
+ "version": "0.0.0-dev-20250804094552",
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-20250804065653",
31
- "@powersync/lib-services-framework": "0.0.0-dev-20250804065653",
32
- "@powersync/service-core": "0.0.0-dev-20250804065653",
33
- "@powersync/service-types": "0.0.0-dev-20250804065653",
30
+ "@powersync/lib-service-mongodb": "0.0.0-dev-20250804094552",
31
+ "@powersync/lib-services-framework": "0.0.0-dev-20250804094552",
32
+ "@powersync/service-core": "0.0.0-dev-20250804094552",
33
+ "@powersync/service-types": "0.0.0-dev-20250804094552",
34
34
  "@powersync/service-jsonbig": "0.17.10",
35
- "@powersync/service-sync-rules": "0.0.0-dev-20250804065653"
35
+ "@powersync/service-sync-rules": "0.0.0-dev-20250804094552"
36
36
  },
37
37
  "devDependencies": {
38
- "@powersync/service-core-tests": "0.0.0-dev-20250804065653"
38
+ "@powersync/service-core-tests": "0.0.0-dev-20250804094552"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsc -b",
@@ -56,6 +56,11 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
56
56
  users: { $size: '$user_ids' },
57
57
  clients: { $size: '$client_ids' }
58
58
  }
59
+ },
60
+ {
61
+ $sort: {
62
+ sdk: 1
63
+ }
59
64
  }
60
65
  ]
61
66
  }
@@ -205,15 +210,22 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
205
210
  );
206
211
  }
207
212
  async reportSdkDisconnect(data: event_types.SdkDisconnectEventData): Promise<void> {
208
- const updateFilter = this.updateDocFilter(data.user_id, data.client_id!);
209
- await this.db.sdk_report_events.findOneAndUpdate(updateFilter, {
210
- $set: {
211
- disconnect_at: data.disconnect_at
213
+ const { connect_at, user_id, client_id } = data;
214
+ await this.db.sdk_report_events.findOneAndUpdate(
215
+ {
216
+ client_id,
217
+ user_id,
218
+ connect_at
212
219
  },
213
- $unset: {
214
- jwt_exp: ''
220
+ {
221
+ $set: {
222
+ disconnect_at: data.disconnect_at
223
+ },
224
+ $unset: {
225
+ jwt_exp: ''
226
+ }
215
227
  }
216
- });
228
+ );
217
229
  }
218
230
  async listCurrentConnections(
219
231
  data: event_types.ListCurrentConnectionsRequest
@@ -0,0 +1,188 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`SDK reporting storage > Should create a sdk event if its after a day 1`] = `
4
+ [
5
+ {
6
+ "client_id": "client_week",
7
+ "sdk": "powersync-js/1.24.5",
8
+ "user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
9
+ "user_id": "user_week",
10
+ },
11
+ {
12
+ "client_id": "client_week",
13
+ "sdk": "powersync-js/1.24.5",
14
+ "user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
15
+ "user_id": "user_week",
16
+ },
17
+ ]
18
+ `;
19
+
20
+ exports[`SDK reporting storage > Should delete rows older than specified range 1`] = `
21
+ {
22
+ "sdks": [
23
+ {
24
+ "clients": 1,
25
+ "sdk": "powersync-dart/1.6.4",
26
+ "users": 1,
27
+ },
28
+ {
29
+ "clients": 1,
30
+ "sdk": "powersync-js/1.21.1",
31
+ "users": 1,
32
+ },
33
+ {
34
+ "clients": 1,
35
+ "sdk": "powersync-js/1.21.2",
36
+ "users": 1,
37
+ },
38
+ {
39
+ "clients": 1,
40
+ "sdk": "powersync-js/1.21.4",
41
+ "users": 1,
42
+ },
43
+ ],
44
+ "users": 4,
45
+ }
46
+ `;
47
+
48
+ exports[`SDK reporting storage > Should show SDK scrape data for user over the past day 1`] = `
49
+ {
50
+ "sdks": [
51
+ {
52
+ "clients": 1,
53
+ "sdk": "powersync-dart/1.6.4",
54
+ "users": 1,
55
+ },
56
+ {
57
+ "clients": 1,
58
+ "sdk": "powersync-js/1.21.1",
59
+ "users": 1,
60
+ },
61
+ {
62
+ "clients": 1,
63
+ "sdk": "powersync-js/1.21.4",
64
+ "users": 1,
65
+ },
66
+ ],
67
+ "users": 3,
68
+ }
69
+ `;
70
+
71
+ exports[`SDK reporting storage > Should show SDK scrape data for user over the past month 1`] = `
72
+ {
73
+ "sdks": [
74
+ {
75
+ "clients": 1,
76
+ "sdk": "powersync-dart/1.6.4",
77
+ "users": 1,
78
+ },
79
+ {
80
+ "clients": 1,
81
+ "sdk": "powersync-js/1.21.1",
82
+ "users": 1,
83
+ },
84
+ {
85
+ "clients": 1,
86
+ "sdk": "powersync-js/1.21.2",
87
+ "users": 1,
88
+ },
89
+ {
90
+ "clients": 1,
91
+ "sdk": "powersync-js/1.21.4",
92
+ "users": 1,
93
+ },
94
+ {
95
+ "clients": 1,
96
+ "sdk": "powersync-js/1.23.6",
97
+ "users": 1,
98
+ },
99
+ {
100
+ "clients": 1,
101
+ "sdk": "powersync-js/1.23.7",
102
+ "users": 1,
103
+ },
104
+ {
105
+ "clients": 1,
106
+ "sdk": "powersync-js/1.24.5",
107
+ "users": 1,
108
+ },
109
+ ],
110
+ "users": 7,
111
+ }
112
+ `;
113
+
114
+ exports[`SDK reporting storage > Should show SDK scrape data for user over the past week 1`] = `
115
+ {
116
+ "sdks": [
117
+ {
118
+ "clients": 1,
119
+ "sdk": "powersync-dart/1.6.4",
120
+ "users": 1,
121
+ },
122
+ {
123
+ "clients": 1,
124
+ "sdk": "powersync-js/1.21.1",
125
+ "users": 1,
126
+ },
127
+ {
128
+ "clients": 1,
129
+ "sdk": "powersync-js/1.21.2",
130
+ "users": 1,
131
+ },
132
+ {
133
+ "clients": 1,
134
+ "sdk": "powersync-js/1.21.4",
135
+ "users": 1,
136
+ },
137
+ ],
138
+ "users": 4,
139
+ }
140
+ `;
141
+
142
+ exports[`SDK reporting storage > Should show connected users with start range 1`] = `
143
+ {
144
+ "sdks": [
145
+ {
146
+ "clients": 1,
147
+ "sdk": "powersync-dart/1.6.4",
148
+ "users": 1,
149
+ },
150
+ ],
151
+ "users": 1,
152
+ }
153
+ `;
154
+
155
+ exports[`SDK reporting storage > Should show connected users with start range and end range 1`] = `
156
+ {
157
+ "sdks": [
158
+ {
159
+ "clients": 1,
160
+ "sdk": "powersync-js/1.21.1",
161
+ "users": 1,
162
+ },
163
+ ],
164
+ "users": 1,
165
+ }
166
+ `;
167
+
168
+ exports[`SDK reporting storage > Should update a connected sdk event and make it disconnected 1`] = `
169
+ [
170
+ {
171
+ "client_id": "client_three",
172
+ "sdk": "powersync-js/1.21.2",
173
+ "user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
174
+ "user_id": "user_three",
175
+ },
176
+ ]
177
+ `;
178
+
179
+ exports[`SDK reporting storage > Should update a sdk event if its within a day 1`] = `
180
+ [
181
+ {
182
+ "client_id": "client_one",
183
+ "sdk": "powersync-dart/1.6.4",
184
+ "user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
185
+ "user_id": "user_one",
186
+ },
187
+ ]
188
+ `;
@@ -2,9 +2,11 @@ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
2
2
  import { INITIALIZED_MONGO_REPORT_STORAGE_FACTORY } from './util.js';
3
3
  import { event_types } from '@powersync/service-types';
4
4
 
5
- function removeVolatileFields(sdks: event_types.SdkConnectDocument[]): Partial<event_types.SdkConnectDocument>[] {
6
- return sdks.map((sdk) => {
7
- const { id, disconnect_at, connect_at, jwt_exp, ...rest } = sdk;
5
+ function removeVolatileFields(
6
+ sdks: event_types.SdkConnectDocument[]
7
+ ): Partial<event_types.SdkConnectDocument & { _id: string }>[] {
8
+ return sdks.map((sdk: Partial<event_types.SdkConnectDocument & { _id: string }>) => {
9
+ const { _id, disconnect_at, connect_at, jwt_exp, ...rest } = sdk;
8
10
  return {
9
11
  ...rest
10
12
  };
@@ -188,7 +190,7 @@ describe('SDK reporting storage', async () => {
188
190
  expect(sdk).toHaveLength(1);
189
191
  expect(new Date(sdk[0].connect_at)).toEqual(newConnectAt);
190
192
  expect(new Date(sdk[0].jwt_exp!)).toEqual(jwtExp);
191
- expect(sdk[0].disconnect_at).toBeNull();
193
+ expect(sdk[0].disconnect_at).toBeUndefined();
192
194
  const cleaned = removeVolatileFields(sdk);
193
195
  expect(cleaned).toMatchSnapshot();
194
196
  });
@@ -206,12 +208,13 @@ describe('SDK reporting storage', async () => {
206
208
  await factory.reportSdkDisconnect({
207
209
  disconnect_at: disconnectAt,
208
210
  jwt_exp: jwtExp,
209
- client_id: user_one.client_id,
210
- user_id: user_one.user_id,
211
- user_agent: user_one.user_agent
211
+ client_id: user_three.client_id,
212
+ user_id: user_three.user_id,
213
+ user_agent: user_three.user_agent,
214
+ connect_at: user_three.connect_at
212
215
  });
213
216
 
214
- const sdk = await factory.db.sdk_report_events.find({ user_id: user_one.user_id }).toArray();
217
+ const sdk = await factory.db.sdk_report_events.find({ user_id: user_three.user_id }).toArray();
215
218
  expect(sdk).toHaveLength(1);
216
219
  expect(new Date(sdk[0].disconnect_at!)).toEqual(disconnectAt);
217
220
  const cleaned = removeVolatileFields(sdk);
@@ -231,7 +234,7 @@ describe('SDK reporting storage', async () => {
231
234
  user_agent: user_week.user_agent
232
235
  });
233
236
 
234
- const sdk = await factory.db.sdk_report_events.find({ user_id: user_one.user_id }).toArray();
237
+ const sdk = await factory.db.sdk_report_events.find({ user_id: user_week.user_id }).toArray();
235
238
  expect(sdk).toHaveLength(2);
236
239
  const cleaned = removeVolatileFields(sdk);
237
240
  expect(cleaned).toMatchSnapshot();