@powersync/service-sync-rules 0.0.0-dev-20250820110726 → 0.0.0-dev-20250825132649

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.
Files changed (52) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +8 -1
  2. package/dist/BaseSqlDataQuery.js +42 -0
  3. package/dist/BaseSqlDataQuery.js.map +1 -1
  4. package/dist/SqlBucketDescriptor.js +2 -10
  5. package/dist/SqlBucketDescriptor.js.map +1 -1
  6. package/dist/SqlDataQuery.js +7 -28
  7. package/dist/SqlDataQuery.js.map +1 -1
  8. package/dist/SqlSyncRules.js +33 -2
  9. package/dist/SqlSyncRules.js.map +1 -1
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/json_schema.js +31 -1
  14. package/dist/json_schema.js.map +1 -1
  15. package/dist/request_functions.d.ts +24 -4
  16. package/dist/request_functions.js +68 -17
  17. package/dist/request_functions.js.map +1 -1
  18. package/dist/sql_filters.d.ts +17 -1
  19. package/dist/sql_filters.js +216 -116
  20. package/dist/sql_filters.js.map +1 -1
  21. package/dist/sql_functions.d.ts +3 -0
  22. package/dist/sql_functions.js +36 -9
  23. package/dist/sql_functions.js.map +1 -1
  24. package/dist/sql_support.d.ts +20 -0
  25. package/dist/sql_support.js +67 -14
  26. package/dist/sql_support.js.map +1 -1
  27. package/dist/streams/filter.d.ts +148 -0
  28. package/dist/streams/filter.js +426 -0
  29. package/dist/streams/filter.js.map +1 -0
  30. package/dist/streams/from_sql.d.ts +4 -0
  31. package/dist/streams/from_sql.js +369 -0
  32. package/dist/streams/from_sql.js.map +1 -0
  33. package/dist/streams/functions.d.ts +2 -0
  34. package/dist/streams/functions.js +38 -0
  35. package/dist/streams/functions.js.map +1 -0
  36. package/dist/streams/parameter.d.ts +67 -0
  37. package/dist/streams/parameter.js +2 -0
  38. package/dist/streams/parameter.js.map +1 -0
  39. package/dist/streams/stream.d.ts +40 -0
  40. package/dist/streams/stream.js +136 -0
  41. package/dist/streams/stream.js.map +1 -0
  42. package/dist/streams/utils.d.ts +1 -0
  43. package/dist/streams/utils.js +13 -0
  44. package/dist/streams/utils.js.map +1 -0
  45. package/dist/streams/variant.d.ts +121 -0
  46. package/dist/streams/variant.js +265 -0
  47. package/dist/streams/variant.js.map +1 -0
  48. package/dist/types.d.ts +12 -1
  49. package/dist/types.js +17 -1
  50. package/dist/types.js.map +1 -1
  51. package/package.json +2 -2
  52. package/schema/sync_rules.json +55 -2
