@powersync/service-sync-rules 0.17.10 → 0.18.1

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 (42) hide show
  1. package/README.md +126 -0
  2. package/dist/ExpressionType.d.ts +1 -0
  3. package/dist/ExpressionType.js +3 -0
  4. package/dist/ExpressionType.js.map +1 -1
  5. package/dist/SqlBucketDescriptor.d.ts +3 -3
  6. package/dist/SqlBucketDescriptor.js +2 -2
  7. package/dist/SqlBucketDescriptor.js.map +1 -1
  8. package/dist/SqlDataQuery.js +28 -7
  9. package/dist/SqlDataQuery.js.map +1 -1
  10. package/dist/SqlParameterQuery.d.ts +54 -12
  11. package/dist/SqlParameterQuery.js +106 -33
  12. package/dist/SqlParameterQuery.js.map +1 -1
  13. package/dist/SqlSyncRules.d.ts +2 -2
  14. package/dist/SqlSyncRules.js +21 -4
  15. package/dist/SqlSyncRules.js.map +1 -1
  16. package/dist/StaticSqlParameterQuery.d.ts +9 -6
  17. package/dist/StaticSqlParameterQuery.js +42 -12
  18. package/dist/StaticSqlParameterQuery.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/json_schema.js +4 -0
  23. package/dist/json_schema.js.map +1 -1
  24. package/dist/request_functions.d.ts +19 -0
  25. package/dist/request_functions.js +47 -0
  26. package/dist/request_functions.js.map +1 -0
  27. package/dist/sql_filters.d.ts +38 -4
  28. package/dist/sql_filters.js +270 -177
  29. package/dist/sql_filters.js.map +1 -1
  30. package/dist/sql_functions.d.ts +30 -19
  31. package/dist/sql_functions.js +113 -17
  32. package/dist/sql_functions.js.map +1 -1
  33. package/dist/sql_support.d.ts +6 -3
  34. package/dist/sql_support.js +72 -35
  35. package/dist/sql_support.js.map +1 -1
  36. package/dist/types.d.ts +100 -12
  37. package/dist/types.js +18 -0
  38. package/dist/types.js.map +1 -1
  39. package/dist/utils.d.ts +1 -2
  40. package/dist/utils.js +0 -6
  41. package/dist/utils.js.map +1 -1
  42. package/package.json +6 -3
@@ -3,14 +3,17 @@ import { evaluateOperator, getOperatorReturnType } from './sql_functions.js';
3
3
  import { SqlRuleError } from './errors.js';
4
4
  import { ExpressionType } from './ExpressionType.js';
5
5
  export function isParameterMatchClause(clause) {
6
- return Array.isArray(clause.bucketParameters);
6
+ return Array.isArray(clause.inputParameters);
7
7
  }
8
- export function isStaticRowValueClause(clause) {
8
+ export function isRowValueClause(clause) {
9
9
  return typeof clause.evaluate == 'function';
10
10
  }
11
+ export function isStaticValueClause(clause) {
12
+ return isRowValueClause(clause) && typeof clause.value != 'undefined';
13
+ }
11
14
  export function isParameterValueClause(clause) {
12
15
  // noinspection SuspiciousTypeOfGuard
13
- return typeof clause.bucketParameter == 'string';
16
+ return typeof clause.key == 'string';
14
17
  }
15
18
  export function isClauseError(clause) {
16
19
  return clause.error === true;
@@ -51,8 +54,19 @@ export function compileStaticOperator(op, left, right) {
51
54
  }
52
55
  };
53
56
  }
