@powersync/service-core-tests 0.0.0-dev-20251015143910 → 0.0.0-dev-20251110113516

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,15 +1,37 @@
1
1
  # @powersync/service-core-tests
2
2
 
3
- ## 0.0.0-dev-20251015143910
3
+ ## 0.0.0-dev-20251110113516
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - Updated dependencies [f1d187b]
8
- - Updated dependencies [0fad466]
9
- - Updated dependencies [a700ec9]
7
+ - 422ae99: General client connections analytics added
8
+ - Updated dependencies [422ae99]
9
+ - @powersync/service-core@0.0.0-dev-20251110113516
10
+
11
+ ## 0.12.9
12
+
13
+ ### Patch Changes
14
+
15
+ - 88982d9: Migrate to trusted publishing
16
+ - Updated dependencies [b4fa979]
17
+ - Updated dependencies [80fd68b]
18
+ - Updated dependencies [c2bd0b0]
19
+ - Updated dependencies [0268858]
20
+ - Updated dependencies [88982d9]
21
+ - @powersync/service-sync-rules@0.29.6
22
+ - @powersync/service-core@1.16.0
23
+ - @powersync/service-jsonbig@0.17.12
24
+
25
+ ## 0.12.8
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [a98cecb]
30
+ - Updated dependencies [da7ecc6]
31
+ - Updated dependencies [5328802]
10
32
  - Updated dependencies [704553e]
11
- - @powersync/service-core@0.0.0-dev-20251015143910
12
- - @powersync/service-sync-rules@0.0.0-dev-20251015143910
33
+ - @powersync/service-sync-rules@0.29.5
34
+ - @powersync/service-core@1.15.8
13
35
 
14
36
  ## 0.12.7
15
37
 
