@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.
- package/dist/HydratedSyncConfig.d.ts +9 -2
- package/dist/HydratedSyncConfig.js +12 -1
- package/dist/HydratedSyncConfig.js.map +1 -1
- package/dist/HydrationState.d.ts +2 -0
- package/dist/HydrationState.js.map +1 -1
- package/dist/StorageVersion.js +2 -1
- package/dist/StorageVersion.js.map +1 -1
- package/dist/SyncConfig.d.ts +4 -3
- package/dist/SyncConfig.js +10 -11
- package/dist/SyncConfig.js.map +1 -1
- package/dist/compiler/bucket_resolver.d.ts +1 -0
- package/dist/compiler/bucket_resolver.js +22 -12
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/compatibility.d.ts +38 -9
- package/dist/compiler/compatibility.js +81 -11
- package/dist/compiler/compatibility.js.map +1 -1
- package/dist/compiler/compiler.d.ts +81 -13
- package/dist/compiler/compiler.js +111 -15
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/expression.d.ts +17 -15
- package/dist/compiler/expression.js +21 -12
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.d.ts +4 -4
- package/dist/compiler/filter.js +5 -4
- package/dist/compiler/filter.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
- package/dist/compiler/ir_to_sync_plan.js +40 -36
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/querier_graph.js +43 -24
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +23 -29
- package/dist/compiler/rows.js +83 -59
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/table.d.ts +3 -2
- package/dist/compiler/table.js +5 -6
- package/dist/compiler/table.js.map +1 -1
- package/dist/events/CompiledEventSourceQuery.d.ts +51 -0
- package/dist/events/CompiledEventSourceQuery.js +119 -0
- package/dist/events/CompiledEventSourceQuery.js.map +1 -0
- package/dist/events/EventDescriptor.d.ts +26 -0
- package/dist/events/EventDescriptor.js +2 -0
- package/dist/events/EventDescriptor.js.map +1 -0
- package/dist/from_yaml.js +24 -20
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +1 -1
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/RustSchemaGenerator.d.ts +22 -0
- package/dist/schema-generators/RustSchemaGenerator.js +120 -0
- package/dist/schema-generators/RustSchemaGenerator.js.map +1 -0
- package/dist/schema-generators/generators.d.ts +2 -0
- package/dist/schema-generators/generators.js +2 -0
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/schema-generators/schema-generators.d.ts +1 -0
- package/dist/schema-generators/schema-generators.js +1 -0
- package/dist/schema-generators/schema-generators.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +11 -53
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +2 -7
- package/dist/sync_plan/evaluator/index.js +6 -7
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.js +11 -7
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/row_projection.d.ts +22 -0
- package/dist/sync_plan/evaluator/row_projection.js +71 -0
- package/dist/sync_plan/evaluator/row_projection.js.map +1 -0
- package/dist/sync_plan/plan.d.ts +36 -5
- package/dist/sync_plan/plan_equality_serialized.d.ts +12 -2
- package/dist/sync_plan/plan_equality_serialized.js +56 -0
- package/dist/sync_plan/plan_equality_serialized.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +35 -4
- package/dist/sync_plan/serialize.js +93 -16
- package/dist/sync_plan/serialize.js.map +1 -1
- package/package.json +1 -1
- package/schema/sync_rules.json +3 -2
- package/dist/events/SqlEventDescriptor.d.ts +0 -20
- package/dist/events/SqlEventDescriptor.js +0 -51
- package/dist/events/SqlEventDescriptor.js.map +0 -1
- package/dist/events/SqlEventSourceQuery.d.ts +0 -20
- package/dist/events/SqlEventSourceQuery.js +0 -125
- 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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"}
|