57
+ export function getOperatorFunction(op) {
58
+ return {
59
+ debugName: `operator${op}`,
60
+ call(...args) {
61
+ return evaluateOperator(op, args[0], args[1]);
62
+ },
63
+ getReturnType(args) {
64
+ return getOperatorReturnType(op, args[0], args[1]);
65
+ }
66
+ };
67
+ }
54
68
  export function andFilters(a, b) {
55
- if (isStaticRowValueClause(a) && isStaticRowValueClause(b)) {
69
+ if (isRowValueClause(a) && isRowValueClause(b)) {
56
70
  // Optimization
57
71
  return {
58
72
  evaluate(tables) {
@@ -67,20 +81,20 @@ export function andFilters(a, b) {
67
81
  }
68
82
  const aFilter = toBooleanParameterSetClause(a);
69
83
  const bFilter = toBooleanParameterSetClause(b);
70
- const aParams = aFilter.bucketParameters;
71
- const bParams = bFilter.bucketParameters;
84
+ const aParams = aFilter.inputParameters;
85
+ const bParams = bFilter.inputParameters;
72
86
  if (aFilter.unbounded && bFilter.unbounded) {
73
87
  // This could explode the number of buckets for the row
74
88
  throw new Error('Cannot have multiple IN expressions on bucket parameters');
75
89
  }
76
- const combined = new Set([...aParams, ...bParams]);
90
+ const combinedMap = new Map([...aParams, ...bParams].map((p) => [p.key, p]));
77
91
  return {
78
92
  error: aFilter.error || bFilter.error,
79
- bucketParameters: [...combined],
93
+ inputParameters: [...combinedMap.values()],
80
94
  unbounded: aFilter.unbounded || bFilter.unbounded,
81
- filter: (tables) => {
82
- const aResult = aFilter.filter(tables);
83
- const bResult = bFilter.filter(tables);
95
+ filterRow: (tables) => {
96
+ const aResult = aFilter.filterRow(tables);
97
+ const bResult = bFilter.filterRow(tables);
84
98
  let results = [];
85
99
  for (let result1 of aResult) {
86
100
  for (let result2 of bResult) {
@@ -97,11 +111,13 @@ export function andFilters(a, b) {
97
111
  }
98
112
  }
99
113
  return results;
100
- }
114
+ },
115
+ usesAuthenticatedRequestParameters: aFilter.usesAuthenticatedRequestParameters || bFilter.usesAuthenticatedRequestParameters,
116
+ usesUnauthenticatedRequestParameters: aFilter.usesUnauthenticatedRequestParameters || bFilter.usesUnauthenticatedRequestParameters
101
117
  };
102
118
  }
103
119
  export function orFilters(a, b) {
104
- if (isStaticRowValueClause(a) && isStaticRowValueClause(b)) {
120
+ if (isRowValueClause(a) && isRowValueClause(b)) {
105
121
  // Optimization
106
122
  return {
107
123
  evaluate(tables) {
@@ -119,27 +135,31 @@ export function orFilters(a, b) {
119
135
  return orParameterSetClauses(aFilter, bFilter);
120
136
  }
121
137
  export function orParameterSetClauses(a, b) {
122
- const aParams = a.bucketParameters;
123
- const bParams = b.bucketParameters;
138
+ const aParams = a.inputParameters;
139
+ const bParams = b.inputParameters;
124
140
  // This gives the guaranteed set of parameters matched against.
125
- const allParams = new Set([...aParams, ...bParams]);
126
- if (allParams.size != aParams.length || allParams.size != bParams.length) {
141
+ const combinedMap = new Map([...aParams, ...bParams].map((p) => [p.key, p]));
142
+ if (combinedMap.size != aParams.length || combinedMap.size != bParams.length) {
127
143
  throw new Error(`Left and right sides of OR must use the same parameters, or split into separate queries. ${JSON.stringify(aParams)} != ${JSON.stringify(bParams)}`);
128
144
  }
129
- const parameters = [...allParams];
145
+ const parameters = [...combinedMap.values()];
130
146
  // assets.region_id = bucket.region_id AND bucket.user_id IN assets.user_ids
131
147
  // OR bucket.region_id IN assets.region_ids AND bucket.user_id = assets.user_id
132
148
  const unbounded = a.unbounded || b.unbounded;
133
149
  return {
134
150
  error: a.error || b.error,
135
- bucketParameters: parameters,
151
+ inputParameters: parameters,
136
152
  unbounded,
137
- filter: (tables) => {
138
- const aResult = a.filter(tables);
139
- const bResult = b.filter(tables);
153
+ filterRow: (tables) => {
154
+ const aResult = a.filterRow(tables);
155
+ const bResult = b.filterRow(tables);
140
156
  let results = [...aResult, ...bResult];
141
157
  return results;
142
- }
158
+ },
159
+ // Pessimistic check
160
+ usesAuthenticatedRequestParameters: a.usesAuthenticatedRequestParameters && b.usesAuthenticatedRequestParameters,
161
+ // Optimistic check
162
+ usesUnauthenticatedRequestParameters: a.usesUnauthenticatedRequestParameters || b.usesUnauthenticatedRequestParameters
143
163
  };
144
164
  }
145
165
  /**
@@ -151,37 +171,54 @@ export function toBooleanParameterSetClause(clause) {
151
171
  if (isParameterMatchClause(clause)) {
152
172
  return clause;
153
173
  }
154
- else if (isStaticRowValueClause(clause)) {
174
+ else if (isRowValueClause(clause)) {
155
175
  return {
156
176
  error: false,
157
- bucketParameters: [],
177
+ inputParameters: [],
158
178
  unbounded: false,
159
- filter(tables) {
179
+ filterRow(tables) {
160
180
  const value = sqliteBool(clause.evaluate(tables));
161
181
  return value ? MATCH_CONST_TRUE : MATCH_CONST_FALSE;
162
- }
182
+ },
183
+ usesAuthenticatedRequestParameters: false,
184
+ usesUnauthenticatedRequestParameters: false
163
185
  };
164
186
  }
165
187
  else if (isClauseError(clause)) {
166
188
  return {
167
189
  error: true,
168
- bucketParameters: [],
190
+ inputParameters: [],
169
191
  unbounded: false,
170
- filter(tables) {
192
+ filterRow(tables) {
171
193
  throw new Error('invalid clause');
172
- }
194
+ },
195
+ usesAuthenticatedRequestParameters: false,
196
+ usesUnauthenticatedRequestParameters: false
173
197
  };
174
198
  }
175
199
  else {
176
200
  // Equivalent to `bucket.param = true`
177
- const param = clause.bucketParameter;
201
+ const key = clause.key;
202
+ const inputParam = {
203
+ key: key,
204
+ expands: false,
205
+ filteredRowToLookupValue: (filterParameters) => {
206
+ return filterParameters[key];
207
+ },
208
+ parametersToLookupValue: (parameters) => {
209
+ const inner = clause.lookupParameterValue(parameters);
210
+ return sqliteBool(inner);
211
+ }
212
+ };
178
213
  return {
179
214
  error: false,
180
- bucketParameters: [param],
215
+ inputParameters: [inputParam],
181
216
  unbounded: false,
182
- filter(tables) {
183
- return [{ [param]: SQLITE_TRUE }];
184
- }
217
+ filterRow(tables) {
218
+ return [{ [key]: SQLITE_TRUE }];
219
+ },
220
+ usesAuthenticatedRequestParameters: clause.usesAuthenticatedRequestParameters,
221
+ usesUnauthenticatedRequestParameters: clause.usesUnauthenticatedRequestParameters
185
222
  };
186
223
  }
187
224
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sql_support.js","sourceRoot":"","sources":["../src/sql_support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql_support.js","sourceRoot":"","sources":["../src/sql_support.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAe,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAE,MAA+B,CAAC,eAAe,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,OAAO,OAAQ,MAAyB,CAAC,QAAQ,IAAI,UAAU,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,OAAQ,MAA4B,CAAC,KAAK,IAAI,WAAW,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,qCAAqC;IACrC,OAAO,OAAQ,MAA+B,CAAC,GAAG,IAAI,QAAQ,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAsB;IAClD,OAAQ,MAAsB,CAAC,KAAK,KAAK,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,MAAM,UAAU,UAAU,CAAC,KAA4B;IACrD,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,YAAY,CAAC;KACrB;SAAM,IAAI,OAAO,KAAK,IAAI,SAAS,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;QAChE,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KAC3C;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;QACnC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KACjD;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;QACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KACrD;SAAM;QACL,OAAO,YAAY,CAAC;KACrB;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,UAAU,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAU,EAAE,IAAoB,EAAE,KAAqB;IAC3F,OAAO;QACL,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,OAAO,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,MAAM;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO;QACL,SAAS,EAAE,WAAW,EAAE,EAAE;QAC1B,IAAI,CAAC,GAAG,IAAmB;YACzB,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,aAAa,CAAC,IAAI;YAChB,OAAO,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAiB,EAAE,CAAiB;IAC7D,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;QAC9C,eAAe;QACf,OAAO;YACL,QAAQ,CAAC,MAAuB;gBAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,OAAO,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;gBACL,OAAO,cAAc,CAAC,OAAO,CAAC;YAChC,CAAC;SACuB,CAAC;KAC5B;IAED,MAAM,OAAO,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAExC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE;QAC1C,uDAAuD;QACvD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC7E;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;QACrC,eAAe,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QACjD,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,OAAO,GAAuB,EAAE,CAAC;YACrC,KAAK,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3B,KAAK,IAAI,OAAO,IAAI,OAAO,EAAE;oBAC3B,IAAI,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;oBAC9B,IAAI,KAAK,GAAG,IAAI,CAAC;oBACjB,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;wBACvB,IAAI,GAAG,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;4BACpD,KAAK,GAAG,KAAK,CAAC;4BACd,MAAM;yBACP;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;qBAC9B;oBAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACxB;aACF;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,kCAAkC,EAChC,OAAO,CAAC,kCAAkC,IAAI,OAAO,CAAC,kCAAkC;QAC1F,oCAAoC,EAClC,OAAO,CAAC,oCAAoC,IAAI,OAAO,CAAC,oCAAoC;KAChE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAiB,EAAE,CAAiB;IAC5D,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;QAC9C,eAAe;QACf,OAAO;YACL,QAAQ,CAAC,MAAuB;gBAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,OAAO,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;gBACL,OAAO,cAAc,CAAC,OAAO,CAAC;YAChC,CAAC;SACuB,CAAC;KAC5B;IAED,MAAM,OAAO,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAuB,EAAE,CAAuB;IACpF,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC;IAElC,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;QAC5E,MAAM,IAAI,KAAK,CACb,4FAA4F,IAAI,CAAC,SAAS,CACxG,OAAO,CACR,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClC,CAAC;KACH;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C,4EAA4E;IAC5E,+EAA+E;IAE/E,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC;IAC7C,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK;QACzB,eAAe,EAAE,UAAU;QAC3B,SAAS;QACT,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAI,OAAO,GAAuB,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;YAC3D,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,oBAAoB;QACpB,kCAAkC,EAAE,CAAC,CAAC,kCAAkC,IAAI,CAAC,CAAC,kCAAkC;QAChH,mBAAmB;QACnB,oCAAoC,EAClC,CAAC,CAAC,oCAAoC,IAAI,CAAC,CAAC,oCAAoC;KACpD,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAChE,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE;QAClC,OAAO,MAAM,CAAC;KACf;SAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;QACnC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,KAAK;YAChB,SAAS,CAAC,MAAuB;gBAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACtD,CAAC;YACD,kCAAkC,EAAE,KAAK;YACzC,oCAAoC,EAAE,KAAK;SACb,CAAC;KAClC;SAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QAChC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,KAAK;YAChB,SAAS,CAAC,MAAuB;gBAC/B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YACD,kCAAkC,EAAE,KAAK;YACzC,oCAAoC,EAAE,KAAK;SACb,CAAC;KAClC;SAAM;QACL,sCAAsC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEvB,MAAM,UAAU,GAAmB;YACjC,GAAG,EAAE,GAAG;YACR,OAAO,EAAE,KAAK;YACd,wBAAwB,EAAE,CAAC,gBAAgB,EAAE,EAAE;gBAC7C,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,uBAAuB,EAAE,CAAC,UAAU,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBACtD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,CAAC,UAAU,CAAC;YAC7B,SAAS,EAAE,KAAK;YAChB,SAAS,CAAC,MAAuB;gBAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,kCAAkC,EAAE,MAAM,CAAC,kCAAkC;YAC7E,oCAAoC,EAAE,MAAM,CAAC,oCAAoC;SACnD,CAAC;KAClC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,CAAsB;IAC1E,IAAI,MAAM,GAAmB,EAAE,CAAC;IAChC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;KACjF;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F;IAED,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;QAClB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/E;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;KACnF;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F;IAED,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE;QACtB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC;KACjE;IAED,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;KACpF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,9 @@ export interface SyncRules {
6
6
  evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
7
7
  evaluateParameterRow(table: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
8
8
  }
9
+ export interface QueryParseOptions {
10
+ accept_potentially_dangerous_queries?: boolean;
11
+ }
9
12
  export interface EvaluatedParameters {
10
13
  lookup: SqliteJsonValue[];
11
14
  /**
@@ -36,9 +39,26 @@ export declare function isEvaluationError(e: any): e is EvaluationError;
36
39
  export declare function isEvaluatedRow(e: EvaluationResult): e is EvaluatedRow;
37
40
  export declare function isEvaluatedParameters(e: EvaluatedParametersResult): e is EvaluatedParameters;
38
41
  export type EvaluationResult = EvaluatedRow | EvaluationError;
39
- export interface SyncParameters {
42
+ export interface RequestJwtPayload {
43
+ /**
44
+ * user_id
45
+ */
46
+ sub: string;
47
+ [key: string]: any;
48
+ }
49
+ export declare class RequestParameters {
40
50
  token_parameters: SqliteJsonRow;
41
51
  user_parameters: SqliteJsonRow;
52
+ /**
53
+ * JSON string of raw request parameters.
54
+ */
55
+ raw_user_parameters: string;
56
+ /**
57
+ * JSON string of raw request parameters.
58
+ */
59
+ raw_token_payload: string;
60
+ user_id: string;
61
+ constructor(tokenPayload: RequestJwtPayload, clientParameters: Record<string, any>);
42
62
  }
43
63
  /**
44
64
  * A value that is both SQLite and JSON-compatible.
@@ -96,16 +116,52 @@ export type QueryParameters = {
96
116
  * A single set of parameters that would make a WHERE filter true.
97
117
  *
98
118
  * Each parameter is prefixed with a table name, e.g. 'bucket.param'.
119
+ *
120
+ * Data queries: this is converted into a bucket id, given named bucket parameters.
121
+ *
122
+ * Parameter queries: this is converted into a lookup array.
99
123
  */
100
124
  export type FilterParameters = {
101
125
  [parameter: string]: SqliteJsonValue;
102
126
  };
127
+ export interface InputParameter {
128
+ /**
129
+ * An unique identifier per parameter in a query.
130
+ *
131
+ * This is used to identify the same parameters used in a query multiple times.
132
+ *
133
+ * The value itself does not necessarily have any specific meaning.
134
+ */
135
+ key: string;
136
+ /**
137
+ * True if the parameter expands to an array. This means parametersToLookupValue() can
138
+ * return a JSON array. This is different from `unbounded` on the clause.
139
+ */
140
+ expands: boolean;
141
+ /**
142
+ * Given FilterParameters from a data row, return the associated value.
143
+ *
144
+ * Only relevant for parameter queries.
145
+ */
146
+ filteredRowToLookupValue(filterParameters: FilterParameters): SqliteJsonValue;
147
+ /**
148
+ * Given RequestParameters, return the associated value to lookup.
149
+ *
150
+ * Only relevant for parameter queries.
151
+ */
152
+ parametersToLookupValue(parameters: RequestParameters): SqliteValue;
153
+ }
103
154
  export interface EvaluateRowOptions {
104
155
  sourceTable: SourceTableInterface;
105
156
  record: SqliteRow;
106
157
  }
107
158
  /**
108
- * Given a row, produces a set of parameters that would make the clause evaluate to true.
159
+ * This is a clause that matches row and parameter values.
160
+ *
161
+ * Example:
162
+ * [WHERE] users.org_id = bucket.org_id
163
+ *
164
+ * For a given a row, this produces a set of parameters that would make the clause evaluate to true.
109
165
  */
110
166
  export interface ParameterMatchClause {
111
167
  error: boolean;
@@ -116,9 +172,10 @@ export interface ParameterMatchClause {
116
172
  *
117
173
  * These parameters are always matched by this clause, and no additional parameters are matched.
118
174
  */
119
- bucketParameters: string[];
175
+ inputParameters: InputParameter[];
120
176
  /**
121
- * True if the filter depends on an unbounded array column.
177
+ * True if the filter depends on an unbounded array column. This means filterRow can return
178
+ * multiple items.
122
179
  *
123
180
  * We restrict filters to only allow a single unbounded column for bucket parameters, otherwise the number of
124
181
  * bucketParameter combinations could grow too much.
@@ -127,42 +184,73 @@ export interface ParameterMatchClause {
127
184
  /**
128
185
  * Given a data row, give a set of filter parameters that would make the filter be true.
129
186
  *
187
+ * For StaticSqlParameterQuery, the tables are token_parameters and user_parameters.
188
+ * For others, it is the table of the data or parameter query.
189
+ *
130
190
  * @param tables - {table => row}
131
191
  * @return The filter parameters
132
192
  */
133
- filter(tables: QueryParameters): TrueIfParametersMatch;
193
+ filterRow(tables: QueryParameters): TrueIfParametersMatch;
194
+ /** request.user_id(), request.jwt(), token_parameters.* */
195
+ usesAuthenticatedRequestParameters: boolean;
196
+ /** request.parameters(), user_parameters.* */
197
+ usesUnauthenticatedRequestParameters: boolean;
134
198
  }
135
199
  /**
136
- * Given a row, produces a set of parameters that would make the clause evaluate to true.
200
+ * This is a clause that operates on request or bucket parameters.
137
201
  */
138
202
  export interface ParameterValueClause {
203
+ /** request.user_id(), request.jwt(), token_parameters.* */
204
+ usesAuthenticatedRequestParameters: boolean;
205
+ /** request.parameters(), user_parameters.* */
206
+ usesUnauthenticatedRequestParameters: boolean;
139
207
  /**
140
- * The parameter fields used for this, e.g. 'bucket.region_id'
208
+ * An unique key for the clause.
209
+ *
210
+ * For bucket parameters, this is `bucket.${name}`.
211
+ * For expressions, the exact format is undefined.
141
212
  */
142
- bucketParameter: string;
213
+ key: string;
214
+ /**
215
+ * Given RequestParameters, return the associated value to lookup.
216
+ *
217
+ * Only relevant for parameter queries.
218
+ */
219
+ lookupParameterValue(parameters: RequestParameters): SqliteValue;
143
220
  }
144
221
  export interface QuerySchema {
145
222
  getType(table: string, column: string): ExpressionType;
146
223
  getColumns(table: string): ColumnDefinition[];
147
224
  }
148
225
  /**
149
- * Only needs row values as input, producing a static value as output.
226
+ * A clause that uses row values as input.
227
+ *
228
+ * For parameter queries, that is the parameter table being queried.
229
+ * For data queries, that is the data table being queried.
150
230
  */
151
- export interface StaticRowValueClause {
231
+ export interface RowValueClause {
152
232
  evaluate(tables: QueryParameters): SqliteValue;
153
233
  getType(schema: QuerySchema): ExpressionType;
154
234
  }
235
+ /**
236
+ * Completely static value.
237
+ *
238
+ * Extends RowValueClause and ParameterValueClause to simplify code in some places.
239
+ */
240
+ export interface StaticValueClause extends RowValueClause, ParameterValueClause {
241
+ readonly value: SqliteValue;
242
+ }
155
243
  export interface ClauseError {
156
244
  error: true;
157
245
  }
158
- export type CompiledClause = StaticRowValueClause | ParameterMatchClause | ParameterValueClause | ClauseError;
246
+ export type CompiledClause = RowValueClause | ParameterMatchClause | ParameterValueClause | ClauseError;
159
247
  /**
160
248
  * true if any of the filter parameter sets match
161
249
  */
162
250
  export type TrueIfParametersMatch = FilterParameters[];
163
251
  export interface QueryBucketIdOptions {
164
252
  getParameterSets: (lookups: SqliteJsonValue[][]) => Promise<SqliteJsonRow[]>;
165
- parameters: SyncParameters;
253
+ parameters: RequestParameters;
166
254
  }
167
255
  export interface SourceSchemaTable {
168
256
  table: string;
package/dist/types.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { JSONBig } from '@powersync/service-jsonbig';
2
+ import { toSyncRulesParameters } from './utils.js';
1
3
  export function isEvaluationError(e) {
2
4
  return typeof e.error == 'string';
3
5
  }
@@ -7,4 +9,20 @@ export function isEvaluatedRow(e) {
7
9
  export function isEvaluatedParameters(e) {
8
10
  return Array.isArray(e.lookup);
9
11
  }
12
+ export class RequestParameters {
13
+ constructor(tokenPayload, clientParameters) {
14
+ // This type is verified when we verify the token
15
+ const legacyParameters = tokenPayload.parameters;
16
+ const token_parameters = {
17
+ ...legacyParameters,
18
+ // sub takes presedence over any embedded parameters
19
+ user_id: tokenPayload.sub
20
+ };
21
+ this.token_parameters = toSyncRulesParameters(token_parameters);
22
+ this.user_id = tokenPayload.sub;
23
+ this.raw_token_payload = JSONBig.stringify(tokenPayload);
24
+ this.raw_user_parameters = JSONBig.stringify(clientParameters);
25
+ this.user_parameters = toSyncRulesParameters(clientParameters);
26
+ }
27
+ }
10
28
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8CA,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,KAAK,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAIpE,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,KAAK,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAaD,MAAM,OAAO,iBAAiB;IAgB5B,YAAY,YAA+B,EAAE,gBAAqC;QAChF,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAA6C,CAAC;QAEpF,MAAM,gBAAgB,GAAG;YACvB,GAAG,gBAAgB;YACnB,oDAAoD;YACpD,OAAO,EAAE,YAAY,CAAC,GAAG;SAC1B,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;CACF"}
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Statement, SelectFromStatement } from 'pgsql-ast-parser';
2
- import { DatabaseInputRow, SqliteRow, SqliteJsonRow, SqliteJsonValue, SqliteValue, SyncParameters } from './types.js';
2
+ import { DatabaseInputRow, SqliteRow, SqliteJsonRow, SqliteJsonValue, SqliteValue } from './types.js';
3
3
  import { Replacer } from '@powersync/service-jsonbig';
4
4
  export declare function isSelectStatement(q: Statement): q is SelectFromStatement;
5
5
  export declare function getBucketId(descriptor_id: string, bucket_parameters: string[], params: Record<string, SqliteJsonValue>): string;
@@ -34,7 +34,6 @@ export declare function toSyncRulesParameters(parameters: Record<string, any>):
34
34
  * Any object or array is converted to JSON TEXT.
35
35
  */
36
36
  export declare function toSyncRulesValue(data: any, autoBigNum?: boolean, keepUndefined?: boolean): SqliteValue;
37
- export declare function normalizeTokenParameters(token_parameters: Record<string, any>, user_parameters?: Record<string, any>): SyncParameters;
38
37
  /**
39
38
  * Only use this for serializing bucket names. Bucket names should never be parsed except perhaps for debug purposes.
40
39
  *
package/dist/utils.js CHANGED
@@ -154,12 +154,6 @@ export function toSyncRulesValue(data, autoBigNum, keepUndefined) {
154
154
  return null;
155
155
  }
156
156
  }
157
- export function normalizeTokenParameters(token_parameters, user_parameters) {
158
- return {
159
- token_parameters: toSyncRulesParameters(token_parameters),
160
- user_parameters: toSyncRulesParameters(user_parameters ?? {})
161
- };
162
- }
163
157
  /**
164
158
  * Only use this for serializing bucket names. Bucket names should never be parsed except perhaps for debug purposes.
165
159
  *
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAY,MAAM,4BAA4B,CAAC;AAE7E,MAAM,UAAU,iBAAiB,CAAC,CAAY;IAC5C,OAAO,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,aAAqB,EACrB,iBAA2B,EAC3B,MAAuC;IAEvC,gHAAgH;IAChH,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,GAAG,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,IAAI,MAAM,GAAwB,EAAE,CAAC;IACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA4D;IAC5F,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE;QAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KAC3C;SAAM;QACL,OAAO,KAAK,IAAI,IAAI,CAAC;KACtB;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC3G,CAAC;AAED,SAAS,cAAc,CAAC,IAAS,EAAE,KAAK,GAAG,CAAC;IAC1C,IAAI,KAAK,GAAG,WAAW,EAAE;QACvB,kDAAkD;QAClD,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,EAAE,CAAC,CAAC;KACjF;IACD,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,OAAO,IAAI,CAAC,CAAC,oBAAoB;KAClC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAC7D,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,OAAO,IAAI,IAAI,SAAS,EAAE;QACnC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KAC1C;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;KAClE;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnC,OAAO,SAAS,CAAC;KAClB;SAAM,IAAI,IAAI,YAAY,aAAa,EAAE;QACxC,oEAAoE;QACpE,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,IAAI,MAAM,GAAwB,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;SACpD;QACD,OAAO,MAAM,CAAC;KACf;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAqB;IAClD,IAAI,MAAM,GAAc,EAAE,CAAC;IAC3B,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KACvD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA+B;IACnE,IAAI,MAAM,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QACvC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAoB,CAAC;KACjF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS,EAAE,UAAoB,EAAE,aAAuB;IACvF,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,oBAAoB;QACpB,IAAI,aAAa,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;YACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;aAAM;YACL,OAAO,IAAI,CAAC;SACb;KACF;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,OAAO,IAAI,IAAI,SAAS,EAAE;QACnC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;KAC1C;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,sFAAsF;QACtF,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1E;SAAM,IAAI,IAAI,YAAY,UAAU,EAAE;QACrC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,YAAY,aAAa,EAAE;QACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;QAClC,IAAI,MAAM,GAAwB,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACzC;QACD,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAClC;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,gBAAqC,EACrC,eAAqC;IAErC,OAAO;QACL,gBAAgB,EAAE,qBAAqB,CAAC,gBAAgB,CAAC;QACzD,eAAe,EAAE,qBAAqB,CAAC,eAAe,IAAI,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,KAAU,EAAE,QAAmB,EAAE,KAAuB;QAChE,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAE,CAAC;IAC/C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.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.17.10",
4
+ "version": "0.18.1",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "FSL-1.1-Apache-2.0",
@@ -20,10 +20,13 @@
20
20
  "@powersync/service-jsonbig": "^0.17.10"
21
21
  },
22
22
  "devDependencies": {
23
- "@types/node": "18.11.11"
23
+ "@types/node": "18.11.11",
24
+ "vitest": "^0.34.6"
24
25
  },
25
26
  "scripts": {
26
27
  "clean": "rm -r ./dist && tsc -b --clean",
27
- "build": "tsc -b"
28
+ "build": "tsc -b",
29
+ "build:tests": "tsc -b test/tsconfig.json",
30
+ "test": "vitest"
28
31
  }
29
32
  }