@powersync/service-sync-rules 0.39.0 → 0.41.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/TablePattern.d.ts +2 -0
- package/dist/TablePattern.js +18 -1
- package/dist/TablePattern.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 +35 -12
- package/dist/compiler/expression.js +49 -13
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.d.ts +4 -4
- package/dist/compiler/filter.js +7 -6
- 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 +47 -37
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +3 -3
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.js +45 -26
- 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/sqlite.d.ts +3 -2
- package/dist/compiler/sqlite.js +33 -3
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +3 -2
- package/dist/compiler/table.js +9 -7
- 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 +157 -189
- 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/sync_plan/engine/scalar_expression_engine.js +7 -0
- package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +11 -52
- 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/parameter_index_lookup_creator.js +2 -2
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.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/evaluator/table_processor_to_sql.d.ts +5 -2
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +10 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +49 -9
- 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 +54 -5
- package/dist/sync_plan/serialize.js +109 -19
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/yaml_validation.d.ts +73 -0
- package/dist/yaml_validation.js +140 -0
- package/dist/yaml_validation.js.map +1 -0
- 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/compiler/table.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/compiler/table.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAkC,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAgBzD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAExB;IACA;IAFX,YACW,MAAc,EACd,YAA2B;QAD3B,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAAe;IACnC,CAAC;CACL;AAED,MAAM,OAAgB,mBAAmB;IAClB;IAArB,YAAqB,MAAgC;QAAhC,WAAM,GAAN,MAAM,CAA0B;IAAG,CAAC;IAiBzD,MAAM,CAAC,aAAa,CAAC,CAAkB,EAAE,CAAkB;QACzD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,YAAY,oBAAoB,EAAE,CAAC;YACtC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,YAAY,oBAAoB,EAAE,CAAC;YAC7C,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAEnD;IASA;IAVX,YACW,YAAwC,EACjD,MAAgC;IAChC;;;;;;OAMG;IACM,uBAA4C;QAErD,KAAK,CAAC,MAAM,CAAC,CAAC;QAXL,iBAAY,GAAZ,YAAY,CAA4B;QASxC,4BAAuB,GAAvB,uBAAuB,CAAqB;IAGvD,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAgC;QACpC,OAAO,IAAI,uBAAuB,CAChC,IAAI,CAAC,YAAY,EACjB,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAChD,IAAI,CAAC,uBAAuB,CAC7B,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAOhD;IACA;IAPX,0DAA0D;IAC1D,oCAAoC;IACpC,0EAA0E;IAC1E,wBAAwB,CAA6C;IAErE,YACW,uBAA+B,EAC/B,UAAwC,EACjD,MAAgC;QAEhC,KAAK,CAAC,MAAM,CAAC,CAAC;QAJL,4BAAuB,GAAvB,uBAAuB,CAAQ;QAC/B,eAAU,GAAV,UAAU,CAA8B;QAKjD,qDAAqD;QACrD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;YAC3C,IAAI,SAAS,YAAY,oBAAoB,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;YAChG,CAAC;YAED,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;YACrG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,KAAsB;QAChC,IAAI,IAAI,CAAC,wBAAwB,KAAK,KAAK,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;YACnG,4GAA4G;YAC5G,6GAA6G;YAC7G,mEAAmE;YACnE,kHAAkH;YAClH,6FAA6F;YAC7F,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,WAAwC,EAAE,MAAoB;QAClF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/C,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,CAAC,KAA2B,EAAE,WAAwC;QACtF,OAAO,CACL,IAAI,CAAC,uBAAuB,IAAI,KAAK,CAAC,uBAAuB;YAC7D,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAgC;QACpC,OAAO,IAAI,oBAAoB,CAC7B,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,0BAA0B,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACxG,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CACjD,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IACvB,cAAc,GAAG,IAAI,GAAG,EAAsD,CAAC;IAC/E,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAE/D,gBAAgB,CAAqD;IAE7E,YAAY,kBAAkE,EAAE,SAAwB;QACtG,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAmC,CAAC,IAAI,EAAE,EAAE;YACtF,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;gBAChC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClG,CAAC;YACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;gBAChC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChG,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,MAAgC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAEzF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,MAAuB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAE/E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,MAAsC;QACpD,OAAO,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB,CAAC,IAAoB;QACtC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,QAA0B,EAAE,SAAwB;QAC/E,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEpE,MAAM,aAAa,GAAmD,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;QACpE,IAAI,KAAK,GAA0C,IAAI,CAAC;QAExD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;YACL,aAAa;YACb,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { HydrationInput } from '../BucketSource.js';
|
|
2
|
+
import { SourceTableRef } from '../SourceTableRef.js';
|
|
3
|
+
import { EvaluatedRowProjection } from '../sync_plan/evaluator/row_projection.js';
|
|
4
|
+
import { CompiledEventDescriptor as CompiledEventDescriptorPlan, CompiledEventSourceQuery as CompiledEventSourceQueryPlan } from '../sync_plan/plan.js';
|
|
5
|
+
import { TablePattern } from '../TablePattern.js';
|
|
6
|
+
import { EvaluateRowOptions, SqliteRow } from '../types.js';
|
|
7
|
+
import { EvaluatedEventRowWithErrors, EventDefinition, HydratedEventDescriptor } from './EventDescriptor.js';
|
|
8
|
+
/** A named event prepared from a compiled sync plan, before scalar expressions are prepared for evaluation. */
|
|
9
|
+
export declare class PreparedEventDefinition implements EventDefinition {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly sourceQueries: PreparedEventSourceQuery[];
|
|
12
|
+
/**
|
|
13
|
+
* Prepares each persisted payload query and resolves its source table against the sync config's default schema.
|
|
14
|
+
*/
|
|
15
|
+
constructor(source: CompiledEventDescriptorPlan, defaultSchema: string);
|
|
16
|
+
createEvaluator(input: HydrationInput): HydratedEventDescriptor;
|
|
17
|
+
getSourceTables(): Set<TablePattern>;
|
|
18
|
+
tableTriggersEvent(table: SourceTableRef): boolean;
|
|
19
|
+
}
|
|
20
|
+
/** An event source query prepared from a compiled sync plan, before scalar expressions are evaluated. */
|
|
21
|
+
export declare class PreparedEventSourceQuery {
|
|
22
|
+
readonly sourceTable: TablePattern;
|
|
23
|
+
private readonly variants;
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the source table and prepares each normalized query variant for later expression hydration.
|
|
26
|
+
*/
|
|
27
|
+
constructor(source: CompiledEventSourceQueryPlan, defaultSchema: string);
|
|
28
|
+
/**
|
|
29
|
+
* Returns whether this payload query evaluates rows from the given physical source table.
|
|
30
|
+
*/
|
|
31
|
+
applies(table: SourceTableRef): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Instantiates the query's scalar expressions so its variants can evaluate replicated rows.
|
|
34
|
+
*/
|
|
35
|
+
createEvaluator(input: HydrationInput): HydratedCompiledEventSourceQuery;
|
|
36
|
+
}
|
|
37
|
+
declare class HydratedCompiledEventSourceQuery {
|
|
38
|
+
readonly sourceTable: TablePattern;
|
|
39
|
+
private readonly variants;
|
|
40
|
+
constructor(sourceTable: TablePattern, variants: ((options: EvaluateRowOptions) => EvaluatedRowProjection[])[]);
|
|
41
|
+
/**
|
|
42
|
+
* Returns whether this hydrated query evaluates rows from the given physical source table.
|
|
43
|
+
*/
|
|
44
|
+
applies(table: SourceTableRef): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Evaluates the normalized query variants as alternative matching branches, returning every payload produced by the
|
|
47
|
+
* first matching branch and converting evaluation failures into event errors.
|
|
48
|
+
*/
|
|
49
|
+
evaluateRowWithErrors(table: SourceTableRef, row: SqliteRow): EvaluatedEventRowWithErrors;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { PendingRowProjection } from '../sync_plan/evaluator/row_projection.js';
|
|
2
|
+
/** A named event prepared from a compiled sync plan, before scalar expressions are prepared for evaluation. */
|
|
3
|
+
export class PreparedEventDefinition {
|
|
4
|
+
name;
|
|
5
|
+
sourceQueries;
|
|
6
|
+
/**
|
|
7
|
+
* Prepares each persisted payload query and resolves its source table against the sync config's default schema.
|
|
8
|
+
*/
|
|
9
|
+
constructor(source, defaultSchema) {
|
|
10
|
+
this.name = source.name;
|
|
11
|
+
this.sourceQueries = source.sourceQueries.map((query) => new PreparedEventSourceQuery(query, defaultSchema));
|
|
12
|
+
}
|
|
13
|
+
createEvaluator(input) {
|
|
14
|
+
return new HydratedCompiledEventDescriptor(this.name, this.sourceQueries.map((query) => query.createEvaluator(input)));
|
|
15
|
+
}
|
|
16
|
+
getSourceTables() {
|
|
17
|
+
return sourceTables(this.sourceQueries);
|
|
18
|
+
}
|
|
19
|
+
tableTriggersEvent(table) {
|
|
20
|
+
return this.sourceQueries.some((query) => query.applies(table));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** An event source query prepared from a compiled sync plan, before scalar expressions are evaluated. */
|
|
24
|
+
export class PreparedEventSourceQuery {
|
|
25
|
+
sourceTable;
|
|
26
|
+
variants;
|
|
27
|
+
/**
|
|
28
|
+
* Resolves the source table and prepares each normalized query variant for later expression hydration.
|
|
29
|
+
*/
|
|
30
|
+
constructor(source, defaultSchema) {
|
|
31
|
+
this.sourceTable = source.sourceTable.toTablePattern(defaultSchema);
|
|
32
|
+
this.variants = source.variants.map((variant) => new PendingRowProjection(variant, defaultSchema));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns whether this payload query evaluates rows from the given physical source table.
|
|
36
|
+
*/
|
|
37
|
+
applies(table) {
|
|
38
|
+
return this.sourceTable.matches(table);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Instantiates the query's scalar expressions so its variants can evaluate replicated rows.
|
|
42
|
+
*/
|
|
43
|
+
createEvaluator(input) {
|
|
44
|
+
return new HydratedCompiledEventSourceQuery(this.sourceTable, this.variants.map((variant) => variant.instantiate(input.scalarExpressions)));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class HydratedCompiledEventDescriptor {
|
|
48
|
+
name;
|
|
49
|
+
sourceQueries;
|
|
50
|
+
constructor(name, sourceQueries) {
|
|
51
|
+
this.name = name;
|
|
52
|
+
this.sourceQueries = sourceQueries;
|
|
53
|
+
}
|
|
54
|
+
evaluateRowWithErrors(options) {
|
|
55
|
+
const matchingQueries = this.sourceQueries.filter((query) => query.applies(options.sourceTable));
|
|
56
|
+
if (matchingQueries.length == 0) {
|
|
57
|
+
return {
|
|
58
|
+
results: [],
|
|
59
|
+
errors: [{ error: `No matching source query found for table ${options.sourceTable.name}` }]
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const results = [];
|
|
63
|
+
const errors = [];
|
|
64
|
+
for (const query of matchingQueries) {
|
|
65
|
+
const evaluated = query.evaluateRowWithErrors(options.sourceTable, options.record);
|
|
66
|
+
results.push(...evaluated.results);
|
|
67
|
+
errors.push(...evaluated.errors);
|
|
68
|
+
}
|
|
69
|
+
return { results, errors };
|
|
70
|
+
}
|
|
71
|
+
getSourceTables() {
|
|
72
|
+
return sourceTables(this.sourceQueries);
|
|
73
|
+
}
|
|
74
|
+
tableTriggersEvent(table) {
|
|
75
|
+
return this.sourceQueries.some((query) => query.applies(table));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
class HydratedCompiledEventSourceQuery {
|
|
79
|
+
sourceTable;
|
|
80
|
+
variants;
|
|
81
|
+
constructor(sourceTable, variants) {
|
|
82
|
+
this.sourceTable = sourceTable;
|
|
83
|
+
this.variants = variants;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns whether this hydrated query evaluates rows from the given physical source table.
|
|
87
|
+
*/
|
|
88
|
+
applies(table) {
|
|
89
|
+
return this.sourceTable.matches(table);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Evaluates the normalized query variants as alternative matching branches, returning every payload produced by the
|
|
93
|
+
* first matching branch and converting evaluation failures into event errors.
|
|
94
|
+
*/
|
|
95
|
+
evaluateRowWithErrors(table, row) {
|
|
96
|
+
try {
|
|
97
|
+
for (const evaluate of this.variants) {
|
|
98
|
+
const projected = evaluate({ sourceTable: table, record: row });
|
|
99
|
+
if (projected.length > 0) {
|
|
100
|
+
return { results: projected.map((result) => ({ data: result.data })), errors: [] };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { results: [], errors: [] };
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return {
|
|
107
|
+
results: [],
|
|
108
|
+
errors: [{ error: error instanceof Error ? error.message : 'Evaluating event query failed' }]
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Collects the physical source-table patterns referenced by a set of event payload queries.
|
|
115
|
+
*/
|
|
116
|
+
function sourceTables(queries) {
|
|
117
|
+
return new Set(queries.map((query) => query.sourceTable));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=CompiledEventSourceQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompiledEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/CompiledEventSourceQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HydrationInput } from '../BucketSource.js';
|
|
2
|
+
import { SourceTableRef } from '../SourceTableRef.js';
|
|
3
|
+
import { TablePattern } from '../TablePattern.js';
|
|
4
|
+
import { EvaluateRowOptions, EvaluationError, SqliteJsonRow } from '../types.js';
|
|
5
|
+
export type EvaluatedEventSourceRow = {
|
|
6
|
+
data: SqliteJsonRow;
|
|
7
|
+
};
|
|
8
|
+
export type EvaluatedEventRowWithErrors = {
|
|
9
|
+
/** All payloads produced by matching source queries. Their order is not significant. */
|
|
10
|
+
results: EvaluatedEventSourceRow[];
|
|
11
|
+
errors: EvaluationError[];
|
|
12
|
+
};
|
|
13
|
+
/** A parsed event definition whose compiled expressions have not yet been prepared for evaluation. */
|
|
14
|
+
export interface EventDefinition {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
createEvaluator(input: HydrationInput): HydratedEventDescriptor;
|
|
17
|
+
getSourceTables(): Set<TablePattern>;
|
|
18
|
+
tableTriggersEvent(table: SourceTableRef): boolean;
|
|
19
|
+
}
|
|
20
|
+
/** An event definition whose payload queries can evaluate replicated rows. */
|
|
21
|
+
export interface HydratedEventDescriptor {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
evaluateRowWithErrors(options: EvaluateRowOptions): EvaluatedEventRowWithErrors;
|
|
24
|
+
getSourceTables(): Set<TablePattern>;
|
|
25
|
+
tableTriggersEvent(table: SourceTableRef): boolean;
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventDescriptor.js","sourceRoot":"","sources":["../../src/events/EventDescriptor.ts"],"names":[],"mappings":""}
|