@powersync/service-sync-rules 0.40.0 → 0.42.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 (83) hide show
  1. package/dist/HydratedSyncConfig.d.ts +9 -2
  2. package/dist/HydratedSyncConfig.js +12 -1
  3. package/dist/HydratedSyncConfig.js.map +1 -1
  4. package/dist/HydrationState.d.ts +2 -0
  5. package/dist/HydrationState.js.map +1 -1
  6. package/dist/StorageVersion.js +2 -1
  7. package/dist/StorageVersion.js.map +1 -1
  8. package/dist/SyncConfig.d.ts +4 -3
  9. package/dist/SyncConfig.js +10 -11
  10. package/dist/SyncConfig.js.map +1 -1
  11. package/dist/compiler/bucket_resolver.d.ts +1 -0
  12. package/dist/compiler/bucket_resolver.js +22 -12
  13. package/dist/compiler/bucket_resolver.js.map +1 -1
  14. package/dist/compiler/compatibility.d.ts +38 -9
  15. package/dist/compiler/compatibility.js +81 -11
  16. package/dist/compiler/compatibility.js.map +1 -1
  17. package/dist/compiler/compiler.d.ts +81 -13
  18. package/dist/compiler/compiler.js +111 -15
  19. package/dist/compiler/compiler.js.map +1 -1
  20. package/dist/compiler/expression.d.ts +17 -15
  21. package/dist/compiler/expression.js +21 -12
  22. package/dist/compiler/expression.js.map +1 -1
  23. package/dist/compiler/filter.d.ts +4 -4
  24. package/dist/compiler/filter.js +5 -4
  25. package/dist/compiler/filter.js.map +1 -1
  26. package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
  27. package/dist/compiler/ir_to_sync_plan.js +40 -36
  28. package/dist/compiler/ir_to_sync_plan.js.map +1 -1
  29. package/dist/compiler/querier_graph.js +43 -24
  30. package/dist/compiler/querier_graph.js.map +1 -1
  31. package/dist/compiler/rows.d.ts +23 -29
  32. package/dist/compiler/rows.js +83 -59
  33. package/dist/compiler/rows.js.map +1 -1
  34. package/dist/compiler/table.d.ts +3 -2
  35. package/dist/compiler/table.js +5 -6
  36. package/dist/compiler/table.js.map +1 -1
  37. package/dist/events/CompiledEventSourceQuery.d.ts +51 -0
  38. package/dist/events/CompiledEventSourceQuery.js +119 -0
  39. package/dist/events/CompiledEventSourceQuery.js.map +1 -0
  40. package/dist/events/EventDescriptor.d.ts +26 -0
  41. package/dist/events/EventDescriptor.js +2 -0
  42. package/dist/events/EventDescriptor.js.map +1 -0
  43. package/dist/from_yaml.js +24 -20
  44. package/dist/from_yaml.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +2 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/json_schema.js +1 -1
  49. package/dist/json_schema.js.map +1 -1
  50. package/dist/schema-generators/RustSchemaGenerator.d.ts +22 -0
  51. package/dist/schema-generators/RustSchemaGenerator.js +120 -0
  52. package/dist/schema-generators/RustSchemaGenerator.js.map +1 -0
  53. package/dist/schema-generators/generators.d.ts +2 -0
  54. package/dist/schema-generators/generators.js +2 -0
  55. package/dist/schema-generators/generators.js.map +1 -1
  56. package/dist/schema-generators/schema-generators.d.ts +1 -0
  57. package/dist/schema-generators/schema-generators.js +1 -0
  58. package/dist/schema-generators/schema-generators.js.map +1 -1
  59. package/dist/sync_plan/evaluator/bucket_data_source.js +11 -53
  60. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
  61. package/dist/sync_plan/evaluator/index.d.ts +2 -7
  62. package/dist/sync_plan/evaluator/index.js +6 -7
  63. package/dist/sync_plan/evaluator/index.js.map +1 -1
  64. package/dist/sync_plan/evaluator/parameter_evaluator.js +11 -7
  65. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
  66. package/dist/sync_plan/evaluator/row_projection.d.ts +22 -0
  67. package/dist/sync_plan/evaluator/row_projection.js +71 -0
  68. package/dist/sync_plan/evaluator/row_projection.js.map +1 -0
  69. package/dist/sync_plan/plan.d.ts +36 -5
  70. package/dist/sync_plan/plan_equality_serialized.d.ts +12 -2
  71. package/dist/sync_plan/plan_equality_serialized.js +56 -0
  72. package/dist/sync_plan/plan_equality_serialized.js.map +1 -1
  73. package/dist/sync_plan/serialize.d.ts +35 -4
  74. package/dist/sync_plan/serialize.js +93 -16
  75. package/dist/sync_plan/serialize.js.map +1 -1
  76. package/package.json +1 -1
  77. package/schema/sync_rules.json +3 -2
  78. package/dist/events/SqlEventDescriptor.d.ts +0 -20
  79. package/dist/events/SqlEventDescriptor.js +0 -51
  80. package/dist/events/SqlEventDescriptor.js.map +0 -1
  81. package/dist/events/SqlEventSourceQuery.d.ts +0 -20
  82. package/dist/events/SqlEventSourceQuery.js +0 -125
  83. package/dist/events/SqlEventSourceQuery.js.map +0 -1
