@powersync/service-sync-rules 0.31.0 → 0.32.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.
Files changed (87) hide show
  1. package/dist/SqlSyncRules.d.ts +0 -7
  2. package/dist/SqlSyncRules.js +0 -1
  3. package/dist/SqlSyncRules.js.map +1 -1
  4. package/dist/SyncConfig.d.ts +5 -2
  5. package/dist/SyncConfig.js +6 -9
  6. package/dist/SyncConfig.js.map +1 -1
  7. package/dist/compatibility.d.ts +2 -1
  8. package/dist/compatibility.js +1 -0
  9. package/dist/compatibility.js.map +1 -1
  10. package/dist/compiler/bucket_resolver.d.ts +3 -3
  11. package/dist/compiler/bucket_resolver.js.map +1 -1
  12. package/dist/compiler/compiler.d.ts +4 -1
  13. package/dist/compiler/compiler.js +15 -2
  14. package/dist/compiler/compiler.js.map +1 -1
  15. package/dist/compiler/detect_dangerous_parameters.d.ts +10 -0
  16. package/dist/compiler/detect_dangerous_parameters.js +84 -0
  17. package/dist/compiler/detect_dangerous_parameters.js.map +1 -0
  18. package/dist/compiler/expression.d.ts +15 -3
  19. package/dist/compiler/expression.js +3 -2
  20. package/dist/compiler/expression.js.map +1 -1
  21. package/dist/compiler/filter.js +4 -2
  22. package/dist/compiler/filter.js.map +1 -1
  23. package/dist/compiler/filter_simplifier.js +5 -2
  24. package/dist/compiler/filter_simplifier.js.map +1 -1
  25. package/dist/compiler/ir_to_sync_plan.d.ts +8 -0
  26. package/dist/compiler/ir_to_sync_plan.js +64 -12
  27. package/dist/compiler/ir_to_sync_plan.js.map +1 -1
  28. package/dist/compiler/parser.js +44 -12
  29. package/dist/compiler/parser.js.map +1 -1
  30. package/dist/compiler/querier_graph.d.ts +2 -1
  31. package/dist/compiler/querier_graph.js +88 -26
  32. package/dist/compiler/querier_graph.js.map +1 -1
  33. package/dist/compiler/rows.d.ts +32 -3
  34. package/dist/compiler/rows.js +59 -2
  35. package/dist/compiler/rows.js.map +1 -1
  36. package/dist/compiler/scope.d.ts +4 -1
  37. package/dist/compiler/scope.js +13 -2
  38. package/dist/compiler/scope.js.map +1 -1
  39. package/dist/compiler/sqlite.d.ts +3 -11
  40. package/dist/compiler/sqlite.js +115 -79
  41. package/dist/compiler/sqlite.js.map +1 -1
  42. package/dist/compiler/table.d.ts +24 -7
  43. package/dist/compiler/table.js +58 -2
  44. package/dist/compiler/table.js.map +1 -1
  45. package/dist/from_yaml.d.ts +0 -4
  46. package/dist/from_yaml.js +18 -10
  47. package/dist/from_yaml.js.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/json_schema.js +1 -4
  52. package/dist/json_schema.js.map +1 -1
  53. package/dist/schema-generators/DartSchemaGenerator.d.ts +0 -9
  54. package/dist/schema-generators/DartSchemaGenerator.js +0 -55
  55. package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
  56. package/dist/schema-generators/DotNetSchemaGenerator.js +21 -28
  57. package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
  58. package/dist/schema-generators/generators.d.ts +1 -2
  59. package/dist/schema-generators/generators.js +1 -2
  60. package/dist/schema-generators/generators.js.map +1 -1
  61. package/dist/sync_plan/engine/javascript.js +13 -2
  62. package/dist/sync_plan/engine/javascript.js.map +1 -1
  63. package/dist/sync_plan/engine/scalar_expression_engine.d.ts +4 -2
  64. package/dist/sync_plan/engine/scalar_expression_engine.js +18 -0
  65. package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
  66. package/dist/sync_plan/engine/sqlite.js +2 -1
  67. package/dist/sync_plan/engine/sqlite.js.map +1 -1
  68. package/dist/sync_plan/evaluator/bucket_data_source.js +8 -6
  69. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
  70. package/dist/sync_plan/evaluator/bucket_source.js +1 -1
  71. package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
  72. package/dist/sync_plan/evaluator/index.d.ts +3 -1
  73. package/dist/sync_plan/evaluator/index.js +3 -1
  74. package/dist/sync_plan/evaluator/index.js.map +1 -1
  75. package/dist/sync_plan/evaluator/parameter_evaluator.js +22 -2
  76. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
  77. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +7 -6
  78. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
  79. package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +20 -0
  80. package/dist/sync_plan/evaluator/table_processor_to_sql.js +28 -0
  81. package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
  82. package/dist/sync_plan/plan.d.ts +51 -9
  83. package/dist/sync_plan/serialize.d.ts +24 -10
  84. package/dist/sync_plan/serialize.js +75 -15
  85. package/dist/sync_plan/serialize.js.map +1 -1
  86. package/package.json +2 -1
  87. package/schema/sync_rules.json +1 -4
