@powersync/service-core 0.1.3 → 0.2.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.
- package/CHANGELOG.md +6 -0
- package/dist/routes/socket-route.js +1 -1
- package/dist/routes/socket-route.js.map +1 -1
- package/dist/routes/sync-stream.js +1 -1
- package/dist/routes/sync-stream.js.map +1 -1
- package/dist/util/protocol-types.d.ts +4 -0
- package/dist/util/protocol-types.js +5 -1
- package/dist/util/protocol-types.js.map +1 -1
- package/package.json +2 -2
- package/src/routes/socket-route.ts +5 -1
- package/src/routes/sync-stream.ts +4 -1
- package/src/util/protocol-types.ts +6 -1
- package/test/src/sync_rules.test.ts +11 -9
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -25,7 +25,7 @@ export const sync_stream_reactive = (router) => router.reactiveStream(SyncRoutes
|
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
27
|
const controller = new AbortController();
|
|
28
|
-
const syncParams = normalizeTokenParameters(context.token_payload?.parameters ?? {});
|
|
28
|
+
const syncParams = normalizeTokenParameters(context.token_payload?.parameters ?? {}, params.parameters ?? {});
|
|
29
29
|
const storage = system.storage;
|
|
30
30
|
// Sanity check before we start the stream
|
|
31
31
|
const cp = await storage.getActiveCheckpoint();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-route.js","sourceRoot":"","sources":["../../src/routes/socket-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAkB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAyB,CAAC,MAAM,EAAE,EAAE,CACnE,MAAM,CAAC,cAAc,CAAiC,UAAU,CAAC,MAAM,EAAE;IACvE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACzB,OAAO;YACL,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa;YACnC,MAAM,EAAE,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;IACD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACpG,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS,CAAC,OAAO,CACf,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,iCAAiC;aAC/C,CAAC,CACH,CAAC;YACF,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,MAAM,UAAU,GAAmB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"socket-route.js","sourceRoot":"","sources":["../../src/routes/socket-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export const syncStreamed = (router) => router.post(SyncRoutes.STREAM, {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
const params = payload.params;
|
|
26
|
-
const syncParams = normalizeTokenParameters(payload.context.token_payload.parameters ?? {});
|
|
26
|
+
const syncParams = normalizeTokenParameters(payload.context.token_payload.parameters ?? {}, payload.params.parameters ?? {});
|
|
27
27
|
const storage = system.storage;
|
|
28
28
|
// Sanity check before we start the stream
|
|
29
29
|
const cp = await storage.getActiveCheckpoint();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../src/routes/sync-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAkB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,qCAAuB,CAAA;AACzB,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB,CAAC,MAAM,EAAE,EAAE,CACrD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;IAC7B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACpG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAQ,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClC,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,iCAAiC;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAA8B,OAAO,CAAC,MAAM,CAAC;QACzD,MAAM,UAAU,GAAmB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../src/routes/sync-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,10 @@ export declare const StreamingSyncRequest: t.ObjectCodec<{
|
|
|
76
76
|
* Data is received in a serialized BSON Buffer
|
|
77
77
|
*/
|
|
78
78
|
binary_data: t.OptionalCodec<t.Codec<boolean, boolean, string, t.CodecProps>>;
|
|
79
|
+
/**
|
|
80
|
+
* Client parameters to be passed to the sync rules.
|
|
81
|
+
*/
|
|
82
|
+
parameters: t.OptionalCodec<t.Codec<Record<string, any>, Record<string, any>, string, t.CodecProps>>;
|
|
79
83
|
}>;
|
|
80
84
|
export type StreamingSyncRequest = t.Decoded<typeof StreamingSyncRequest>;
|
|
81
85
|
export interface StreamingSyncCheckpoint {
|
|
@@ -26,7 +26,11 @@ export const StreamingSyncRequest = t.object({
|
|
|
26
26
|
/**
|
|
27
27
|
* Data is received in a serialized BSON Buffer
|
|
28
28
|
*/
|
|
29
|
-
binary_data: t.boolean.optional()
|
|
29
|
+
binary_data: t.boolean.optional(),
|
|
30
|
+
/**
|
|
31
|
+
* Client parameters to be passed to the sync rules.
|
|
32
|
+
*/
|
|
33
|
+
parameters: t.record(t.any).optional()
|
|
30
34
|
});
|
|
31
35
|
export function isContinueCheckpointRequest(request) {
|
|
32
36
|
return (Array.isArray(request.buckets) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-types.js","sourceRoot":"","sources":["../../src/util/protocol-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAwD9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM;IAEd;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IAE1C;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAElC;;OAEG;IACH,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEtC;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;IAE9B;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"protocol-types.js","sourceRoot":"","sources":["../../src/util/protocol-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAwD9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM;IAEd;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM;CAChB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IAE1C;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAElC;;OAEG;IACH,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEtC;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;IAE9B;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEjC;;OAEG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAgGH,MAAM,UAAU,2BAA2B,CAAC,OAAoB;IAC9D,OAAO,CACL,KAAK,CAAC,OAAO,CAAE,OAAqC,CAAC,OAAO,CAAC;QAC7D,OAAQ,OAAqC,CAAC,gBAAgB,IAAI,QAAQ,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAoB;IAC7D,OAAO,OAAQ,OAAoC,CAAC,kBAAkB,IAAI,QAAQ,CAAC;AACrF,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.
|
|
8
|
+
"version": "0.2.0",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"license": "FSL-1.1-Apache-2.0",
|
|
11
11
|
"type": "module",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"uuid": "^9.0.1",
|
|
34
34
|
"yaml": "^2.3.2",
|
|
35
35
|
"@powersync/service-jpgwire": "0.17.12",
|
|
36
|
+
"@powersync/service-types": "0.1.0",
|
|
36
37
|
"@powersync/service-jsonbig": "0.17.10",
|
|
37
38
|
"@powersync/service-rsocket-router": "0.0.7",
|
|
38
|
-
"@powersync/service-types": "0.1.0",
|
|
39
39
|
"@powersync/service-sync-rules": "0.17.10"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
@@ -34,7 +34,11 @@ export const sync_stream_reactive: SocketRouteGenerator = (router) =>
|
|
|
34
34
|
|
|
35
35
|
const controller = new AbortController();
|
|
36
36
|
|
|
37
|
-
const syncParams: SyncParameters = normalizeTokenParameters(
|
|
37
|
+
const syncParams: SyncParameters = normalizeTokenParameters(
|
|
38
|
+
context.token_payload?.parameters ?? {},
|
|
39
|
+
params.parameters ?? {}
|
|
40
|
+
);
|
|
41
|
+
|
|
38
42
|
const storage = system.storage;
|
|
39
43
|
// Sanity check before we start the stream
|
|
40
44
|
const cp = await storage.getActiveCheckpoint();
|
|
@@ -30,7 +30,10 @@ export const syncStreamed: RouteGenerator = (router) =>
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const params: util.StreamingSyncRequest = payload.params;
|
|
33
|
-
const syncParams: SyncParameters = normalizeTokenParameters(
|
|
33
|
+
const syncParams: SyncParameters = normalizeTokenParameters(
|
|
34
|
+
payload.context.token_payload!.parameters ?? {},
|
|
35
|
+
payload.params.parameters ?? {}
|
|
36
|
+
);
|
|
34
37
|
|
|
35
38
|
const storage = system.storage;
|
|
36
39
|
// Sanity check before we start the stream
|
|
@@ -89,7 +89,12 @@ export const StreamingSyncRequest = t.object({
|
|
|
89
89
|
/**
|
|
90
90
|
* Data is received in a serialized BSON Buffer
|
|
91
91
|
*/
|
|
92
|
-
binary_data: t.boolean.optional()
|
|
92
|
+
binary_data: t.boolean.optional(),
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Client parameters to be passed to the sync rules.
|
|
96
|
+
*/
|
|
97
|
+
parameters: t.record(t.any).optional()
|
|
93
98
|
});
|
|
94
99
|
|
|
95
100
|
export type StreamingSyncRequest = t.Decoded<typeof StreamingSyncRequest>;
|
|
@@ -100,27 +100,29 @@ bucket_definitions:
|
|
|
100
100
|
const rules = SqlSyncRules.fromYaml(`
|
|
101
101
|
bucket_definitions:
|
|
102
102
|
mybucket:
|
|
103
|
-
parameters: SELECT token_parameters.user_id
|
|
103
|
+
parameters: SELECT token_parameters.user_id, user_parameters.device_id
|
|
104
104
|
data:
|
|
105
|
-
- SELECT id, description FROM assets WHERE assets.user_id = bucket.user_id AND NOT assets.archived
|
|
105
|
+
- SELECT id, description FROM assets WHERE assets.user_id = bucket.user_id AND assets.device_id = bucket.device_id AND NOT assets.archived
|
|
106
106
|
`);
|
|
107
107
|
const bucket = rules.bucket_descriptors[0];
|
|
108
|
-
expect(bucket.bucket_parameters).toEqual(['user_id']);
|
|
108
|
+
expect(bucket.bucket_parameters).toEqual(['user_id', 'device_id']);
|
|
109
109
|
const param_query = bucket.global_parameter_queries[0];
|
|
110
|
-
expect(param_query.bucket_parameters).toEqual(['user_id']);
|
|
111
|
-
expect(rules.getStaticBucketIds(normalizeTokenParameters({ user_id: 'user1' }))).toEqual([
|
|
110
|
+
expect(param_query.bucket_parameters).toEqual(['user_id', 'device_id']);
|
|
111
|
+
expect(rules.getStaticBucketIds(normalizeTokenParameters({ user_id: 'user1' }, { device_id: 'device1' }))).toEqual([
|
|
112
|
+
'mybucket["user1","device1"]'
|
|
113
|
+
]);
|
|
112
114
|
|
|
113
115
|
const data_query = bucket.data_queries[0];
|
|
114
|
-
expect(data_query.bucket_parameters).toEqual(['user_id']);
|
|
116
|
+
expect(data_query.bucket_parameters).toEqual(['user_id', 'device_id']);
|
|
115
117
|
expect(
|
|
116
118
|
rules.evaluateRow({
|
|
117
119
|
sourceTable: ASSETS,
|
|
118
|
-
record: { id: 'asset1', description: 'test', user_id: 'user1' }
|
|
120
|
+
record: { id: 'asset1', description: 'test', user_id: 'user1', device_id: 'device1' }
|
|
119
121
|
})
|
|
120
122
|
).toEqual([
|
|
121
123
|
{
|
|
122
124
|
ruleId: '1',
|
|
123
|
-
bucket: 'mybucket["user1"]',
|
|
125
|
+
bucket: 'mybucket["user1","device1"]',
|
|
124
126
|
id: 'asset1',
|
|
125
127
|
data: {
|
|
126
128
|
id: 'asset1',
|
|
@@ -132,7 +134,7 @@ bucket_definitions:
|
|
|
132
134
|
expect(
|
|
133
135
|
rules.evaluateRow({
|
|
134
136
|
sourceTable: ASSETS,
|
|
135
|
-
record: { id: 'asset1', description: 'test', user_id: 'user1', archived: 1 }
|
|
137
|
+
record: { id: 'asset1', description: 'test', user_id: 'user1', archived: 1, device_id: 'device1' }
|
|
136
138
|
})
|
|
137
139
|
).toEqual([]);
|
|
138
140
|
});
|