@@ -1,125 +0,0 @@
1
- import { parse } from 'pgsql-ast-parser';
2
- import { SqlRuleError } from '../errors.js';
3
- import { ExpressionType } from '../ExpressionType.js';
4
- import { BaseSqlDataQuery } from '../legacy/BaseSqlDataQuery.js';
5
- import { AvailableTable, SqlTools } from '../legacy/sql_filters.js';
6
- import { checkUnsupportedFeatures, isClauseError } from '../legacy/sql_support.js';
7
- import { TableQuerySchema } from '../legacy/TableQuerySchema.js';
8
- import { TablePattern } from '../TablePattern.js';
9
- import { isSelectStatement } from '../utils.js';
10
- /**
11
- * Defines how a Replicated Row is mapped to source parameters for events.
12
- */
13
- // TODO: Use Sync Streams compiler infrastruture instead of legacy data queries
14
- export class SqlEventSourceQuery extends BaseSqlDataQuery {
15
- static fromSql(sql, options, compatibility) {
16
- const parsed = parse(sql, { locationTracking: true });
17
- const schema = options.schema;
18
- if (parsed.length > 1) {
19
- throw new SqlRuleError('Only a single SELECT statement is supported', sql, parsed[1]?._location);
20
- }
21
- const q = parsed[0];
22
- if (!isSelectStatement(q)) {
23
- throw new SqlRuleError('Only SELECT statements are supported', sql, q._location);
24
- }
25
- let errors = [];
26
- errors.push(...checkUnsupportedFeatures(sql, q));
27
- if (q.from == null || q.from.length != 1 || q.from[0].type != 'table') {
28
- throw new SqlRuleError('Must SELECT from a single table', sql, q.from?.[0]._location);
29
- }
30
- const tableRef = q.from?.[0].name;
31
- if (tableRef?.name == null) {
32
- throw new SqlRuleError('Must SELECT from a single table', sql, q.from?.[0]._location);
33
- }
34
- const alias = AvailableTable.fromAst(tableRef);
35
- const sourceTable = new TablePattern(tableRef.schema ?? options.defaultSchema, tableRef.name);
36
- let querySchema = undefined;
37
- if (schema) {
38
- const tables = schema.getTables(sourceTable);
39
- if (tables.length == 0) {
40
- const e = new SqlRuleError(`Table ${sourceTable.schema}.${sourceTable.tablePattern} not found`, sql, q.from?.[0]?._location);
41
- e.type = 'warning';
42
- errors.push(e);
43
- }
44
- else {
45
- querySchema = new TableQuerySchema(tables, alias);
46
- }
47
- }
48
- const tools = new SqlTools({
49
- table: alias,
50
- parameterTables: [],
51
- valueTables: [alias],
52
- sql,
53
- schema: querySchema,
54
- compatibilityContext: compatibility
55
- });
56
- let extractors = [];
57
- for (let column of q.columns ?? []) {
58
- const name = tools.getOutputName(column);
59
- if (name != '*') {
60
- const clause = tools.compileRowValueExtractor(column.expr);
61
- if (isClauseError(clause)) {
62
- // Error logged already
63
- continue;
64
- }
65
- extractors.push({
66
- extract: (tables, output) => {
67
- output[name] = clause.evaluate(tables);
68
- },
69
- getTypes(schema, into) {
70
- const def = clause.getColumnDefinition(schema);
71
- into[name] = { name, type: def?.type ?? ExpressionType.NONE, originalType: def?.originalType };
72
- }
73
- });
74
- }
75
- else {
76
- extractors.push({
77
- extract: (tables, output) => {
78
- const row = tables[alias.nameInSchema];
79
- for (let key in row) {
80
- if (key.startsWith('_')) {
81
- continue;
82
- }
83
- output[key] ??= row[key];
84
- }
85
- },
86
- getTypes(schema, into) {
87
- for (let column of schema.getColumns(alias.nameInSchema)) {
88
- into[column.name] ??= column;
89
- }
90
- }
91
- });
92
- }
93
- }
94
- errors.push(...tools.errors);
95
- return new SqlEventSourceQuery({
96
- sourceTable,
97
- table: alias,
98
- sql,
99
- columns: q.columns ?? [],
100
- extractors: extractors,
101
- tools,
102
- bucketParameters: [],
103
- errors: errors
104
- });
105
- }
106
- constructor(options) {
107
- super(options);
108
- }
109
- evaluateRowWithErrors(table, row) {
110
- try {
111
- const tables = { [this.table.nameInSchema]: this.addSpecialParameters(table, row) };
112
- const data = this.transformRow(tables);
113
- return {
114
- result: {
115
- data
116
- },
117
- errors: []
118
- };
119
- }
120
- catch (e) {
121
- return { errors: [e.message ?? `Evaluating data query failed`] };
122
- }
123
- }
124
- }
125
- //# sourceMappingURL=SqlEventSourceQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SqlEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/SqlEventSourceQuery.ts"],"names":[],"mappings":"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"}