@powersync/service-sync-rules 0.29.10 → 0.31.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 (188) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +3 -9
  2. package/dist/BaseSqlDataQuery.js +11 -21
  3. package/dist/BaseSqlDataQuery.js.map +1 -1
  4. package/dist/BucketParameterQuerier.d.ts +42 -9
  5. package/dist/BucketParameterQuerier.js +30 -7
  6. package/dist/BucketParameterQuerier.js.map +1 -1
  7. package/dist/BucketSource.d.ts +94 -25
  8. package/dist/BucketSource.js +67 -0
  9. package/dist/BucketSource.js.map +1 -1
  10. package/dist/ExpressionType.d.ts +4 -2
  11. package/dist/ExpressionType.js.map +1 -1
  12. package/dist/HydratedSyncRules.d.ts +46 -0
  13. package/dist/HydratedSyncRules.js +88 -0
  14. package/dist/HydratedSyncRules.js.map +1 -0
  15. package/dist/HydrationState.d.ts +45 -0
  16. package/dist/HydrationState.js +41 -0
  17. package/dist/HydrationState.js.map +1 -0
  18. package/dist/SqlBucketDescriptor.d.ts +31 -28
  19. package/dist/SqlBucketDescriptor.js +89 -112
  20. package/dist/SqlBucketDescriptor.js.map +1 -1
  21. package/dist/SqlDataQuery.d.ts +4 -4
  22. package/dist/SqlDataQuery.js +5 -6
  23. package/dist/SqlDataQuery.js.map +1 -1
  24. package/dist/SqlParameterQuery.d.ts +17 -9
  25. package/dist/SqlParameterQuery.js +49 -23
  26. package/dist/SqlParameterQuery.js.map +1 -1
  27. package/dist/SqlSyncRules.d.ts +11 -53
  28. package/dist/SqlSyncRules.js +11 -376
  29. package/dist/SqlSyncRules.js.map +1 -1
  30. package/dist/StaticSqlParameterQuery.d.ts +13 -3
  31. package/dist/StaticSqlParameterQuery.js +38 -4
  32. package/dist/StaticSqlParameterQuery.js.map +1 -1
  33. package/dist/SyncConfig.d.ts +43 -0
  34. package/dist/SyncConfig.js +102 -0
  35. package/dist/SyncConfig.js.map +1 -0
  36. package/dist/TablePattern.d.ts +22 -4
  37. package/dist/TablePattern.js +57 -19
  38. package/dist/TablePattern.js.map +1 -1
  39. package/dist/TableValuedFunctionSqlParameterQuery.d.ts +14 -4
  40. package/dist/TableValuedFunctionSqlParameterQuery.js +41 -7
  41. package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
  42. package/dist/compatibility.d.ts +7 -0
  43. package/dist/compatibility.js +34 -0
  44. package/dist/compatibility.js.map +1 -1
  45. package/dist/compiler/bucket_resolver.d.ts +70 -0
  46. package/dist/compiler/bucket_resolver.js +131 -0
  47. package/dist/compiler/bucket_resolver.js.map +1 -0
  48. package/dist/compiler/compatibility.d.ts +16 -0
  49. package/dist/compiler/compatibility.js +12 -0
  50. package/dist/compiler/compatibility.js.map +1 -0
  51. package/dist/compiler/compiler.d.ts +110 -0
  52. package/dist/compiler/compiler.js +130 -0
  53. package/dist/compiler/compiler.js.map +1 -0
  54. package/dist/compiler/equality.d.ts +99 -0
  55. package/dist/compiler/equality.js +284 -0
  56. package/dist/compiler/equality.js.map +1 -0
  57. package/dist/compiler/expression.d.ts +77 -0
  58. package/dist/compiler/expression.js +122 -0
  59. package/dist/compiler/expression.js.map +1 -0
  60. package/dist/compiler/filter.d.ts +71 -0
  61. package/dist/compiler/filter.js +110 -0
  62. package/dist/compiler/filter.js.map +1 -0
  63. package/dist/compiler/filter_simplifier.d.ts +26 -0
  64. package/dist/compiler/filter_simplifier.js +119 -0
  65. package/dist/compiler/filter_simplifier.js.map +1 -0
  66. package/dist/compiler/ir_to_sync_plan.d.ts +37 -0
  67. package/dist/compiler/ir_to_sync_plan.js +163 -0
  68. package/dist/compiler/ir_to_sync_plan.js.map +1 -0
  69. package/dist/compiler/parser.d.ts +99 -0
  70. package/dist/compiler/parser.js +556 -0
  71. package/dist/compiler/parser.js.map +1 -0
  72. package/dist/compiler/querier_graph.d.ts +42 -0
  73. package/dist/compiler/querier_graph.js +365 -0
  74. package/dist/compiler/querier_graph.js.map +1 -0
  75. package/dist/compiler/rows.d.ts +113 -0
  76. package/dist/compiler/rows.js +156 -0
  77. package/dist/compiler/rows.js.map +1 -0
  78. package/dist/compiler/scope.d.ts +22 -0
  79. package/dist/compiler/scope.js +47 -0
  80. package/dist/compiler/scope.js.map +1 -0
  81. package/dist/compiler/sqlite.d.ts +77 -0
  82. package/dist/compiler/sqlite.js +412 -0
  83. package/dist/compiler/sqlite.js.map +1 -0
  84. package/dist/compiler/table.d.ts +66 -0
  85. package/dist/compiler/table.js +67 -0
  86. package/dist/compiler/table.js.map +1 -0
  87. package/dist/errors.d.ts +4 -2
  88. package/dist/errors.js +16 -1
  89. package/dist/errors.js.map +1 -1
  90. package/dist/events/SqlEventDescriptor.js +1 -1
  91. package/dist/events/SqlEventDescriptor.js.map +1 -1
  92. package/dist/events/SqlEventSourceQuery.d.ts +1 -1
  93. package/dist/events/SqlEventSourceQuery.js +1 -2
  94. package/dist/events/SqlEventSourceQuery.js.map +1 -1
  95. package/dist/from_yaml.d.ts +28 -0
  96. package/dist/from_yaml.js +411 -0
  97. package/dist/from_yaml.js.map +1 -0
  98. package/dist/index.d.ts +9 -0
  99. package/dist/index.js +9 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/json_schema.js +17 -1
  102. package/dist/json_schema.js.map +1 -1
  103. package/dist/request_functions.js.map +1 -1
  104. package/dist/schema-generators/DartSchemaGenerator.d.ts +3 -3
  105. package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
  106. package/dist/schema-generators/DotNetSchemaGenerator.d.ts +2 -2
  107. package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
  108. package/dist/schema-generators/JsLegacySchemaGenerator.d.ts +2 -2
  109. package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -1
  110. package/dist/schema-generators/KotlinSchemaGenerator.d.ts +2 -2
  111. package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
  112. package/dist/schema-generators/RoomSchemaGenerator.d.ts +2 -2
  113. package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
  114. package/dist/schema-generators/SchemaGenerator.d.ts +8 -3
  115. package/dist/schema-generators/SchemaGenerator.js +21 -14
  116. package/dist/schema-generators/SchemaGenerator.js.map +1 -1
  117. package/dist/schema-generators/SqlSchemaGenerator.d.ts +2 -2
  118. package/dist/schema-generators/SqlSchemaGenerator.js.map +1 -1
  119. package/dist/schema-generators/SwiftSchemaGenerator.d.ts +2 -2
  120. package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
  121. package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -2
  122. package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
  123. package/dist/sql_functions.d.ts +4 -3
  124. package/dist/sql_functions.js +1 -1
  125. package/dist/sql_functions.js.map +1 -1
  126. package/dist/streams/filter.d.ts +34 -4
  127. package/dist/streams/filter.js +93 -23
  128. package/dist/streams/filter.js.map +1 -1
  129. package/dist/streams/from_sql.js +2 -5
  130. package/dist/streams/from_sql.js.map +1 -1
  131. package/dist/streams/parameter.d.ts +7 -6
  132. package/dist/streams/stream.d.ts +25 -15
  133. package/dist/streams/stream.js +59 -87
  134. package/dist/streams/stream.js.map +1 -1
  135. package/dist/streams/variant.d.ts +14 -21
  136. package/dist/streams/variant.js +68 -46
  137. package/dist/streams/variant.js.map +1 -1
  138. package/dist/sync_plan/engine/javascript.d.ts +6 -0
  139. package/dist/sync_plan/engine/javascript.js +208 -0
  140. package/dist/sync_plan/engine/javascript.js.map +1 -0
  141. package/dist/sync_plan/engine/scalar_expression_engine.d.ts +48 -0
  142. package/dist/sync_plan/engine/scalar_expression_engine.js +99 -0
  143. package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -0
  144. package/dist/sync_plan/engine/sqlite.d.ts +12 -0
  145. package/dist/sync_plan/engine/sqlite.js +53 -0
  146. package/dist/sync_plan/engine/sqlite.js.map +1 -0
  147. package/dist/sync_plan/evaluator/bucket_data_source.d.ts +24 -0
  148. package/dist/sync_plan/evaluator/bucket_data_source.js +139 -0
  149. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -0
  150. package/dist/sync_plan/evaluator/bucket_source.d.ts +19 -0
  151. package/dist/sync_plan/evaluator/bucket_source.js +145 -0
  152. package/dist/sync_plan/evaluator/bucket_source.js.map +1 -0
  153. package/dist/sync_plan/evaluator/index.d.ts +17 -0
  154. package/dist/sync_plan/evaluator/index.js +32 -0
  155. package/dist/sync_plan/evaluator/index.js.map +1 -0
  156. package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +138 -0
  157. package/dist/sync_plan/evaluator/parameter_evaluator.js +359 -0
  158. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -0
  159. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.d.ts +20 -0
  160. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +64 -0
  161. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -0
  162. package/dist/sync_plan/expression.d.ts +109 -0
  163. package/dist/sync_plan/expression.js +85 -0
  164. package/dist/sync_plan/expression.js.map +1 -0
  165. package/dist/sync_plan/expression_to_sql.d.ts +43 -0
  166. package/dist/sync_plan/expression_to_sql.js +190 -0
  167. package/dist/sync_plan/expression_to_sql.js.map +1 -0
  168. package/dist/sync_plan/expression_visitor.d.ts +57 -0
  169. package/dist/sync_plan/expression_visitor.js +181 -0
  170. package/dist/sync_plan/expression_visitor.js.map +1 -0
  171. package/dist/sync_plan/plan.d.ts +196 -0
  172. package/dist/sync_plan/plan.js +2 -0
  173. package/dist/sync_plan/plan.js.map +1 -0
  174. package/dist/sync_plan/schema_inference.d.ts +16 -0
  175. package/dist/sync_plan/schema_inference.js +123 -0
  176. package/dist/sync_plan/schema_inference.js.map +1 -0
  177. package/dist/sync_plan/serialize.d.ts +82 -0
  178. package/dist/sync_plan/serialize.js +214 -0
  179. package/dist/sync_plan/serialize.js.map +1 -0
  180. package/dist/types/custom_sqlite_value.d.ts +1 -1
  181. package/dist/types.d.ts +72 -29
  182. package/dist/types.js +30 -5
  183. package/dist/types.js.map +1 -1
  184. package/dist/utils.d.ts +10 -3
  185. package/dist/utils.js +26 -3
  186. package/dist/utils.js.map +1 -1
  187. package/package.json +4 -3
  188. package/schema/sync_rules.json +19 -3
