@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.
- package/dist/SqlSyncRules.d.ts +0 -7
- package/dist/SqlSyncRules.js +0 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/SyncConfig.d.ts +5 -2
- package/dist/SyncConfig.js +6 -9
- package/dist/SyncConfig.js.map +1 -1
- package/dist/compatibility.d.ts +2 -1
- package/dist/compatibility.js +1 -0
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/bucket_resolver.d.ts +3 -3
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/compiler.d.ts +4 -1
- package/dist/compiler/compiler.js +15 -2
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/detect_dangerous_parameters.d.ts +10 -0
- package/dist/compiler/detect_dangerous_parameters.js +84 -0
- package/dist/compiler/detect_dangerous_parameters.js.map +1 -0
- package/dist/compiler/expression.d.ts +15 -3
- package/dist/compiler/expression.js +3 -2
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.js +4 -2
- package/dist/compiler/filter.js.map +1 -1
- package/dist/compiler/filter_simplifier.js +5 -2
- package/dist/compiler/filter_simplifier.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +8 -0
- package/dist/compiler/ir_to_sync_plan.js +64 -12
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +44 -12
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.d.ts +2 -1
- package/dist/compiler/querier_graph.js +88 -26
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +32 -3
- package/dist/compiler/rows.js +59 -2
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/scope.d.ts +4 -1
- package/dist/compiler/scope.js +13 -2
- package/dist/compiler/scope.js.map +1 -1
- package/dist/compiler/sqlite.d.ts +3 -11
- package/dist/compiler/sqlite.js +115 -79
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +24 -7
- package/dist/compiler/table.js +58 -2
- package/dist/compiler/table.js.map +1 -1
- package/dist/from_yaml.d.ts +0 -4
- package/dist/from_yaml.js +18 -10
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +1 -4
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +0 -9
- package/dist/schema-generators/DartSchemaGenerator.js +0 -55
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.js +21 -28
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/generators.d.ts +1 -2
- package/dist/schema-generators/generators.js +1 -2
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +13 -2
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/engine/scalar_expression_engine.d.ts +4 -2
- package/dist/sync_plan/engine/scalar_expression_engine.js +18 -0
- package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
- package/dist/sync_plan/engine/sqlite.js +2 -1
- package/dist/sync_plan/engine/sqlite.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +8 -6
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +3 -1
- package/dist/sync_plan/evaluator/index.js +3 -1
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.js +22 -2
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +7 -6
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +20 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +28 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
- package/dist/sync_plan/plan.d.ts +51 -9
- package/dist/sync_plan/serialize.d.ts +24 -10
- package/dist/sync_plan/serialize.js +75 -15
- package/dist/sync_plan/serialize.js.map +1 -1
- package/package.json +2 -1
- package/schema/sync_rules.json +1 -4
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -11,13 +11,6 @@ export interface SyncRulesOptions {
|
|
|
11
11
|
*/
|
|
12
12
|
defaultSchema: string;
|
|
13
13
|
throwOnError?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Whether to allow the option of using the new sync compiler.
|
|
16
|
-
*
|
|
17
|
-
* This is currently disabled outside of tests because the format of sync plans is still unstable and we can't support
|
|
18
|
-
* deployments based on it yet. Once we have a stable sync plan, this option can be removed.
|
|
19
|
-
*/
|
|
20
|
-
allowNewSyncCompiler?: boolean;
|
|
21
14
|
}
|
|
22
15
|
export interface RequestedStream {
|
|
23
16
|
/**
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -22,7 +22,6 @@ export class SqlSyncRules extends SyncConfig {
|
|
|
22
22
|
static fromYaml(yaml, options) {
|
|
23
23
|
const parser = new SyncConfigFromYaml({
|
|
24
24
|
throwOnError: options.throwOnError ?? true,
|
|
25
|
-
allowNewSyncCompiler: options.allowNewSyncCompiler ?? false,
|
|
26
25
|
schema: options.schema,
|
|
27
26
|
defaultSchema: options.defaultSchema
|
|
28
27
|
}, yaml);
|
package/dist/SqlSyncRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAqDpD,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,MAAM,MAAM,GAAG,IAAI,kBAAkB,CACnC;YACE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,EACD,IAAI,CACL,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
|
package/dist/SyncConfig.d.ts
CHANGED
|
@@ -24,9 +24,12 @@ export declare abstract class SyncConfig {
|
|
|
24
24
|
/**
|
|
25
25
|
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
26
26
|
*
|
|
27
|
-
*
|
|
27
|
+
* Note: versionedBucketIds is not checked here: It is set at a higher level based
|
|
28
|
+
* on the storage version of the persisted sync rules, and used in hydrationState.
|
|
29
|
+
*
|
|
30
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state.
|
|
28
31
|
*/
|
|
29
|
-
hydrate(params
|
|
32
|
+
hydrate(params: CreateSourceParams): HydratedSyncRules;
|
|
30
33
|
applyRowContext<MaybeToast extends undefined = never>(source: SqliteRow<SqliteInputValue | MaybeToast>): SqliteRow<SqliteValue | MaybeToast>;
|
|
31
34
|
protected writeSourceTables(sourceTables: Map<String, TablePattern>): void;
|
|
32
35
|
getSourceTables(): TablePattern[];
|
package/dist/SyncConfig.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { CompatibilityContext
|
|
1
|
+
import { CompatibilityContext } from './compatibility.js';
|
|
2
2
|
import { HydratedSyncRules } from './HydratedSyncRules.js';
|
|
3
|
-
import { DEFAULT_HYDRATION_STATE } from './HydrationState.js';
|
|
4
3
|
import { applyRowContext } from './utils.js';
|
|
5
4
|
/**
|
|
6
5
|
* A class describing how the sync process has been configured (i.e. which buckets and parameters to create and how to
|
|
@@ -22,17 +21,15 @@ export class SyncConfig {
|
|
|
22
21
|
/**
|
|
23
22
|
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
24
23
|
*
|
|
25
|
-
*
|
|
24
|
+
* Note: versionedBucketIds is not checked here: It is set at a higher level based
|
|
25
|
+
* on the storage version of the persisted sync rules, and used in hydrationState.
|
|
26
|
+
*
|
|
27
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state.
|
|
26
28
|
*/
|
|
27
29
|
hydrate(params) {
|
|
28
|
-
let hydrationState = params?.hydrationState;
|
|
29
|
-
if (hydrationState == null || !this.compatibility.isEnabled(CompatibilityOption.versionedBucketIds)) {
|
|
30
|
-
hydrationState = DEFAULT_HYDRATION_STATE;
|
|
31
|
-
}
|
|
32
|
-
const resolvedParams = { hydrationState };
|
|
33
30
|
return new HydratedSyncRules({
|
|
34
31
|
definition: this,
|
|
35
|
-
createParams:
|
|
32
|
+
createParams: params,
|
|
36
33
|
bucketDataSources: this.bucketDataSources,
|
|
37
34
|
bucketParameterIndexLookupCreators: this.bucketParameterLookupSources,
|
|
38
35
|
eventDescriptors: this.eventDescriptors,
|
package/dist/SyncConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/compatibility.d.ts
CHANGED
package/dist/compatibility.js
CHANGED
|
@@ -2,6 +2,7 @@ export var CompatibilityEdition;
|
|
|
2
2
|
(function (CompatibilityEdition) {
|
|
3
3
|
CompatibilityEdition[CompatibilityEdition["LEGACY"] = 1] = "LEGACY";
|
|
4
4
|
CompatibilityEdition[CompatibilityEdition["SYNC_STREAMS"] = 2] = "SYNC_STREAMS";
|
|
5
|
+
CompatibilityEdition[CompatibilityEdition["COMPILED_STREAMS"] = 3] = "COMPILED_STREAMS";
|
|
5
6
|
})(CompatibilityEdition || (CompatibilityEdition = {}));
|
|
6
7
|
export class TimeValuePrecision {
|
|
7
8
|
name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,mEAAU,CAAA;IACV,+EAAgB,CAAA;IAChB,uFAAoB,CAAA;AACtB,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,OAAO,kBAAkB;IAElB;IACA;IAFX,YACW,IAAY,EACZ,eAAuB;QADvB,SAAI,GAAJ,IAAI,CAAQ;QACZ,oBAAe,GAAf,eAAe,CAAQ;IAC/B,CAAC;IAEJ,MAAM,CAAC,OAAO,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,MAAM,GAAuC,MAAM,CAAC,MAAM,CAAC;QAChE,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;;AAGL;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IAEnB;IACA;IACA;IAHX,YACW,IAAY,EACZ,WAAmB,EACnB,OAA6B;QAF7B,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAsB;IACrC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,GAAG,IAAI,mBAAmB,CAChD,oBAAoB,EACpB,+IAA+I,EAC/I,oBAAoB,CAAC,YAAY,CAClC,CAAC;IAEF,MAAM,CAAC,kBAAkB,GAAG,IAAI,mBAAmB,CACjD,sBAAsB,EACtB,oJAAoJ,EACpJ,oBAAoB,CAAC,YAAY,CAClC,CAAC;IAEF,MAAM,CAAC,gBAAgB,GAAG,IAAI,mBAAmB,CAC/C,oBAAoB,EACpB,+OAA+O,EAC/O,oBAAoB,CAAC,YAAY,CAClC,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,IAAI,mBAAmB,CAC1C,uBAAuB,EACvB,0FAA0F,EAC1F,oBAAoB,CAAC,YAAY,CAClC,CAAC;IAEF,MAAM,CAAC,MAAM,GAAwC,MAAM,CAAC,MAAM,CAAC;QACjE,kBAAkB,EAAE,IAAI,CAAC,iBAAiB;QAC1C,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;QAC7C,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;QACzC,qBAAqB,EAAE,IAAI,CAAC,WAAW;KACxC,CAAC,CAAC;;AASL,MAAM,OAAO,oBAAoB;IAC/B;;;;;OAKG;IACM,OAAO,CAAuB;IAEvC;;OAEG;IACM,SAAS,CAAoC;IAEtD;;;;;OAKG;IACM,qBAAqB,CAA4B;IAE1D,YAAY,OAAoC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC;IACrE,CAAC;IAED,SAAS,CAAC,MAA2B;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;IACtE,CAAC;IAED,SAAS;QACP,MAAM,UAAU,GAAmC;YACjD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;QAChF,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAA0C;QAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;QAC1D,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrE,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,WAAW,EAAE,CAAC;gBAChB,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,qBAAqD,CAAC;QAC1D,IAAI,UAAU,CAAC,qBAAqB,IAAI,IAAI,EAAE,CAAC;YAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9D,IAAI,MAAM,CAAC,eAAe,IAAI,UAAU,CAAC,qBAAqB,EAAE,CAAC;oBAC/D,qBAAqB,GAAG,MAAM,CAAC;oBAC/B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,oBAAoB,CAAC;YAC9B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,SAAS;YACT,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,4BAA4B,GAAyB,IAAI,oBAAoB,CAAC;QACnF,OAAO,EAAE,oBAAoB,CAAC,MAAM;KACrC,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Equatable, HashSet, StableHasher } from './equality.js';
|
|
2
2
|
import { RequestExpression, RowExpression } from './filter.js';
|
|
3
3
|
import { PointLookup, RowEvaluator } from './rows.js';
|
|
4
|
-
import {
|
|
4
|
+
import { TableValuedResultSet } from './table.js';
|
|
5
5
|
import { StreamOptions } from '../sync_plan/plan.js';
|
|
6
6
|
/**
|
|
7
7
|
* Describes how to resolve a subscription to buckets.
|
|
@@ -28,10 +28,10 @@ export declare class ParameterLookup implements Equatable {
|
|
|
28
28
|
equals(other: unknown): boolean;
|
|
29
29
|
}
|
|
30
30
|
export declare class EvaluateTableValuedFunction implements Equatable {
|
|
31
|
-
readonly tableValuedFunction:
|
|
31
|
+
readonly tableValuedFunction: TableValuedResultSet;
|
|
32
32
|
readonly outputs: RowExpression[];
|
|
33
33
|
readonly filters: RowExpression[];
|
|
34
|
-
constructor(tableValuedFunction:
|
|
34
|
+
constructor(tableValuedFunction: TableValuedResultSet, outputs: RowExpression[], filters: RowExpression[]);
|
|
35
35
|
buildHash(hasher: StableHasher): void;
|
|
36
36
|
equals(other: unknown): boolean;
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bucket_resolver.js","sourceRoot":"","sources":["../../src/compiler/bucket_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAMnG;;GAEG;AACH,MAAM,OAAO,cAAc;IAEd;IACA;IACA;IACA;IACA;IALX,YACW,OAAsB,EACtB,cAAmC,EACnC,YAAiC,EACjC,cAA6B,EAC7B,UAAkB;QAJlB,YAAO,GAAP,OAAO,CAAe;QACtB,mBAAc,GAAd,cAAc,CAAqB;QACnC,iBAAY,GAAZ,YAAY,CAAqB;QACjC,mBAAc,GAAd,cAAc,CAAe;QAC7B,eAAU,GAAV,UAAU,CAAQ;IAC1B,CAAC;IAEJ,sBAAsB,CAAC,MAAoB;QACzC,gCAAgC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,yBAAyB,CAAC,KAAqB;QAC7C,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACxF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;CACF;AAOD,MAAM,OAAO,eAAe;IAEf;IACA;IAFX,YACW,MAAmB,EACnB,aAA+B;QAD/B,WAAM,GAAN,MAAM,CAAa;QACnB,kBAAa,GAAb,aAAa,CAAkB;IACvC,CAAC;IAEJ,SAAS,CAAC,MAAoB;QAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,OAAO,CACL,KAAK,YAAY,eAAe;YAChC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CACjF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IAE3B;IACA;IACA;IAHX,YACW,
|
|
1
|
+
{"version":3,"file":"bucket_resolver.js","sourceRoot":"","sources":["../../src/compiler/bucket_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,9 @@ export interface SyncStreamsCompilerOptions {
|
|
|
20
20
|
*/
|
|
21
21
|
schema?: SourceSchema;
|
|
22
22
|
}
|
|
23
|
+
export interface ParseStreamOptions extends StreamOptions {
|
|
24
|
+
warnOnDangerousParameter: boolean;
|
|
25
|
+
}
|
|
23
26
|
/**
|
|
24
27
|
* State for compiling sync streams.
|
|
25
28
|
*
|
|
@@ -54,7 +57,7 @@ export declare class SyncStreamsCompiler {
|
|
|
54
57
|
*
|
|
55
58
|
* @param options Name, priority and `auto_subscribe` state for the stream.
|
|
56
59
|
*/
|
|
57
|
-
stream(options:
|
|
60
|
+
stream(options: ParseStreamOptions): IndividualSyncStreamCompiler;
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* Utility for compiling a single sync stream.
|
|
@@ -5,6 +5,7 @@ import { QuerierGraphBuilder } from './querier_graph.js';
|
|
|
5
5
|
import { StreamQueryParser } from './parser.js';
|
|
6
6
|
import { NodeLocations } from './expression.js';
|
|
7
7
|
import { SqlScope } from './scope.js';
|
|
8
|
+
import { DangerousParameterDetector } from './detect_dangerous_parameters.js';
|
|
8
9
|
/**
|
|
9
10
|
* State for compiling sync streams.
|
|
10
11
|
*
|
|
@@ -55,7 +56,11 @@ export class SyncStreamsCompiler {
|
|
|
55
56
|
* @param options Name, priority and `auto_subscribe` state for the stream.
|
|
56
57
|
*/
|
|
57
58
|
stream(options) {
|
|
58
|
-
const builder = new QuerierGraphBuilder(this,
|
|
59
|
+
const builder = new QuerierGraphBuilder(this, {
|
|
60
|
+
name: options.name,
|
|
61
|
+
priority: options.priority,
|
|
62
|
+
isSubscribedByDefault: options.isSubscribedByDefault
|
|
63
|
+
});
|
|
59
64
|
const rootScope = new SqlScope({});
|
|
60
65
|
return {
|
|
61
66
|
registerCommonTableExpression: (name, cte) => {
|
|
@@ -78,7 +83,15 @@ export class SyncStreamsCompiler {
|
|
|
78
83
|
builder.process(query, errors);
|
|
79
84
|
}
|
|
80
85
|
},
|
|
81
|
-
finish: () =>
|
|
86
|
+
finish: () => {
|
|
87
|
+
const buckets = builder.finish();
|
|
88
|
+
if (options.warnOnDangerousParameter) {
|
|
89
|
+
const detector = new DangerousParameterDetector();
|
|
90
|
+
for (const bucket of buckets) {
|
|
91
|
+
detector.processResolver(bucket);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
82
95
|
};
|
|
83
96
|
}
|
|
84
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StreamResolver } from './bucket_resolver.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detects streams exclusively using unauthenticated parameters (derived from the subscription or global request data).
|
|
4
|
+
*
|
|
5
|
+
* We emit a warning for those streams since the developer might not be aware that these parameters aren't validated.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DangerousParameterDetector {
|
|
8
|
+
#private;
|
|
9
|
+
processResolver(resolver: StreamResolver): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { LookupResultParameterValue, ParameterLookup, RequestParameterValue } from './bucket_resolver.js';
|
|
2
|
+
import { ConnectionParameter } from './expression.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detects streams exclusively using unauthenticated parameters (derived from the subscription or global request data).
|
|
5
|
+
*
|
|
6
|
+
* We emit a warning for those streams since the developer might not be aware that these parameters aren't validated.
|
|
7
|
+
*/
|
|
8
|
+
export class DangerousParameterDetector {
|
|
9
|
+
processResolver(resolver) {
|
|
10
|
+
let classification = this.#classifyParameters(resolver.resolvedBucket.instantiation);
|
|
11
|
+
if (classification == 'neutral' && resolver.requestFilters) {
|
|
12
|
+
classification = this.#mergeClassification(resolver.requestFilters.map((f) => this.#classifyExpression(f.expression)));
|
|
13
|
+
}
|
|
14
|
+
if (classification == 'authenticated' || classification == 'neutral') {
|
|
15
|
+
// We have at least one authenticated parameter, all good.
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
// Unauthenticated parameter, warn.
|
|
20
|
+
const { location, errors } = classification.unauthenticated;
|
|
21
|
+
errors.report('Clients can send any value for this unauthenticated parameter, so this is unsuitable for authorization. Consider further constraining this with an authenticated parameter.', location, { isWarning: true });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
#classifyParameter(parameter) {
|
|
25
|
+
if (parameter instanceof RequestParameterValue) {
|
|
26
|
+
return this.#classifyExpression(parameter.expression.expression);
|
|
27
|
+
}
|
|
28
|
+
else if (parameter instanceof LookupResultParameterValue) {
|
|
29
|
+
const lookup = parameter.lookup;
|
|
30
|
+
if (lookup instanceof ParameterLookup) {
|
|
31
|
+
return this.#classifyParameters(lookup.instantiation);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return this.#mergeClassification(lookup.tableValuedFunction.parameters.map((e) => this.#classifyExpression(e.expression)));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Intersection parameter, this is authenticated if any inner value is.
|
|
39
|
+
return this.#classifyParameters(parameter.inner);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
#classifyParameters(parameters) {
|
|
43
|
+
return this.#mergeClassification(parameters.map((p) => this.#classifyParameter(p)));
|
|
44
|
+
}
|
|
45
|
+
#classifyExpression(expr) {
|
|
46
|
+
let isAuthenticated = false;
|
|
47
|
+
let anyUnauthenticatedExpr = null;
|
|
48
|
+
for (const instantiation of expr.instantiation) {
|
|
49
|
+
if (instantiation instanceof ConnectionParameter) {
|
|
50
|
+
if (instantiation.source == 'auth') {
|
|
51
|
+
isAuthenticated = true;
|
|
52
|
+
}
|
|
53
|
+
else if (anyUnauthenticatedExpr == null) {
|
|
54
|
+
anyUnauthenticatedExpr = {
|
|
55
|
+
location: instantiation.syntacticOrigin,
|
|
56
|
+
errors: expr.location.errors
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (anyUnauthenticatedExpr != null && !isAuthenticated) {
|
|
62
|
+
return { unauthenticated: anyUnauthenticatedExpr };
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return 'authenticated';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Merges an array of inner classifications, considering the array authenticatated if any element is.
|
|
70
|
+
*/
|
|
71
|
+
#mergeClassification(inner) {
|
|
72
|
+
let unauthenticated = null;
|
|
73
|
+
for (const classification of inner) {
|
|
74
|
+
if (classification == 'authenticated') {
|
|
75
|
+
return 'authenticated';
|
|
76
|
+
}
|
|
77
|
+
else if (unauthenticated == null && classification != 'neutral') {
|
|
78
|
+
unauthenticated = classification.unauthenticated;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return unauthenticated == null ? 'neutral' : { unauthenticated };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=detect_dangerous_parameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect_dangerous_parameters.js","sourceRoot":"","sources":["../../src/compiler/detect_dangerous_parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { EqualsIgnoringResultSet } from './compatibility.js';
|
|
|
4
4
|
import { StableHasher } from './equality.js';
|
|
5
5
|
import { ConnectionParameterSource } from '../sync_plan/plan.js';
|
|
6
6
|
import { SqlExpression } from '../sync_plan/expression.js';
|
|
7
|
+
import { ParsingErrorListener } from './compiler.js';
|
|
7
8
|
/**
|
|
8
9
|
* An analyzed SQL expression tracking dependencies on non-static data (i.e. rows or connection sources).
|
|
9
10
|
*
|
|
@@ -37,7 +38,7 @@ export declare class SyncExpression implements EqualsIgnoringResultSet {
|
|
|
37
38
|
* expression.
|
|
38
39
|
*/
|
|
39
40
|
get instantiation(): readonly ExpressionInput[];
|
|
40
|
-
get location():
|
|
41
|
+
get location(): SourceLocation;
|
|
41
42
|
constructor(
|
|
42
43
|
/**
|
|
43
44
|
* The AST node backing {@link sql}.
|
|
@@ -72,6 +73,17 @@ export declare class ConnectionParameter implements EqualsIgnoringResultSet {
|
|
|
72
73
|
* in-memory map.
|
|
73
74
|
*/
|
|
74
75
|
export declare class NodeLocations {
|
|
75
|
-
readonly sourceForNode: Map<SqlExpression<unknown>,
|
|
76
|
-
locationFor(source: SqlExpression<unknown>):
|
|
76
|
+
readonly sourceForNode: Map<SqlExpression<unknown>, SourceLocation>;
|
|
77
|
+
locationFor(source: SqlExpression<unknown>): SourceLocation;
|
|
78
|
+
}
|
|
79
|
+
export interface SourceLocation {
|
|
80
|
+
location: PGNode | NodeLocation;
|
|
81
|
+
/**
|
|
82
|
+
* An error reporter that can understand the given {@link location}.
|
|
83
|
+
*
|
|
84
|
+
* Because sync streams might be composed of multiple source statements (like common table expressions) that can
|
|
85
|
+
* ultimately only be fully analyzed together, this is necessary to ensure we can report errors on the correct source
|
|
86
|
+
* everywhere.
|
|
87
|
+
*/
|
|
88
|
+
errors: ParsingErrorListener;
|
|
77
89
|
}
|
|
@@ -112,11 +112,12 @@ export class ConnectionParameter {
|
|
|
112
112
|
export class NodeLocations {
|
|
113
113
|
sourceForNode = new Map();
|
|
114
114
|
locationFor(source) {
|
|
115
|
-
const
|
|
115
|
+
const resolved = this.sourceForNode.get(source);
|
|
116
|
+
const location = getLocation(resolved?.location);
|
|
116
117
|
if (location == null) {
|
|
117
118
|
throw new Error('Missing location');
|
|
118
119
|
}
|
|
119
|
-
return location;
|
|
120
|
+
return { location, errors: resolved.errors };
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
//# sourceMappingURL=expression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAI1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/filter.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnInRow, SyncExpression } from './expression.js';
|
|
2
|
+
import { BaseSourceResultSet } from './table.js';
|
|
2
3
|
import { expandNodeLocations } from '../errors.js';
|
|
3
4
|
export function isBaseTerm(value) {
|
|
4
5
|
return value instanceof SingleDependencyExpression || value instanceof EqualsClause;
|
|
@@ -51,7 +52,8 @@ export class SingleDependencyExpression {
|
|
|
51
52
|
let hasSubscriptionDependency = false;
|
|
52
53
|
for (const dependency of inputs) {
|
|
53
54
|
if (dependency instanceof ColumnInRow) {
|
|
54
|
-
if (
|
|
55
|
+
if (hasSubscriptionDependency ||
|
|
56
|
+
(resultSet != null && !BaseSourceResultSet.areCompatible(resultSet, dependency.resultSet))) {
|
|
55
57
|
return null;
|
|
56
58
|
}
|
|
57
59
|
resultSet = dependency.resultSet;
|
|
@@ -99,7 +101,7 @@ export class EqualsClause {
|
|
|
99
101
|
this.right = right;
|
|
100
102
|
}
|
|
101
103
|
get location() {
|
|
102
|
-
return expandNodeLocations([this.left.expression.location, this.right.expression.location]);
|
|
104
|
+
return expandNodeLocations([this.left.expression.location.location, this.right.expression.location.location]);
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
107
|
export class InvalidExpressionError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAmB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAqBnD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,0BAA0B,IAAI,KAAK,YAAY,YAAY,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAC5B,UAAU,CAAiB;IACpC;;;;OAIG;IACM,SAAS,CAAyB;IAE3C;;OAEG;IACM,mBAAmB,CAAU;IAEtC,YAAY,UAAuD;QACjE,IAAI,UAAU,YAAY,cAAc,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,0BAA0B,CAAC,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,sBAAsB,CAAC,4EAA4E,CAAC,CAAC;YACjH,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,2BAA2B,CAAC,KAA8B;QACxD,OAAO,KAAK,YAAY,0BAA0B,IAAI,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtH,CAAC;IAED,qCAAqC,CAAC,MAAoB;QACxD,IAAI,CAAC,UAAU,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAiC;QAC9D,IAAI,SAAS,GAA2B,IAAI,CAAC;QAC7C,IAAI,yBAAyB,GAAG,KAAK,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,UAAU,YAAY,WAAW,EAAE,CAAC;gBACtC,IACE,yBAAyB;oBACzB,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAC1F,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,yBAAyB,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAChD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,0BAA0B;IAG3D,YAAY,UAAuD;QACjE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,IAAI,sBAAsB,CAAC,wCAAwC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,0BAA0B;IAC/D,YAAY,UAAuD;QACjE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,sBAAsB,CAAC,oCAAoC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAEZ;IACA;IAFX,YACW,IAAgC,EAChC,KAAiC;QADjC,SAAI,GAAJ,IAAI,CAA4B;QAChC,UAAK,GAAL,KAAK,CAA4B;IACzC,CAAC;IAEJ,IAAI,QAAQ;QACV,OAAO,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChH,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -110,9 +110,12 @@ export function composeExpressionNodes(locations, operator, terms) {
|
|
|
110
110
|
for (const additional of rest) {
|
|
111
111
|
inner = { type: 'binary', operator, left: inner, right: additional };
|
|
112
112
|
}
|
|
113
|
-
const location = expandNodeLocations(terms.map((e) => locations.locationFor(e)));
|
|
113
|
+
const location = expandNodeLocations(terms.map((e) => locations.locationFor(e).location));
|
|
114
114
|
if (location) {
|
|
115
|
-
locations.sourceForNode.set(inner,
|
|
115
|
+
locations.sourceForNode.set(inner, {
|
|
116
|
+
location,
|
|
117
|
+
errors: locations.locationFor(terms[0]).errors
|
|
118
|
+
});
|
|
116
119
|
}
|
|
117
120
|
return inner;
|
|
118
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter_simplifier.js","sourceRoot":"","sources":["../../src/compiler/filter_simplifier.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filter_simplifier.js","sourceRoot":"","sources":["../../src/compiler/filter_simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,UAAU,EAAM,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAiB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,OAAO,yBAAyB;IACpC,UAAU,CAAC,EAAM;QACf,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,IAAI,SAAS,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,GAAQ;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACK,yBAAyB,CAAC,QAAwB,EAAE,SAAqB;QAC/E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiD,CAAC;QAC7E,MAAM,WAAW,GAAiC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAe,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,YAAY,0BAA0B,EAAE,CAAC;gBACrD,IAAI,UAAU,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;oBACjC,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC1C,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;oBACtD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,QAAsC,EAAE,EAAE;YAC3D,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,SAAS,CAAC,WAAW,CAAC,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,IAAc;QACjC,IAAI,IAAI,YAAY,YAAY,EAAE,CAAC;YACjC,6GAA6G;YAC7G,iHAAiH;YACjH,iHAAiH;YACjH,kGAAkG;YAClG,IACE,0BAA0B,CAAC,uBAAuB,CAAC;gBACjD,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa;gBACrC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa;aACvC,CAAC,EACF,CAAC;gBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CACxB,QAAwB,EACxB,GAAG,KAAmC;QAEtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,MAAM,KAAK,GAAG,sBAAsB,CAClC,SAAS,EACT,QAAQ,EACR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CACpC,CAAC;QAEF,OAAO,IAAI,0BAA0B,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,SAAwB,EACxB,QAAwB,EACxB,KAAyB;IAEzB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC/B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1F,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE;YACjC,QAAQ;YACR,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -28,8 +28,16 @@ export declare class CompilerModelToSyncPlan {
|
|
|
28
28
|
translate(source: CompiledStreamQueries): plan.SyncPlan;
|
|
29
29
|
private createBucketSource;
|
|
30
30
|
private translatePartitionKey;
|
|
31
|
+
private translateAddedTableValuedFunctions;
|
|
31
32
|
private translateRowEvaluator;
|
|
32
33
|
private translatePointLookup;
|
|
34
|
+
/**
|
|
35
|
+
* @param expression The expression to translate.
|
|
36
|
+
* @param table The implicit table (from context) that columns are resolved against. Null for querier expressions
|
|
37
|
+
* where no such table is available.
|
|
38
|
+
* @param tableValued Additional table-valued functions that are evaluated with the source table and can be
|
|
39
|
+
* referenced.
|
|
40
|
+
*/
|
|
33
41
|
private translateExpression;
|
|
34
42
|
private translateStreamResolver;
|
|
35
43
|
private translateExpandingLookup;
|