package/dist/types.js CHANGED
@@ -16,6 +16,7 @@ export class RequestParameters {
16
16
  * JSON string of raw request parameters.
17
17
  */
18
18
  rawUserParameters;
19
+ streamParameters;
19
20
  rawStreamParameters;
20
21
  /**
21
22
  * JSON string of raw request parameters.
@@ -23,6 +24,16 @@ export class RequestParameters {
23
24
  rawTokenPayload;
24
25
  userId;
25
26
  constructor(tokenPayload, clientParameters) {
27
+ if (tokenPayload instanceof RequestParameters) {
28
+ this.tokenParameters = tokenPayload.tokenParameters;
29
+ this.userParameters = tokenPayload.userParameters;
30
+ this.rawUserParameters = tokenPayload.rawUserParameters;
31
+ this.rawTokenPayload = tokenPayload.rawTokenPayload;
32
+ this.streamParameters = tokenPayload.streamParameters;
33
+ this.rawStreamParameters = tokenPayload.rawStreamParameters;
34
+ this.userId = tokenPayload.userId;
35
+ return;
36
+ }
26
37
  // This type is verified when we verify the token
27
38
  const legacyParameters = tokenPayload.parameters;
28
39
  const tokenParameters = {
@@ -35,6 +46,7 @@ export class RequestParameters {
35
46
  this.rawTokenPayload = JSONBig.stringify(tokenPayload);
36
47
  this.rawUserParameters = JSONBig.stringify(clientParameters);
37
48
  this.userParameters = toSyncRulesParameters(clientParameters);
49
+ this.streamParameters = null;
38
50
  this.rawStreamParameters = null;
39
51
  }
40
52
  lookup(table, column) {
@@ -44,10 +56,14 @@ export class RequestParameters {
44
56
  else if (table == 'user_parameters') {
45
57
  return this.userParameters[column];
46
58
  }
59
+ else if (table == 'subscription_parameters' && this.streamParameters != null) {
60
+ return this.streamParameters[column];
61
+ }
47
62
  throw new Error(`Unknown table: ${table}`);
48
63
  }
49
64
  withAddedStreamParameters(params) {
50
- const clone = structuredClone(this);
65
+ const clone = new RequestParameters(this);
66
+ clone.streamParameters = params;
51
67
  clone.rawStreamParameters = JSONBig.stringify(params);
52
68
  return clone;
53
69
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAKpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA+CnD,MAAM,UAAU,iBAAiB,CAAC,CAAM;IACtC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAmB;IAChD,OAAO,OAAQ,CAAkB,CAAC,MAAM,IAAI,QAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAA4B;IAChE,OAAO,QAAQ,IAAI,CAAC,CAAC;AACvB,CAAC;AAkCD,MAAM,OAAO,iBAAiB;IAC5B,eAAe,CAAgB;IAC/B,cAAc,CAAgB;IAE9B;;OAEG;IACH,iBAAiB,CAAS;IAE1B,mBAAmB,CAAgB;IAEnC;;OAEG;IACH,eAAe,CAAS;IAExB,MAAM,CAAS;IAEf,YAAY,YAA+B,EAAE,gBAAqC;QAChF,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAA6C,CAAC;QAEpF,MAAM,eAAe,GAAG;YACtB,GAAG,gBAAgB;YACnB,oDAAoD;YACpD,OAAO,EAAE,YAAY,CAAC,GAAG;SAC1B,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,yBAAyB,CAAC,MAA2B;QACnD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powersync/service-sync-rules",
3
3
  "repository": "https://github.com/powersync-ja/powersync-service",
4
- "version": "0.0.0-dev-20250820110726",
4
+ "version": "0.0.0-dev-20250825132649",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "FSL-1.1-ALv2",
@@ -19,7 +19,7 @@
19
19
  "pgsql-ast-parser": "^11.1.0",
20
20
  "uuid": "^11.1.0",
21
21
  "yaml": "^2.3.1",
22
- "@powersync/service-jsonbig": "^0.0.0-dev-20250820110726"
22
+ "@powersync/service-jsonbig": "^0.0.0-dev-20250825132649"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.16.2",
@@ -61,6 +61,50 @@
61
61
  }
62
62
  }
63
63
  },
64
+ "streams": {
65
+ "type": "object",
66
+ "description": "List of stream definitions",
67
+ "examples": [
68
+ {
69
+ "user_details": {
70
+ "query": "select * from users where id = auth.user_id()"
71
+ }
72
+ }
73
+ ],
74
+ "patternProperties": {
75
+ ".*": {
76
+ "type": "object",
77
+ "required": [
78
+ "query"
79
+ ],
80
+ "examples": [
81
+ {
82
+ "query": [
83
+ "select * from mytable"
84
+ ]
85
+ }
86
+ ],
87
+ "properties": {
88
+ "accept_potentially_dangerous_queries": {
89
+ "description": "If true, disables warnings on potentially dangerous queries",
90
+ "type": "boolean"
91
+ },
92
+ "auto_subscribe": {
93
+ "description": "Whether clients will subscribe to this stream by default.",
94
+ "type": "boolean"
95
+ },
96
+ "priority": {
97
+ "description": "Priority for the bucket (lower values indicate higher priority).",
98
+ "type": "integer"
99
+ },
100
+ "query": {
101
+ "description": "The SQL query defining content to sync in this stream.",
102
+ "type": "string"
103
+ }
104
+ }
105
+ }
106
+ }
107
+ },
64
108
  "event_definitions": {
65
109
  "type": "object",
66
110
  "description": "Record of sync replication event definitions",
@@ -103,8 +147,17 @@
103
147
  }
104
148
  }
105
149
  },
106
- "required": [
107
- "bucket_definitions"
150
+ "anyOf": [
151
+ {
152
+ "required": [
153
+ "bucket_definitions"
154
+ ]
155
+ },
156
+ {
157
+ "required": [
158
+ "streams"
159
+ ]
160
+ }
108
161
  ],
109
162
  "additionalProperties": false
110
163
  }