@@ -50,14 +50,14 @@ const user_four = {
50
50
  const user_old = {
51
51
  user_id: 'user_one',
52
52
  client_id: '',
53
- connected_at: now,
53
+ connected_at: nowLess5minutes,
54
54
  sdk: 'unknown',
55
55
  user_agent: 'Dart (flutter-web) Chrome/128 android',
56
56
  jwt_exp: nowAdd5minutes
57
57
  };
58
58
  const user_week = {
59
59
  user_id: 'user_week',
60
- client_id: 'client_week',
60
+ client_id: 'client_one',
61
61
  connected_at: weekAgo,
62
62
  sdk: 'powersync-js/1.24.5',
63
63
  user_agent: 'powersync-js/1.21.0 powersync-web Firefox/141 linux',
@@ -89,6 +89,14 @@ export const REPORT_TEST_USERS = {
89
89
  user_month,
90
90
  user_expired
91
91
  };
92
+ const removeVolatileFields = (connections) => {
93
+ return connections.map((sdk) => {
94
+ const { _id, disconnected_at, connected_at, jwt_exp, ...rest } = sdk;
95
+ return {
96
+ ...rest
97
+ };
98
+ });
99
+ };
92
100
  export async function registerReportTests(factory) {
93
101
  it('Should show currently connected users', async () => {
94
102
  const current = await factory.getConnectedClients();
@@ -115,5 +123,59 @@ export async function registerReportTests(factory) {
115
123
  });
116
124
  expect(sdk).toMatchSnapshot();
117
125
  });
126
+ it('Should show paginated response of all connections of specified client_id', async () => {
127
+ const connections = await factory.getClientConnections({
128
+ client_id: user_two.client_id
129
+ });
130
+ const cleaned = {
131
+ ...connections,
132
+ items: removeVolatileFields(connections.items)
133
+ };
134
+ expect(cleaned).toMatchSnapshot();
135
+ });
136
+ it('Should show paginated response of connections of specified user_id', async () => {
137
+ const connections = await factory.getClientConnections({
138
+ user_id: user_one.user_id
139
+ });
140
+ const cleaned = {
141
+ ...connections,
142
+ items: removeVolatileFields(connections.items)
143
+ };
144
+ expect(cleaned).toMatchSnapshot();
145
+ });
146
+ it('Should show paginated response of connections over a date range', async () => {
147
+ const connections = await factory.getClientConnections({
148
+ date_range: {
149
+ start: weekAgo,
150
+ end: now
151
+ }
152
+ });
153
+ const cleaned = {
154
+ ...connections,
155
+ items: removeVolatileFields(connections.items)
156
+ };
157
+ expect(cleaned).toMatchSnapshot();
158
+ });
159
+ it('Should show paginated response of all connections with a limit', async () => {
160
+ const initial = await factory.getClientConnections({
161
+ limit: 4
162
+ });
163
+ const cursor = initial.cursor;
164
+ expect(cursor).toBeDefined();
165
+ const cleanedInitial = {
166
+ ...initial,
167
+ cursor: '<removed-for-snapshot>',
168
+ items: removeVolatileFields(initial.items)
169
+ };
170
+ expect(cleanedInitial).toMatchSnapshot();
171
+ const connections = await factory.getClientConnections({
172
+ cursor
173
+ });
174
+ const cleaned = {
175
+ ...connections,
176
+ items: removeVolatileFields(initial.items)
177
+ };
178
+ expect(cleaned).toMatchSnapshot();
179
+ });
118
180
  }
119
181
  //# sourceMappingURL=register-report-tests.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-report-tests.js","sourceRoot":"","sources":["../../src/tests/register-report-tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-report-tests.js","sourceRoot":"","sources":["../../src/tests/register-report-tests.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,14 +5,14 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.0.0-dev-20251015143910",
8
+ "version": "0.0.0-dev-20251110113516",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-ALv2",
11
11
  "type": "module",
12
12
  "dependencies": {
13
- "@powersync/service-core": "^0.0.0-dev-20251015143910",
14
- "@powersync/service-jsonbig": "^0.17.11",
15
- "@powersync/service-sync-rules": "^0.0.0-dev-20251015143910"
13
+ "@powersync/service-core": "^0.0.0-dev-20251110113516",
14
+ "@powersync/service-jsonbig": "^0.17.12",
15
+ "@powersync/service-sync-rules": "^0.29.6"
16
16
  },
17
17
  "peerDependencies": {
18
18
  "vite-tsconfig-paths": "^5.1.4",
@@ -62,7 +62,7 @@ const user_four = {
62
62
  const user_old = {
63
63
  user_id: 'user_one',
64
64
  client_id: '',
65
- connected_at: now,
65
+ connected_at: nowLess5minutes,
66
66
  sdk: 'unknown',
67
67
  user_agent: 'Dart (flutter-web) Chrome/128 android',
68
68
  jwt_exp: nowAdd5minutes
@@ -70,7 +70,7 @@ const user_old = {
70
70
 
71
71
  const user_week = {
72
72
  user_id: 'user_week',
73
- client_id: 'client_week',
73
+ client_id: 'client_one',
74
74
  connected_at: weekAgo,
75
75
  sdk: 'powersync-js/1.24.5',
76
76
  user_agent: 'powersync-js/1.21.0 powersync-web Firefox/141 linux',
@@ -106,6 +106,16 @@ export const REPORT_TEST_USERS = {
106
106
  };
107
107
  export type ReportUserData = typeof REPORT_TEST_USERS;
108
108
 
109
+ type LocalConnection = Partial<typeof user_expired>;
110
+ const removeVolatileFields = <T>(connections: LocalConnection[]) => {
111
+ return connections.map((sdk: Partial<LocalConnection & { _id: string; disconnected_at?: Date }>) => {
112
+ const { _id, disconnected_at, connected_at, jwt_exp, ...rest } = sdk;
113
+ return {
114
+ ...rest
115
+ };
116
+ });
117
+ };
118
+
109
119
  export async function registerReportTests(factory: storage.ReportStorage) {
110
120
  it('Should show currently connected users', async () => {
111
121
  const current = await factory.getConnectedClients();
@@ -133,4 +143,67 @@ export async function registerReportTests(factory: storage.ReportStorage) {
133
143
  });
134
144
  expect(sdk).toMatchSnapshot();
135
145
  });
146
+
147
+ it('Should show paginated response of all connections of specified client_id', async () => {
148
+ const connections = await factory.getClientConnections({
149
+ client_id: user_two.client_id
150
+ });
151
+ const cleaned = {
152
+ ...connections,
153
+ items: removeVolatileFields(connections.items)
154
+ };
155
+ expect(cleaned).toMatchSnapshot();
156
+ });
157
+
158
+ it('Should show paginated response of connections of specified user_id', async () => {
159
+ const connections = await factory.getClientConnections({
160
+ user_id: user_one.user_id
161
+ });
162
+
163
+ const cleaned = {
164
+ ...connections,
165
+ items: removeVolatileFields(connections.items)
166
+ };
167
+ expect(cleaned).toMatchSnapshot();
168
+ });
169
+
170
+ it('Should show paginated response of connections over a date range', async () => {
171
+ const connections = await factory.getClientConnections({
172
+ date_range: {
173
+ start: weekAgo,
174
+ end: now
175
+ }
176
+ });
177
+
178
+ const cleaned = {
179
+ ...connections,
180
+ items: removeVolatileFields(connections.items)
181
+ };
182
+ expect(cleaned).toMatchSnapshot();
183
+ });
184
+
185
+ it('Should show paginated response of all connections with a limit', async () => {
186
+ const initial = await factory.getClientConnections({
187
+ limit: 4
188
+ });
189
+
190
+ const cursor = initial.cursor;
191
+ expect(cursor).toBeDefined();
192
+
193
+ const cleanedInitial = {
194
+ ...initial,
195
+ cursor: '<removed-for-snapshot>',
196
+ items: removeVolatileFields(initial.items)
197
+ };
198
+ expect(cleanedInitial).toMatchSnapshot();
199
+ const connections = await factory.getClientConnections({
200
+ cursor
201
+ });
202
+
203
+ const cleaned = {
204
+ ...connections,
205
+ items: removeVolatileFields(initial.items)
206
+ };
207
+ expect(cleaned).toMatchSnapshot();
208
+ });
136
209
  }