@@ -6,99 +6,80 @@ export class SyncStream {
6
6
  priority;
7
7
  variants;
8
8
  data;
9
- constructor(name, data) {
9
+ dataSources;
10
+ parameterIndexLookupCreators;
11
+ constructor(name, data, variants) {
10
12
  this.name = name;
11
13
  this.subscribedToByDefault = false;
12
14
  this.priority = DEFAULT_BUCKET_PRIORITY;
13
15
  this.variants = [];
14
16
  this.data = data;
17
+ this.dataSources = [];
18
+ this.parameterIndexLookupCreators = [];
19
+ for (let variant of variants) {
20
+ const dataSource = new SyncStreamDataSource(this, data, variant);
21
+ this.dataSources.push(dataSource);
22
+ this.variants.push({ variant, dataSource });
23
+ const lookupCreators = variant.indexLookupCreators();
24
+ this.parameterIndexLookupCreators.push(...lookupCreators);
25
+ }
15
26
  }
16
27
  get type() {
17
28
  return BucketSourceType.SYNC_STREAM;
18
29
  }
19
- pushBucketParameterQueriers(result, options) {
20
- const subscriptions = options.streams[this.name] ?? [];
21
- if (!this.subscribedToByDefault && !subscriptions.length) {
22
- // The client is not subscribing to this stream, so don't query buckets related to it.
23
- return;
24
- }
25
- let hasExplicitDefaultSubscription = false;
26
- for (const subscription of subscriptions) {
27
- let subscriptionParams = options.globalParameters;
28
- if (subscription.parameters != null) {
29
- subscriptionParams = subscriptionParams.withAddedStreamParameters(subscription.parameters);
30
- }
31
- else {
32
- hasExplicitDefaultSubscription = true;
30
+ debugRepresentation() {
31
+ return {
32
+ name: this.name,
33
+ type: BucketSourceType[BucketSourceType.SYNC_STREAM],
34
+ variants: this.variants.map(({ variant }) => variant.debugRepresentation()),
35
+ data: {
36
+ table: this.data.sourceTable,
37
+ columns: this.data.columnOutputNames()
33
38
  }
34
- this.queriersForSubscription(result, subscription, subscriptionParams, options.bucketIdTransformer);
35
- }
36
- // If the stream is subscribed to by default and there is no explicit subscription that would match the default
37
- // subscription, also include the default querier.
38
- if (this.subscribedToByDefault && !hasExplicitDefaultSubscription) {
39
- this.queriersForSubscription(result, null, options.globalParameters, options.bucketIdTransformer);
40
- }
39
+ };
41
40
  }
42
- queriersForSubscription(result, subscription, params, bucketIdTransformer) {
43
- const reason = subscription != null ? { subscription: subscription.opaque_id } : 'default';
44
- const queriers = [];
45
- try {
46
- for (const variant of this.variants) {
47
- const querier = variant.querier(this, reason, params, bucketIdTransformer);
48
- if (querier) {
49
- queriers.push(querier);
41
+ hydrate(params) {
42
+ let queriers = [];
43
+ for (let { variant, dataSource } of this.variants) {
44
+ const querier = variant.createParameterQuerierSource(params, this, dataSource);
45
+ queriers.push(querier);
46
+ }
47
+ return {
48
+ definition: this,
49
+ pushBucketParameterQueriers(result, options) {
50
+ for (let querier of queriers) {
51
+ querier.pushBucketParameterQueriers(result, options);
50
52
  }
51
53
  }
52
- result.queriers.push(...queriers);
53
- }
54
- catch (e) {
55
- result.errors.push({
56
- descriptor: this.name,
57
- message: `Error evaluating bucket ids: ${e.message}`,
58
- subscription: subscription ?? undefined
59
- });
60
- }
54
+ };
61
55
  }
62
- hasDynamicBucketQueries() {
63
- return this.variants.some((v) => v.hasDynamicBucketQueries);
56
+ }
57
+ export class SyncStreamDataSource {
58
+ stream;
59
+ data;
60
+ variant;
61
+ constructor(stream, data, variant) {
62
+ this.stream = stream;
63
+ this.data = data;
64
+ this.variant = variant;
64
65
  }
65
- tableSyncsData(table) {
66
- return this.data.applies(table);
66
+ /**
67
+ * Not relevant for sync streams.
68
+ */
69
+ get bucketParameters() {
70
+ return [];
67
71
  }
68
- tableSyncsParameters(table) {
69
- for (const variant of this.variants) {
70
- for (const subquery of variant.subqueries) {
71
- if (subquery.parameterTable.matches(table)) {
72
- return true;
73
- }
74
- }
75
- }
76
- return false;
72
+ get uniqueName() {
73
+ return this.variant.defaultBucketPrefix(this.stream.name);
77
74
  }
78
75
  getSourceTables() {
79
- let result = new Set();
80
- result.add(this.data.sourceTable);
81
- for (let variant of this.variants) {
82
- for (const subquery of variant.subqueries) {
83
- result.add(subquery.parameterTable);
84
- }
85
- }
86
- // Note: No physical tables for global_parameter_queries
87
- return result;
76
+ return new Set([this.data.sourceTable]);
88
77
  }
89
- resolveResultSets(schema, tables) {
90
- this.data.resolveResultSets(schema, tables);
78
+ tableSyncsData(table) {
79
+ return this.data.applies(table);
91
80
  }
92
- debugRepresentation() {
93
- return {
94
- name: this.name,
95
- type: BucketSourceType[this.type],
96
- variants: this.variants.map((v) => v.debugRepresentation()),
97
- data: {
98
- table: this.data.sourceTable,
99
- columns: this.data.columnOutputNames()
100
- }
101
- };
81
+ resolveResultSets(schema, tables) {
82
+ return this.data.resolveResultSets(schema, tables);
102
83
  }
103
84
  debugWriteOutputTables(result) {
104
85
  result[this.data.table.sqlName] ??= [];
@@ -107,31 +88,22 @@ export class SyncStream {
107
88
  };
108
89
  result[this.data.table.sqlName].push(r);
109
90
  }
110
- evaluateParameterRow(sourceTable, row) {
111
- const result = [];
112
- for (const variant of this.variants) {
113
- variant.pushParameterRowEvaluation(result, sourceTable, row);
114
- }
115
- return result;
116
- }
117
91
  evaluateRow(options) {
118
92
  if (!this.data.applies(options.sourceTable)) {
119
93
  return [];
120
94
  }
121
- const stream = this;
122
95
  const row = {
123
96
  sourceTable: options.sourceTable,
124
97
  record: options.record
125
98
  };
99
+ // There is some duplication in work here when there are multiple variants on a stream:
100
+ // Each variant does the same row transformation (only the filters / bucket ids differ).
101
+ // However, architecturally we do need to be able to evaluate each variant separately.
126
102
  return this.data.evaluateRowWithOptions({
127
103
  table: options.sourceTable,
128
104
  row: options.record,
129
- bucketIds() {
130
- const bucketIds = [];
131
- for (const variant of stream.variants) {
132
- bucketIds.push(...variant.bucketIdsForRow(stream.name, row, options.bucketIdTransformer));
133
- }
134
- return bucketIds;
105
+ serializedBucketParameters: () => {
106
+ return this.variant.bucketParametersForRow(row);
135
107
  }
136
108
  });
137
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/streams/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/streams/stream.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { BucketInclusionReason } from '../BucketDescription.js';
2
2
  import { BucketParameterQuerier } from '../BucketParameterQuerier.js';
3
- import { SourceTableInterface } from '../SourceTableInterface.js';
4
- import { BucketIdTransformer, EvaluatedParametersResult, RequestParameters, SqliteJsonValue, SqliteRow, TableRow } from '../types.js';
3
+ import { BucketDataSource, BucketParameterQuerierSource, ParameterIndexLookupCreator } from '../BucketSource.js';
4
+ import { BucketDataScope } from '../HydrationState.js';
5
+ import { CreateSourceParams, ScopedParameterLookup } from '../index.js';
6
+ import { RequestParameters, SqliteJsonValue, TableRow } from '../types.js';
5
7
  import { BucketParameter, SubqueryEvaluator } from './parameter.js';
6
8
  import { SyncStream } from './stream.js';
7
9
  /**
@@ -44,10 +46,12 @@ export declare class StreamVariant {
44
46
  */
45
47
  requestFilters: RequestFilter[];
46
48
  constructor(id: number);
49
+ defaultBucketPrefix(streamName: string): string;
50
+ indexLookupCreators(): ParameterIndexLookupCreator[];
47
51
  /**
48
52
  * Given a row in the table this stream selects from, returns all ids of buckets to which that row belongs to.
49
53
  */
50
- bucketIdsForRow(streamName: string, options: TableRow, transformer: BucketIdTransformer): string[];
54
+ bucketParametersForRow(options: TableRow): string[];
51
55
  /**
52
56
  * Given a row to evaluate, returns all instantiations of parameters that satisfy conditions.
53
57
  *
@@ -62,23 +66,8 @@ export declare class StreamVariant {
62
66
  * @returns Each instantiation, with each sub-array having a value for a parameter.
63
67
  */
64
68
  private cartesianProductOfParameterInstantiations;
65
- get hasDynamicBucketQueries(): boolean;
66
- querier(stream: SyncStream, reason: BucketInclusionReason, params: RequestParameters, bucketIdTransformer: BucketIdTransformer): BucketParameterQuerier | null;
69
+ querier(stream: SyncStream, reason: BucketInclusionReason, params: RequestParameters, bucketScope: BucketDataScope, hydratedSubqueries: HydratedSubqueries): BucketParameterQuerier | null;
67
70
  findStaticInstantiations(params: RequestParameters): SqliteJsonValue[][];
68
- /**
69
- * Creates lookup indices for dynamically-resolved parameters.
70
- *
71
- * Resolving dynamic parameters is a two-step process: First, for tables referenced in subqueries, we create an index
72
- * to resolve which request parameters would match rows in subqueries. Then, when resolving bucket ids for a request,
73
- * we compute subquery results by looking up results in that index.
74
- *
75
- * This implements the first step of that process.
76
- *
77
- * @param result The array into which evaluation results should be written to.
78
- * @param sourceTable A table we depend on in a subquery.
79
- * @param row Row data to index.
80
- */
81
- pushParameterRowEvaluation(result: EvaluatedParametersResult[], sourceTable: SourceTableInterface, row: SqliteRow): void;
82
71
  debugRepresentation(): any;
83
72
  /**
84
73
  * Replaces {@link StreamVariant.parameters} with static values looked up in request parameters.
@@ -90,13 +79,15 @@ export declare class StreamVariant {
90
79
  /**
91
80
  * Builds a bucket id for an instantiation, like `stream|0[1,2,"foo"]`.
92
81
  *
93
- * @param streamName The name of the stream, included in the bucket id
82
+ * @param bucketPrefix The name of the the bucket, excluding parameters
94
83
  * @param instantiation An instantiation for all parameters in this variant.
95
84
  * @param transformer A transformer adding version information to the inner id.
96
85
  * @returns The generated bucket id
97
86
  */
98
- private buildBucketId;
87
+ private serializeBucketParameters;
99
88
  private resolveBucket;
89
+ createParameterQuerierSource(params: CreateSourceParams, stream: SyncStream, querierDataSource: BucketDataSource): BucketParameterQuerierSource;
90
+ private queriersForSubscription;
100
91
  }
101
92
  /**
102
93
  * A stateless filter condition that only depends on the request itself, e.g. `WHERE token_parameters.is_admin`.
@@ -120,3 +111,5 @@ export interface SubqueryRequestFilter {
120
111
  matches(params: RequestParameters, results: SqliteJsonValue[]): boolean;
121
112
  }
122
113
  export type RequestFilter = StaticRequestFilter | SubqueryRequestFilter;
114
+ type HydratedSubqueries = Map<SubqueryEvaluator, (params: RequestParameters) => ScopedParameterLookup[]>;
115
+ export {};
@@ -1,4 +1,4 @@
1
- import { isJsonValue, JSONBucketNameSerialize } from '../utils.js';
1
+ import { buildBucketName, isJsonValue, JSONBucketNameSerialize } from '../utils.js';
2
2
  import { cartesianProduct } from './utils.js';
3
3
  /**
4
4
  * A variant of a stream.
@@ -46,11 +46,17 @@ export class StreamVariant {
46
46
  this.additionalRowFilters = [];
47
47
  this.requestFilters = [];
48
48
  }
49
+ defaultBucketPrefix(streamName) {
50
+ return `${streamName}|${this.id}`;
51
+ }
52
+ indexLookupCreators() {
53
+ return this.subqueries.flatMap((subquery) => subquery.indexLookupCreators());
54
+ }
49
55
  /**
50
56
  * Given a row in the table this stream selects from, returns all ids of buckets to which that row belongs to.
51
57
  */
52
- bucketIdsForRow(streamName, options, transformer) {
53
- return this.instantiationsForRow(options).map((values) => this.buildBucketId(streamName, values, transformer));
58
+ bucketParametersForRow(options) {
59
+ return this.instantiationsForRow(options).map((values) => this.serializeBucketParameters(values));
54
60
  }
55
61
  /**
56
62
  * Given a row to evaluate, returns all instantiations of parameters that satisfy conditions.
@@ -89,10 +95,7 @@ export class StreamVariant {
89
95
  cartesianProductOfParameterInstantiations(instantiations) {
90
96
  return [...cartesianProduct(...instantiations)];
91
97
  }
92
- get hasDynamicBucketQueries() {
93
- return this.requestFilters.some((f) => f.type == 'dynamic');
94
- }
95
- querier(stream, reason, params, bucketIdTransformer) {
98
+ querier(stream, reason, params, bucketScope, hydratedSubqueries) {
96
99
  const instantiation = this.partiallyEvaluateParameters(params);
97
100
  if (instantiation == null) {
98
101
  return null;
@@ -111,21 +114,24 @@ export class StreamVariant {
111
114
  }
112
115
  }
113
116
  for (const subquery of this.subqueries) {
114
- subqueryToLookups.set(subquery, subquery.lookupsForRequest(params));
117
+ const subqueryLookup = hydratedSubqueries.get(subquery);
118
+ if (subqueryLookup == null) {
119
+ throw new Error('Internal error, missing subquery lookup');
120
+ }
121
+ subqueryToLookups.set(subquery, subqueryLookup(params));
115
122
  }
116
123
  const staticBuckets = [];
117
124
  if (dynamicParameters.length == 0 && dynamicRequestFilters.length == 0) {
118
125
  // When we have no dynamic parameters, the partial evaluation is a full instantiation.
119
126
  const instantiations = this.cartesianProductOfParameterInstantiations(instantiation);
120
127
  for (const instantiation of instantiations) {
121
- staticBuckets.push(this.resolveBucket(stream, instantiation, reason, bucketIdTransformer));
128
+ staticBuckets.push(this.resolveBucket(stream, instantiation, reason, bucketScope));
122
129
  }
123
130
  }
124
131
  const variant = this;
125
132
  return {
126
133
  staticBuckets: staticBuckets,
127
134
  hasDynamicBuckets: this.subqueries.length != 0,
128
- parameterQueryLookups: [...subqueryToLookups.values()].flatMap((f) => f),
129
135
  async queryDynamicBucketDescriptions(source) {
130
136
  // Evaluate subqueries
131
137
  const subqueryResults = new Map();
@@ -156,7 +162,7 @@ export class StreamVariant {
156
162
  perParameterInstantiation[lookup.index] = subqueryResults.get(lookup.subquery);
157
163
  }
158
164
  const product = variant.cartesianProductOfParameterInstantiations(perParameterInstantiation);
159
- return Promise.resolve(product.map((e) => variant.resolveBucket(stream, e, reason, bucketIdTransformer)));
165
+ return Promise.resolve(product.map((e) => variant.resolveBucket(stream, e, reason, bucketScope)));
160
166
  }
161
167
  };
162
168
  }
@@ -168,36 +174,6 @@ export class StreamVariant {
168
174
  // This will be an array of values (i.e. a total evaluation) because there are no dynamic parameters.
169
175
  this.partiallyEvaluateParameters(params));
170
176
  }
171
- /**
172
- * Creates lookup indices for dynamically-resolved parameters.
173
- *
174
- * Resolving dynamic parameters is a two-step process: First, for tables referenced in subqueries, we create an index
175
- * to resolve which request parameters would match rows in subqueries. Then, when resolving bucket ids for a request,
176
- * we compute subquery results by looking up results in that index.
177
- *
178
- * This implements the first step of that process.
179
- *
180
- * @param result The array into which evaluation results should be written to.
181
- * @param sourceTable A table we depend on in a subquery.
182
- * @param row Row data to index.
183
- */
184
- pushParameterRowEvaluation(result, sourceTable, row) {
185
- for (const subquery of this.subqueries) {
186
- if (subquery.parameterTable.matches(sourceTable)) {
187
- const lookups = subquery.lookupsForParameterRow(sourceTable, row);
188
- if (lookups == null) {
189
- continue;
190
- }
191
- // The row of the subquery. Since we only support subqueries with a single column, we unconditionally name the
192
- // column `result` for simplicity.
193
- const resultRow = { result: lookups.value };
194
- result.push(...lookups.lookups.map((l) => ({
195
- lookup: l,
196
- bucketParameters: [resultRow]
197
- })));
198
- }
199
- }
200
- }
201
177
  debugRepresentation() {
202
178
  return {
203
179
  id: this.id,
@@ -244,24 +220,70 @@ export class StreamVariant {
244
220
  /**
245
221
  * Builds a bucket id for an instantiation, like `stream|0[1,2,"foo"]`.
246
222
  *
247
- * @param streamName The name of the stream, included in the bucket id
223
+ * @param bucketPrefix The name of the the bucket, excluding parameters
248
224
  * @param instantiation An instantiation for all parameters in this variant.
249
225
  * @param transformer A transformer adding version information to the inner id.
250
226
  * @returns The generated bucket id
251
227
  */
252
- buildBucketId(streamName, instantiation, transformer) {
228
+ serializeBucketParameters(instantiation) {
253
229
  if (instantiation.length != this.parameters.length) {
254
230
  throw Error('Internal error, instantiation length mismatch');
255
231
  }
256
- return transformer(`${streamName}|${this.id}${JSONBucketNameSerialize.stringify(instantiation)}`);
232
+ return JSONBucketNameSerialize.stringify(instantiation);
257
233
  }
258
- resolveBucket(stream, instantiation, reason, bucketIdTransformer) {
234
+ resolveBucket(stream, instantiation, reason, bucketScope) {
259
235
  return {
260
236
  definition: stream.name,
261
237
  inclusion_reasons: [reason],
262
- bucket: this.buildBucketId(stream.name, instantiation, bucketIdTransformer),
238
+ bucket: buildBucketName(bucketScope, this.serializeBucketParameters(instantiation)),
263
239
  priority: stream.priority
264
240
  };
265
241
  }
242
+ createParameterQuerierSource(params, stream, querierDataSource) {
243
+ const hydrationState = params.hydrationState;
244
+ const bucketScope = hydrationState.getBucketSourceScope(querierDataSource);
245
+ const hydratedSubqueries = new Map(this.subqueries.map((s) => [s, s.hydrateLookupsForRequest(hydrationState)]));
246
+ return {
247
+ pushBucketParameterQueriers: (result, options) => {
248
+ const subscriptions = options.streams[stream.name] ?? [];
249
+ if (!stream.subscribedToByDefault && !subscriptions.length) {
250
+ // The client is not subscribing to this stream, so don't query buckets related to it.
251
+ return;
252
+ }
253
+ let hasExplicitDefaultSubscription = false;
254
+ for (const subscription of subscriptions) {
255
+ let subscriptionParams = options.globalParameters;
256
+ if (subscription.parameters != null) {
257
+ subscriptionParams = subscriptionParams.withAddedStreamParameters(subscription.parameters);
258
+ }
259
+ else {
260
+ hasExplicitDefaultSubscription = true;
261
+ }
262
+ this.queriersForSubscription(stream, result, subscription, subscriptionParams, bucketScope, hydratedSubqueries);
263
+ }
264
+ // If the stream is subscribed to by default and there is no explicit subscription that would match the default
265
+ // subscription, also include the default querier.
266
+ if (stream.subscribedToByDefault && !hasExplicitDefaultSubscription) {
267
+ this.queriersForSubscription(stream, result, null, options.globalParameters, bucketScope, hydratedSubqueries);
268
+ }
269
+ }
270
+ };
271
+ }
272
+ queriersForSubscription(stream, result, subscription, params, bucketScope, hydratedSubqueries) {
273
+ const reason = subscription != null ? { subscription: subscription.opaque_id } : 'default';
274
+ try {
275
+ const querier = this.querier(stream, reason, params, bucketScope, hydratedSubqueries);
276
+ if (querier) {
277
+ result.queriers.push(querier);
278
+ }
279
+ }
280
+ catch (e) {
281
+ result.errors.push({
282
+ descriptor: stream.name,
283
+ message: `Error evaluating bucket ids: ${e.message}`,
284
+ subscription: subscription ?? undefined
285
+ });
286
+ }
287
+ }
266
288
  }
267
289
  //# sourceMappingURL=variant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variant.js","sourceRoot":"","sources":["../../src/streams/variant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variant.js","sourceRoot":"","sources":["../../src/streams/variant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CompatibilityContext } from '../../index.js';
2
+ import { ScalarExpressionEngine } from './scalar_expression_engine.js';
3
+ /**
4
+ * Creates a {@link ScalarExpressionEngine} implemented by evaluating scalar expressions in JavaScript.
5
+ */
6
+ export declare function javaScriptExpressionEngine(compatibility: CompatibilityContext): ScalarExpressionEngine;