@@ -0,0 +1,20 @@
1
+ import { TableValuedFunction, TableValuedFunctionOutput } from '../engine/scalar_expression_engine.js';
2
+ import { SqlExpression } from '../expression.js';
3
+ import * as plan from '../plan.js';
4
+ /**
5
+ * Utility to translate a {@link plan.TableProcessor} to a scalar SQL statement.
6
+ *
7
+ * This translates table-valued functions and filters. Output columns and partition keys have to be translated
8
+ * separately, because their order depends on the type of table processor (data source vs. parameter lookup creator).
9
+ */
10
+ export declare class TableProcessorToSqlHelper {
11
+ mapper: {
12
+ instantiation: plan.ColumnSqlParameterValue[];
13
+ tableValuedFunctions: Map<plan.TableProcessorTableValuedFunction, TableValuedFunction>;
14
+ transform(expr: SqlExpression<plan.SqlParameterValue>): SqlExpression<number | TableValuedFunctionOutput>;
15
+ transformWithoutTableValued(expr: SqlExpression<plan.ColumnSqlParameterValue>): SqlExpression<number>;
16
+ };
17
+ readonly filterExpressions: SqlExpression<number | TableValuedFunctionOutput>[];
18
+ get tableValuedFunctions(): TableValuedFunction[];
19
+ constructor(source: plan.TableProcessor);
20
+ }
@@ -0,0 +1,28 @@
1
+ import { mapExternalDataToInstantiation } from '../engine/scalar_expression_engine.js';
2
+ /**
3
+ * Utility to translate a {@link plan.TableProcessor} to a scalar SQL statement.
4
+ *
5
+ * This translates table-valued functions and filters. Output columns and partition keys have to be translated
6
+ * separately, because their order depends on the type of table processor (data source vs. parameter lookup creator).
7
+ */
8
+ export class TableProcessorToSqlHelper {
9
+ mapper = mapExternalDataToInstantiation();
10
+ filterExpressions = [];
11
+ get tableValuedFunctions() {
12
+ return [...this.mapper.tableValuedFunctions.values()];
13
+ }
14
+ constructor(source) {
15
+ // Add table-valued functions and filters
16
+ for (const fn of source.tableValuedFunctions) {
17
+ const mapped = {
18
+ name: fn.functionName,
19
+ inputs: fn.functionInputs.map((i) => this.mapper.transformWithoutTableValued(i))
20
+ };
21
+ this.mapper.tableValuedFunctions.set(fn, mapped);
22
+ }
23
+ for (const filter of source.filters) {
24
+ this.filterExpressions.push(this.mapper.transform(filter));
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=table_processor_to_sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table_processor_to_sql.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/table_processor_to_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAG/B,MAAM,uCAAuC,CAAC;AAK/C;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IACpC,MAAM,GAAG,8BAA8B,EAAgC,CAAC;IAC/D,iBAAiB,GAAwD,EAAE,CAAC;IAErF,IAAI,oBAAoB;QACtB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,MAA2B;QACrC,yCAAyC;QACzC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAwB;gBAClC,IAAI,EAAE,EAAE,CAAC,YAAY;gBACrB,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;aACjF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
@@ -44,9 +44,9 @@ export interface TableProcessor {
44
44
  /**
45
45
  * All of these expressions exclusively depend on the {@link sourceTable}.
46
46
  *
47
- * All of the filters must evaluate to a "true-ish" value for the row to be processed.
47
+ * All of the filters must evaluate to a truthy (according to SQL definitions) value for the row to be processed.
48
48
  */
49
- filters: SqlExpression<ColumnSqlParameterValue>[];
49
+ filters: SqlExpression<TableProcessorData>[];
50
50
  /**
51
51
  * How to partition rows.
52
52
  *
@@ -54,9 +54,51 @@ export interface TableProcessor {
54
54
  * input values for the lookup.
55
55
  */
56
56
  parameters: PartitionKey[];
57
+ tableValuedFunctions: TableProcessorTableValuedFunction[];
58
+ }
59
+ /**
60
+ * A table-valued partition key evaluates a table-valued function on the source or parameter row to potentially generate
61
+ * multiple buckets for one input row.
62
+ *
63
+ * For instance, `SELECT p.* FROM posts p WHERE subscription.parameter('tag') IN (SELECT value FROM json_each(p.tags))`
64
+ * would put a row with `tags == '["foo", "bar"]'` into two buckets representing the expanded parameters.
65
+ *
66
+ * Note that the buckets a row is put into are derived from the cartesian product of all partition keys. In particular,
67
+ * this means that:
68
+ *
69
+ * - If a table-valued key evaluates to zero rows, the source row is not put into any buckets regardless of what other
70
+ * partition keys might exist.
71
+ * - Two table-valued partition keys evaluating two multiple rows leads to a quadratic amount of buckets being
72
+ * generated.
73
+ */
74
+ export interface TableProcessorTableValuedFunction {
75
+ functionName: string;
76
+ functionInputs: SqlExpression<ColumnSqlParameterValue>[];
57
77
  }
78
+ export interface TableProcessorTableValuedFunctionOutput {
79
+ /**
80
+ * A reference to the added table-valued function.
81
+ */
82
+ function: TableProcessorTableValuedFunction;
83
+ /**
84
+ * The column of the table-valued function being referenced.
85
+ */
86
+ outputName: string;
87
+ }
88
+ /**
89
+ * External data that can be used in expressions for {@link TableProcessor}s.
90
+ *
91
+ * This allows references to the row in the table being processed, and references to outputs of joined
92
+ * {@link TableProcessor#tableValuedFunctions}.
93
+ */
94
+ export type TableProcessorData = ColumnSqlParameterValue | TableProcessorTableValuedFunctionOutput;
95
+ /**
96
+ * A scalar partition key evaluates to a single value in the source or parameter row. For instance, a stream definition
97
+ * like `SELECT * FROM users WHERE id = auth.user_id()` would generate a scalar key to partition users by the `id`
98
+ * column.
99
+ */
58
100
  export interface PartitionKey {
59
- expr: SqlExpression<ColumnSqlParameterValue>;
101
+ expr: SqlExpression<TableProcessorData>;
60
102
  }
61
103
  /**
62
104
  * A description for a data source processing rows to replicate.
@@ -78,7 +120,7 @@ export interface StreamDataSource extends TableProcessor {
78
120
  columns: ColumnSource[];
79
121
  }
80
122
  export type ColumnSource = 'star' | {
81
- expr: SqlExpression<ColumnSqlParameterValue>;
123
+ expr: SqlExpression<TableProcessorData>;
82
124
  alias: string;
83
125
  };
84
126
  /**
@@ -116,7 +158,7 @@ export interface StreamParameterIndexLookupCreator extends TableProcessor {
116
158
  * streams because the output of parameters might be passed through additional stages or transformed by the querier
117
159
  * before becoming a parameter value.
118
160
  */
119
- outputs: SqlExpression<ColumnSqlParameterValue>[];
161
+ outputs: SqlExpression<TableProcessorData>[];
120
162
  }
121
163
  export interface StreamOptions {
122
164
  name: string;
@@ -149,7 +191,6 @@ export interface StreamQuerier {
149
191
  bucket: StreamBucketDataSource;
150
192
  sourceInstantiation: ParameterValue[];
151
193
  }
152
- export type SqlParameterValue = ColumnSqlParameterValue | RequestSqlParameterValue;
153
194
  /**
154
195
  * A value that resolves to a given column in a row being processed.
155
196
  */
@@ -164,10 +205,11 @@ export type ConnectionParameterSource = 'auth' | 'subscription' | 'connection';
164
205
  export interface RequestSqlParameterValue {
165
206
  request: ConnectionParameterSource;
166
207
  }
208
+ export type SqlParameterValue = ColumnSqlParameterValue | RequestSqlParameterValue | TableProcessorTableValuedFunctionOutput;
167
209
  /**
168
210
  * A lookup returning multiple rows when instantiated.
169
211
  */
170
- export type ExpandingLookup = ParameterLookup | EvaluateTableValuedFunction;
212
+ export type ExpandingLookup = ParameterLookup | EvaluateTableValuedFunction<RequestSqlParameterValue>;
171
213
  export interface ParameterLookup {
172
214
  type: 'parameter';
173
215
  lookup: StreamParameterIndexLookupCreator;
@@ -176,10 +218,10 @@ export interface ParameterLookup {
176
218
  */
177
219
  instantiation: ParameterValue[];
178
220
  }
179
- export interface EvaluateTableValuedFunction {
221
+ export interface EvaluateTableValuedFunction<Input> {
180
222
  type: 'table_valued';
181
223
  functionName: string;
182
- functionInputs: SqlExpression<RequestSqlParameterValue>[];
224
+ functionInputs: SqlExpression<Input>[];
183
225
  outputs: SqlExpression<ColumnSqlParameterValue>[];
184
226
  filters: SqlExpression<ColumnSqlParameterValue>[];
185
227
  }
@@ -1,6 +1,6 @@
1
1
  import { ParameterLookupScope } from '../HydrationState.js';
2
2
  import { SqlExpression } from './expression.js';
3
- import { ColumnSource, ColumnSqlParameterValue, PartitionKey, RequestSqlParameterValue, StreamOptions, SyncPlan } from './plan.js';
3
+ import { ColumnSqlParameterValue, RequestSqlParameterValue, StreamOptions, SyncPlan, TableProcessorTableValuedFunction } from './plan.js';
4
4
  /**
5
5
  * Serializes a sync plan into a simple JSON object.
6
6
  *
@@ -8,10 +8,10 @@ import { ColumnSource, ColumnSqlParameterValue, PartitionKey, RequestSqlParamete
8
8
  * queriers to bucket creators. To represent this efficiently, we assign numbers to referenced elements while
9
9
  * serializing instead of duplicating definitions.
10
10
  */
11
- export declare function serializeSyncPlan(plan: SyncPlan): SerializedSyncPlanUnstable;
11
+ export declare function serializeSyncPlan(plan: SyncPlan): SerializedSyncPlanV1;
12
12
  export declare function deserializeSyncPlan(serialized: unknown): SyncPlan;
13
- interface SerializedSyncPlanUnstable {
14
- version: 'unstable';
13
+ interface SerializedSyncPlanV1 {
14
+ version: number;
15
15
  dataSources: SerializedDataSource[];
16
16
  buckets: SerializedBucketDataSource[];
17
17
  parameterIndexes: SerializedParameterIndexLookupCreator[];
@@ -27,21 +27,35 @@ interface SerializedTablePattern {
27
27
  schema: string | null;
28
28
  table: string;
29
29
  }
30
+ interface SerializedTableProcessorTableValuedFunctionOutput {
31
+ function: number;
32
+ outputName: string;
33
+ }
34
+ type SerializedTableProcessorData = ColumnSqlParameterValue | SerializedTableProcessorTableValuedFunctionOutput;
35
+ interface SerializedPartitionKey {
36
+ expr: SqlExpression<SerializedTableProcessorData>;
37
+ }
38
+ type SerializedColumnSource = 'star' | {
39
+ expr: SqlExpression<SerializedTableProcessorData>;
40
+ alias: string;
41
+ };
30
42
  interface SerializedDataSource {
31
43
  table: SerializedTablePattern;
32
44
  outputTableName?: string;
33
45
  hash: number;
34
- columns: ColumnSource[];
35
- filters: SqlExpression<ColumnSqlParameterValue>[];
36
- partitionBy: PartitionKey[];
46
+ columns: SerializedColumnSource[];
47
+ filters: SqlExpression<SerializedTableProcessorData>[];
48
+ tableValuedFunctions: TableProcessorTableValuedFunction[];
49
+ partitionBy: SerializedPartitionKey[];
37
50
  }
38
51
  interface SerializedParameterIndexLookupCreator {
39
52
  table: SerializedTablePattern;
40
53
  hash: number;
41
54
  lookupScope: ParameterLookupScope;
42
- output: SqlExpression<ColumnSqlParameterValue>[];
43
- filters: SqlExpression<ColumnSqlParameterValue>[];
44
- partitionBy: PartitionKey[];
55
+ output: SqlExpression<SerializedTableProcessorData>[];
56
+ filters: SqlExpression<SerializedTableProcessorData>[];
57
+ tableValuedFunctions: TableProcessorTableValuedFunction[];
58
+ partitionBy: SerializedPartitionKey[];
45
59
  }
46
60
  interface SerializedStream {
47
61
  stream: StreamOptions;
@@ -1,4 +1,5 @@
1
1
  import { ImplicitSchemaTablePattern, TablePattern } from '../TablePattern.js';
2
+ import { MapSourceVisitor, visitExpr } from './expression_visitor.js';
2
3
  /**
3
4
  * Serializes a sync plan into a simple JSON object.
4
5
  *
@@ -11,6 +12,18 @@ export function serializeSyncPlan(plan) {
11
12
  const bucketIndex = new Map();
12
13
  const parameterIndex = new Map();
13
14
  const expandingLookups = new Map();
15
+ const addedTableValuedFunctions = new Map();
16
+ const replaceFunctionReferenceWithIndex = new MapSourceVisitor((value) => {
17
+ if ('function' in value) {
18
+ return { function: addedTableValuedFunctions.get(value.function), outputName: value.outputName };
19
+ }
20
+ else {
21
+ return value;
22
+ }
23
+ });
24
+ function serializeTableProcessorDataExpr(expr) {
25
+ return visitExpr(replaceFunctionReferenceWithIndex, expr, null);
26
+ }
14
27
  function serializeTablePattern(pattern) {
15
28
  return {
16
29
  connection: pattern.connectionTag,
@@ -18,6 +31,17 @@ export function serializeSyncPlan(plan) {
18
31
  table: pattern.tablePattern
19
32
  };
20
33
  }
34
+ function serializeTableValued(source) {
35
+ return source.tableValuedFunctions.map((fn, i) => {
36
+ addedTableValuedFunctions.set(fn, i);
37
+ return fn;
38
+ });
39
+ }
40
+ function translateParameters(source) {
41
+ return source.parameters.map((key) => {
42
+ return { expr: serializeTableProcessorDataExpr(key.expr) };
43
+ });
44
+ }
21
45
  function serializeDataSources() {
22
46
  return plan.dataSources.map((source, i) => {
23
47
  dataSourceIndex.set(source, i);
@@ -25,9 +49,17 @@ export function serializeSyncPlan(plan) {
25
49
  hash: source.hashCode,
26
50
  table: serializeTablePattern(source.sourceTable),
27
51
  outputTableName: source.outputTableName,
28
- filters: source.filters,
29
- partitionBy: source.parameters,
30
- columns: source.columns
52
+ tableValuedFunctions: serializeTableValued(source),
53
+ filters: source.filters.map(serializeTableProcessorDataExpr),
54
+ partitionBy: translateParameters(source),
55
+ columns: source.columns.map((c) => {
56
+ if (c == 'star') {
57
+ return 'star';
58
+ }
59
+ else {
60
+ return { expr: serializeTableProcessorDataExpr(c.expr), alias: c.alias };
61
+ }
62
+ })
31
63
  };
32
64
  });
33
65
  }
@@ -37,9 +69,10 @@ export function serializeSyncPlan(plan) {
37
69
  return {
38
70
  hash: source.hashCode,
39
71
  table: serializeTablePattern(source.sourceTable),
40
- filters: source.filters,
41
- partitionBy: source.parameters,
42
- output: source.outputs,
72
+ tableValuedFunctions: serializeTableValued(source),
73
+ filters: source.filters.map(serializeTableProcessorDataExpr),
74
+ partitionBy: translateParameters(source),
75
+ output: source.outputs.map((out) => visitExpr(replaceFunctionReferenceWithIndex, out, null)),
43
76
  lookupScope: source.defaultLookupScope
44
77
  };
45
78
  });
@@ -92,7 +125,7 @@ export function serializeSyncPlan(plan) {
92
125
  };
93
126
  }
94
127
  return {
95
- version: 'unstable', // TODO: Mature to 1 before storing in bucket storage
128
+ version: 1,
96
129
  dataSources: serializeDataSources(),
97
130
  buckets: plan.buckets.map((bkt, index) => {
98
131
  bucketIndex.set(bkt, index);
@@ -110,8 +143,7 @@ export function serializeSyncPlan(plan) {
110
143
  };
111
144
  }
112
145
  export function deserializeSyncPlan(serialized) {
113
- // TODO: Mature to version 1
114
- if (serialized.version != 'unstable') {
146
+ if (serialized.version != 1) {
115
147
  throw new Error('Unknown sync plan version passed to deserializeSyncPlan()');
116
148
  }
117
149
  function deserializeTablePattern(pattern) {
@@ -122,15 +154,41 @@ export function deserializeSyncPlan(serialized) {
122
154
  return new ImplicitSchemaTablePattern(null, pattern.table);
123
155
  }
124
156
  }
157
+ let tableValuedFunctionsInScope = [];
158
+ const replaceFunctionIndexWithReference = new MapSourceVisitor((value) => {
159
+ if ('function' in value) {
160
+ return { function: tableValuedFunctionsInScope[value.function], outputName: value.outputName };
161
+ }
162
+ else {
163
+ return value;
164
+ }
165
+ });
166
+ function deserializeTableProcessorDataExpr(expr) {
167
+ return visitExpr(replaceFunctionIndexWithReference, expr, null);
168
+ }
169
+ function deserializeParameters(source) {
170
+ return source.map((serializedKey) => {
171
+ return { expr: deserializeTableProcessorDataExpr(serializedKey.expr) };
172
+ });
173
+ }
125
174
  const plan = serialized;
126
175
  const dataSources = plan.dataSources.map((source) => {
176
+ const functions = (tableValuedFunctionsInScope = source.tableValuedFunctions);
127
177
  return {
128
178
  hashCode: source.hash,
129
179
  sourceTable: deserializeTablePattern(source.table),
180
+ tableValuedFunctions: functions,
130
181
  outputTableName: source.outputTableName,
131
- filters: source.filters,
132
- parameters: source.partitionBy,
133
- columns: source.columns
182
+ filters: source.filters.map(deserializeTableProcessorDataExpr),
183
+ parameters: deserializeParameters(source.partitionBy),
184
+ columns: source.columns.map((c) => {
185
+ if (c == 'star') {
186
+ return 'star';
187
+ }
188
+ else {
189
+ return { expr: deserializeTableProcessorDataExpr(c.expr), alias: c.alias };
190
+ }
191
+ })
134
192
  };
135
193
  });
136
194
  const buckets = plan.buckets.map((bkt) => {
@@ -141,12 +199,14 @@ export function deserializeSyncPlan(serialized) {
141
199
  };
142
200
  });
143
201
  const parameterIndexes = plan.parameterIndexes.map((source) => {
202
+ const functions = (tableValuedFunctionsInScope = source.tableValuedFunctions);
144
203
  return {
145
204
  hashCode: source.hash,
146
205
  sourceTable: deserializeTablePattern(source.table),
147
- filters: source.filters,
148
- parameters: source.partitionBy,
149
- outputs: source.output,
206
+ tableValuedFunctions: functions,
207
+ filters: source.filters.map(deserializeTableProcessorDataExpr),
208
+ parameters: deserializeParameters(source.partitionBy),
209
+ outputs: source.output.map((out) => visitExpr(replaceFunctionIndexWithReference, out, null)),
150
210
  defaultLookupScope: source.lookupScope
151
211
  };
152
212
  });
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/sync_plan/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAoB9E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6C,CAAC;IAC5E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAErE,SAAS,qBAAqB,CAAC,OAAmC;QAChE,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,aAAa;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,YAAY;SAC5B,CAAC;IACJ,CAAC;IAED,SAAS,oBAAoB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;aACO,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,yBAAyB;QAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE9B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,MAAM,EAAE,MAAM,CAAC,OAAO;gBACtB,WAAW,EAAE,MAAM,CAAC,kBAAkB;aACS,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,uBAAuB,CAAC,KAAqB;QACpD,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAqB;QACnD,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YAC5C,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;gBAC5B,MAAM,GAAG,GAAoB;oBAC3B,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,YAAY;iBACxB,CAAC;gBACF,IAAI,MAAiC,CAAC;gBAEtC,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC1B,MAAM,GAAG;wBACP,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE;wBACrC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC;qBAC5D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG;wBACP,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;wBAC5B,cAAc,EAAE,CAAC,CAAC,cAAc;wBAChC,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC;gBACJ,CAAC;gBAED,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE;YACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,uBAAuB,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU,EAAE,qDAAqD;QAC1E,WAAW,EAAE,oBAAoB,EAAE;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;aACzD,CAAC;QACJ,CAAC,CAAC;QACF,gBAAgB,EAAE,yBAAyB,EAAE;QAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC;SACjD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAmB;IACrD,4BAA4B;IAC5B,IAAK,UAAyC,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,uBAAuB,CAAC,OAA+B;QAC9D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,UAAwC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAClD,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;SACG,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,IAAI;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACnB,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5D,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAClD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,kBAAkB,EAAE,MAAM,CAAC,WAAW;SACK,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,MAA2B,EAAE,KAA+B;QAC7F,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC5D,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC;YACJ,KAAK,cAAc;gBACjB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,SAAS,0BAA0B,CAAC,MAA2B,EAAE,MAAiC;QAChG,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,WAAW;gBACd,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;oBACvC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBAC3D,CAAC;YAC9B,KAAK,cAAc;gBACjB,OAAO;oBACL,IAAI,EAAE,cAAc;oBACpB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACc,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,SAAS,wBAAwB,CAAC,MAA+B;QAC/D,MAAM,YAAY,GAAwB,EAAE,CAAC;QAC7C,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAClD,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,KAAK,MAAM,iBAAiB,IAAI,eAAe,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACvG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC;SAC3B,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,OAAO;QACP,gBAAgB;QAChB,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/sync_plan/serialize.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.31.0",
4
+ "version": "0.32.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "FSL-1.1-ALv2",
@@ -23,6 +23,7 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.16.2",
26
+ "ebnf": "^1.9.1",
26
27
  "vitest": "^4.0.16"
27
28
  },
28
29
  "scripts": {
@@ -167,7 +167,7 @@
167
167
  "type": "integer",
168
168
  "default": 1,
169
169
  "minimum": 1,
170
- "exclusiveMaximum": 3
170
+ "exclusiveMaximum": 4
171
171
  },
172
172
  "timestamp_max_precision": {
173
173
  "type": "string",
@@ -178,9 +178,6 @@
178
178
  "nanoseconds"
179
179
  ]
180
180
  },
181
- "sync_config_compiler": {
182
- "type": "boolean"
183
- },
184
181
  "timestamps_iso8601": {
185
182
  "type": "boolean",
186
183
  "description": "Enabled by default starting from edition 2: Consistently renders timestamps with an ISO 8601-compatible format (previous versions used a space instead of a T to separate date and time)."