@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.
- package/dist/BaseSqlDataQuery.d.ts +3 -9
- package/dist/BaseSqlDataQuery.js +11 -21
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketParameterQuerier.d.ts +42 -9
- package/dist/BucketParameterQuerier.js +30 -7
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +94 -25
- package/dist/BucketSource.js +67 -0
- package/dist/BucketSource.js.map +1 -1
- package/dist/ExpressionType.d.ts +4 -2
- package/dist/ExpressionType.js.map +1 -1
- package/dist/HydratedSyncRules.d.ts +46 -0
- package/dist/HydratedSyncRules.js +88 -0
- package/dist/HydratedSyncRules.js.map +1 -0
- package/dist/HydrationState.d.ts +45 -0
- package/dist/HydrationState.js +41 -0
- package/dist/HydrationState.js.map +1 -0
- package/dist/SqlBucketDescriptor.d.ts +31 -28
- package/dist/SqlBucketDescriptor.js +89 -112
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +4 -4
- package/dist/SqlDataQuery.js +5 -6
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +17 -9
- package/dist/SqlParameterQuery.js +49 -23
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +11 -53
- package/dist/SqlSyncRules.js +11 -376
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +13 -3
- package/dist/StaticSqlParameterQuery.js +38 -4
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/SyncConfig.d.ts +43 -0
- package/dist/SyncConfig.js +102 -0
- package/dist/SyncConfig.js.map +1 -0
- package/dist/TablePattern.d.ts +22 -4
- package/dist/TablePattern.js +57 -19
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +14 -4
- package/dist/TableValuedFunctionSqlParameterQuery.js +41 -7
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/compatibility.d.ts +7 -0
- package/dist/compatibility.js +34 -0
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/bucket_resolver.d.ts +70 -0
- package/dist/compiler/bucket_resolver.js +131 -0
- package/dist/compiler/bucket_resolver.js.map +1 -0
- package/dist/compiler/compatibility.d.ts +16 -0
- package/dist/compiler/compatibility.js +12 -0
- package/dist/compiler/compatibility.js.map +1 -0
- package/dist/compiler/compiler.d.ts +110 -0
- package/dist/compiler/compiler.js +130 -0
- package/dist/compiler/compiler.js.map +1 -0
- package/dist/compiler/equality.d.ts +99 -0
- package/dist/compiler/equality.js +284 -0
- package/dist/compiler/equality.js.map +1 -0
- package/dist/compiler/expression.d.ts +77 -0
- package/dist/compiler/expression.js +122 -0
- package/dist/compiler/expression.js.map +1 -0
- package/dist/compiler/filter.d.ts +71 -0
- package/dist/compiler/filter.js +110 -0
- package/dist/compiler/filter.js.map +1 -0
- package/dist/compiler/filter_simplifier.d.ts +26 -0
- package/dist/compiler/filter_simplifier.js +119 -0
- package/dist/compiler/filter_simplifier.js.map +1 -0
- package/dist/compiler/ir_to_sync_plan.d.ts +37 -0
- package/dist/compiler/ir_to_sync_plan.js +163 -0
- package/dist/compiler/ir_to_sync_plan.js.map +1 -0
- package/dist/compiler/parser.d.ts +99 -0
- package/dist/compiler/parser.js +556 -0
- package/dist/compiler/parser.js.map +1 -0
- package/dist/compiler/querier_graph.d.ts +42 -0
- package/dist/compiler/querier_graph.js +365 -0
- package/dist/compiler/querier_graph.js.map +1 -0
- package/dist/compiler/rows.d.ts +113 -0
- package/dist/compiler/rows.js +156 -0
- package/dist/compiler/rows.js.map +1 -0
- package/dist/compiler/scope.d.ts +22 -0
- package/dist/compiler/scope.js +47 -0
- package/dist/compiler/scope.js.map +1 -0
- package/dist/compiler/sqlite.d.ts +77 -0
- package/dist/compiler/sqlite.js +412 -0
- package/dist/compiler/sqlite.js.map +1 -0
- package/dist/compiler/table.d.ts +66 -0
- package/dist/compiler/table.js +67 -0
- package/dist/compiler/table.js.map +1 -0
- package/dist/errors.d.ts +4 -2
- package/dist/errors.js +16 -1
- package/dist/errors.js.map +1 -1
- package/dist/events/SqlEventDescriptor.js +1 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +1 -1
- package/dist/events/SqlEventSourceQuery.js +1 -2
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/from_yaml.d.ts +28 -0
- package/dist/from_yaml.js +411 -0
- package/dist/from_yaml.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +17 -1
- package/dist/json_schema.js.map +1 -1
- package/dist/request_functions.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +3 -3
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/JsLegacySchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -1
- package/dist/schema-generators/KotlinSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/RoomSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.d.ts +8 -3
- package/dist/schema-generators/SchemaGenerator.js +21 -14
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SqlSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/SqlSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SwiftSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -2
- package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
- package/dist/sql_functions.d.ts +4 -3
- package/dist/sql_functions.js +1 -1
- package/dist/sql_functions.js.map +1 -1
- package/dist/streams/filter.d.ts +34 -4
- package/dist/streams/filter.js +93 -23
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/from_sql.js +2 -5
- package/dist/streams/from_sql.js.map +1 -1
- package/dist/streams/parameter.d.ts +7 -6
- package/dist/streams/stream.d.ts +25 -15
- package/dist/streams/stream.js +59 -87
- package/dist/streams/stream.js.map +1 -1
- package/dist/streams/variant.d.ts +14 -21
- package/dist/streams/variant.js +68 -46
- package/dist/streams/variant.js.map +1 -1
- package/dist/sync_plan/engine/javascript.d.ts +6 -0
- package/dist/sync_plan/engine/javascript.js +208 -0
- package/dist/sync_plan/engine/javascript.js.map +1 -0
- package/dist/sync_plan/engine/scalar_expression_engine.d.ts +48 -0
- package/dist/sync_plan/engine/scalar_expression_engine.js +99 -0
- package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -0
- package/dist/sync_plan/engine/sqlite.d.ts +12 -0
- package/dist/sync_plan/engine/sqlite.js +53 -0
- package/dist/sync_plan/engine/sqlite.js.map +1 -0
- package/dist/sync_plan/evaluator/bucket_data_source.d.ts +24 -0
- package/dist/sync_plan/evaluator/bucket_data_source.js +139 -0
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -0
- package/dist/sync_plan/evaluator/bucket_source.d.ts +19 -0
- package/dist/sync_plan/evaluator/bucket_source.js +145 -0
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -0
- package/dist/sync_plan/evaluator/index.d.ts +17 -0
- package/dist/sync_plan/evaluator/index.js +32 -0
- package/dist/sync_plan/evaluator/index.js.map +1 -0
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +138 -0
- package/dist/sync_plan/evaluator/parameter_evaluator.js +359 -0
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -0
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.d.ts +20 -0
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +64 -0
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -0
- package/dist/sync_plan/expression.d.ts +109 -0
- package/dist/sync_plan/expression.js +85 -0
- package/dist/sync_plan/expression.js.map +1 -0
- package/dist/sync_plan/expression_to_sql.d.ts +43 -0
- package/dist/sync_plan/expression_to_sql.js +190 -0
- package/dist/sync_plan/expression_to_sql.js.map +1 -0
- package/dist/sync_plan/expression_visitor.d.ts +57 -0
- package/dist/sync_plan/expression_visitor.js +181 -0
- package/dist/sync_plan/expression_visitor.js.map +1 -0
- package/dist/sync_plan/plan.d.ts +196 -0
- package/dist/sync_plan/plan.js +2 -0
- package/dist/sync_plan/plan.js.map +1 -0
- package/dist/sync_plan/schema_inference.d.ts +16 -0
- package/dist/sync_plan/schema_inference.js +123 -0
- package/dist/sync_plan/schema_inference.js.map +1 -0
- package/dist/sync_plan/serialize.d.ts +82 -0
- package/dist/sync_plan/serialize.js +214 -0
- package/dist/sync_plan/serialize.js.map +1 -0
- package/dist/types/custom_sqlite_value.d.ts +1 -1
- package/dist/types.d.ts +72 -29
- package/dist/types.js +30 -5
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +10 -3
- package/dist/utils.js +26 -3
- package/dist/utils.js.map +1 -1
- package/package.json +4 -3
- package/schema/sync_rules.json +19 -3
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { CompatibilityContext, CompatibilityOption } from './compatibility.js';
|
|
2
|
+
import { HydratedSyncRules } from './HydratedSyncRules.js';
|
|
3
|
+
import { DEFAULT_HYDRATION_STATE } from './HydrationState.js';
|
|
4
|
+
import { applyRowContext } from './utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* A class describing how the sync process has been configured (i.e. which buckets and parameters to create and how to
|
|
7
|
+
* resolve buckets for connections).
|
|
8
|
+
*/
|
|
9
|
+
export class SyncConfig {
|
|
10
|
+
bucketDataSources = [];
|
|
11
|
+
bucketParameterLookupSources = [];
|
|
12
|
+
bucketSources = [];
|
|
13
|
+
compatibility = CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY;
|
|
14
|
+
eventDescriptors = [];
|
|
15
|
+
/**
|
|
16
|
+
* The (YAML-based) source contents from which these sync rules have been derived.
|
|
17
|
+
*/
|
|
18
|
+
content;
|
|
19
|
+
constructor(content) {
|
|
20
|
+
this.content = content;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
24
|
+
*
|
|
25
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state. May omit for tests.
|
|
26
|
+
*/
|
|
27
|
+
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
|
+
return new HydratedSyncRules({
|
|
34
|
+
definition: this,
|
|
35
|
+
createParams: resolvedParams,
|
|
36
|
+
bucketDataSources: this.bucketDataSources,
|
|
37
|
+
bucketParameterIndexLookupCreators: this.bucketParameterLookupSources,
|
|
38
|
+
eventDescriptors: this.eventDescriptors,
|
|
39
|
+
compatibility: this.compatibility
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
applyRowContext(source) {
|
|
43
|
+
return applyRowContext(source, this.compatibility);
|
|
44
|
+
}
|
|
45
|
+
writeSourceTables(sourceTables) {
|
|
46
|
+
for (const bucket of this.bucketDataSources) {
|
|
47
|
+
for (const r of bucket.getSourceTables()) {
|
|
48
|
+
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
49
|
+
sourceTables.set(key, r);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const bucket of this.bucketParameterLookupSources) {
|
|
53
|
+
for (const r of bucket.getSourceTables()) {
|
|
54
|
+
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
55
|
+
sourceTables.set(key, r);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const event of this.eventDescriptors) {
|
|
59
|
+
for (const r of event.getSourceTables()) {
|
|
60
|
+
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
61
|
+
sourceTables.set(key, r);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
getSourceTables() {
|
|
66
|
+
const sourceTables = new Map();
|
|
67
|
+
this.writeSourceTables(sourceTables);
|
|
68
|
+
return [...sourceTables.values()];
|
|
69
|
+
}
|
|
70
|
+
getEventTables() {
|
|
71
|
+
const eventTables = new Map();
|
|
72
|
+
if (this.eventDescriptors) {
|
|
73
|
+
for (const event of this.eventDescriptors) {
|
|
74
|
+
for (const r of event.getSourceTables()) {
|
|
75
|
+
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
76
|
+
eventTables.set(key, r);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return [...eventTables.values()];
|
|
81
|
+
}
|
|
82
|
+
tableTriggersEvent(table) {
|
|
83
|
+
return this.eventDescriptors.some((bucket) => bucket.tableTriggersEvent(table));
|
|
84
|
+
}
|
|
85
|
+
tableSyncsData(table) {
|
|
86
|
+
return this.bucketDataSources.some((b) => b.tableSyncsData(table));
|
|
87
|
+
}
|
|
88
|
+
tableSyncsParameters(table) {
|
|
89
|
+
return this.bucketParameterLookupSources.some((b) => b.tableSyncsParameters(table));
|
|
90
|
+
}
|
|
91
|
+
debugGetOutputTables() {
|
|
92
|
+
let result = {};
|
|
93
|
+
for (let bucket of this.bucketDataSources) {
|
|
94
|
+
bucket.debugWriteOutputTables(result);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
debugRepresentation() {
|
|
99
|
+
return this.bucketSources.map((rules) => rules.debugRepresentation());
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=SyncConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/TablePattern.d.ts
CHANGED
|
@@ -1,16 +1,34 @@
|
|
|
1
|
+
import { Equatable, StableHasher } from './compiler/equality.js';
|
|
1
2
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
2
3
|
export declare const DEFAULT_TAG = "default";
|
|
4
|
+
/**
|
|
5
|
+
* A variant of {@link TablePattern} that doesn't require a schema.
|
|
6
|
+
*
|
|
7
|
+
* While we'll always have a default schema when parsing sync configurations, sync plans also need to be stored in a
|
|
8
|
+
* serialized form. There is no guarantee that the default schema used to compile a plan is the same as the one used
|
|
9
|
+
* when loading it, so we can't apply a default value and store it.
|
|
10
|
+
*
|
|
11
|
+
* This class doesn't apply a default schema when constructed.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ImplicitSchemaTablePattern implements Equatable {
|
|
14
|
+
readonly tablePattern: string;
|
|
15
|
+
readonly connectionTag: string | null;
|
|
16
|
+
readonly schema: string | null;
|
|
17
|
+
constructor(schema: string | null, tablePattern: string);
|
|
18
|
+
get isWildcard(): boolean;
|
|
19
|
+
get name(): string;
|
|
20
|
+
toTablePattern(defaultSchema: string): TablePattern;
|
|
21
|
+
buildHash(hasher: StableHasher): void;
|
|
22
|
+
equals(other: unknown): boolean;
|
|
23
|
+
}
|
|
3
24
|
/**
|
|
4
25
|
* Some pattern matching SourceTables.
|
|
5
26
|
*/
|
|
6
|
-
export declare class TablePattern {
|
|
27
|
+
export declare class TablePattern extends ImplicitSchemaTablePattern {
|
|
7
28
|
readonly connectionTag: string;
|
|
8
29
|
readonly schema: string;
|
|
9
|
-
readonly tablePattern: string;
|
|
10
30
|
constructor(schema: string, tablePattern: string);
|
|
11
|
-
get isWildcard(): boolean;
|
|
12
31
|
get tablePrefix(): string;
|
|
13
|
-
get name(): string;
|
|
14
32
|
matches(table: SourceTableInterface): boolean;
|
|
15
33
|
suffix(table: string): string;
|
|
16
34
|
}
|
package/dist/TablePattern.js
CHANGED
|
@@ -1,41 +1,79 @@
|
|
|
1
1
|
export const DEFAULT_TAG = 'default';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A variant of {@link TablePattern} that doesn't require a schema.
|
|
4
|
+
*
|
|
5
|
+
* While we'll always have a default schema when parsing sync configurations, sync plans also need to be stored in a
|
|
6
|
+
* serialized form. There is no guarantee that the default schema used to compile a plan is the same as the one used
|
|
7
|
+
* when loading it, so we can't apply a default value and store it.
|
|
8
|
+
*
|
|
9
|
+
* This class doesn't apply a default schema when constructed.
|
|
4
10
|
*/
|
|
5
|
-
export class
|
|
11
|
+
export class ImplicitSchemaTablePattern {
|
|
12
|
+
tablePattern;
|
|
6
13
|
connectionTag;
|
|
7
14
|
schema;
|
|
8
|
-
tablePattern;
|
|
9
15
|
constructor(schema, tablePattern) {
|
|
10
|
-
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
this.tablePattern = tablePattern;
|
|
17
|
+
if (schema) {
|
|
18
|
+
const splitSchema = schema.split('.');
|
|
19
|
+
if (splitSchema.length > 2) {
|
|
20
|
+
throw new Error(`Invalid schema: ${schema}`);
|
|
21
|
+
}
|
|
22
|
+
if (splitSchema.length == 2) {
|
|
23
|
+
this.connectionTag = splitSchema[0];
|
|
24
|
+
this.schema = splitSchema[1];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.connectionTag = DEFAULT_TAG;
|
|
28
|
+
this.schema = schema;
|
|
29
|
+
}
|
|
17
30
|
}
|
|
18
31
|
else {
|
|
19
|
-
this.connectionTag =
|
|
20
|
-
this.schema =
|
|
32
|
+
this.connectionTag = null;
|
|
33
|
+
this.schema = null;
|
|
21
34
|
}
|
|
22
|
-
this.tablePattern = tablePattern;
|
|
23
35
|
}
|
|
24
36
|
get isWildcard() {
|
|
25
37
|
return this.tablePattern.endsWith('%');
|
|
26
38
|
}
|
|
27
|
-
get tablePrefix() {
|
|
28
|
-
if (!this.isWildcard) {
|
|
29
|
-
throw new Error('Not a wildcard table');
|
|
30
|
-
}
|
|
31
|
-
return this.tablePattern.substring(0, this.tablePattern.length - 1);
|
|
32
|
-
}
|
|
33
39
|
get name() {
|
|
34
40
|
if (this.isWildcard) {
|
|
35
41
|
throw new Error('Cannot get name for wildcard table');
|
|
36
42
|
}
|
|
37
43
|
return this.tablePattern;
|
|
38
44
|
}
|
|
45
|
+
toTablePattern(defaultSchema) {
|
|
46
|
+
return new TablePattern(this.schema ?? defaultSchema, this.tablePattern);
|
|
47
|
+
}
|
|
48
|
+
buildHash(hasher) {
|
|
49
|
+
if (this.connectionTag) {
|
|
50
|
+
hasher.addString(this.connectionTag);
|
|
51
|
+
}
|
|
52
|
+
if (this.schema) {
|
|
53
|
+
hasher.addString(this.schema);
|
|
54
|
+
}
|
|
55
|
+
hasher.addString(this.tablePattern);
|
|
56
|
+
}
|
|
57
|
+
equals(other) {
|
|
58
|
+
return (other instanceof ImplicitSchemaTablePattern &&
|
|
59
|
+
other.connectionTag == this.connectionTag &&
|
|
60
|
+
other.schema == this.schema &&
|
|
61
|
+
other.tablePattern == this.tablePattern);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Some pattern matching SourceTables.
|
|
66
|
+
*/
|
|
67
|
+
export class TablePattern extends ImplicitSchemaTablePattern {
|
|
68
|
+
constructor(schema, tablePattern) {
|
|
69
|
+
super(schema, tablePattern);
|
|
70
|
+
}
|
|
71
|
+
get tablePrefix() {
|
|
72
|
+
if (!this.isWildcard) {
|
|
73
|
+
throw new Error('Not a wildcard table');
|
|
74
|
+
}
|
|
75
|
+
return this.tablePattern.substring(0, this.tablePattern.length - 1);
|
|
76
|
+
}
|
|
39
77
|
matches(table) {
|
|
40
78
|
if (this.connectionTag != table.connectionTag || this.schema != table.schema) {
|
|
41
79
|
return false;
|
package/dist/TablePattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { FromCall, SelectFromStatement } from 'pgsql-ast-parser';
|
|
2
|
+
import { BucketDescription, BucketPriority } from './BucketDescription.js';
|
|
3
|
+
import { CreateSourceParams } from './BucketSource.js';
|
|
2
4
|
import { SqlRuleError } from './errors.js';
|
|
5
|
+
import { BucketDataScope } from './HydrationState.js';
|
|
6
|
+
import { BucketDataSource, BucketParameterQuerierSource } from './index.js';
|
|
7
|
+
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
8
|
import { AvailableTable } from './sql_filters.js';
|
|
9
|
+
import { TablePattern } from './TablePattern.js';
|
|
4
10
|
import { TableValuedFunction } from './TableValuedFunctions.js';
|
|
5
|
-
import {
|
|
6
|
-
import { BucketDescription, BucketPriority } from './BucketDescription.js';
|
|
11
|
+
import { ParameterValueClause, QueryParseOptions, RequestParameters } from './types.js';
|
|
7
12
|
export interface TableValuedFunctionSqlParameterQueryOptions {
|
|
8
13
|
sql: string;
|
|
9
14
|
parameterExtractors: Record<string, ParameterValueClause>;
|
|
@@ -15,6 +20,7 @@ export interface TableValuedFunctionSqlParameterQueryOptions {
|
|
|
15
20
|
callClause: ParameterValueClause | undefined;
|
|
16
21
|
function: TableValuedFunction;
|
|
17
22
|
callTable: AvailableTable;
|
|
23
|
+
querierDataSource: BucketDataSource;
|
|
18
24
|
errors: SqlRuleError[];
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
@@ -27,7 +33,7 @@ export interface TableValuedFunctionSqlParameterQueryOptions {
|
|
|
27
33
|
* This can currently not be combined with parameter table queries or multiple table-valued functions.
|
|
28
34
|
*/
|
|
29
35
|
export declare class TableValuedFunctionSqlParameterQuery {
|
|
30
|
-
static fromSql(descriptorName: string, sql: string, call: FromCall, q: SelectFromStatement, options: QueryParseOptions, queryId: string): TableValuedFunctionSqlParameterQuery;
|
|
36
|
+
static fromSql(descriptorName: string, sql: string, call: FromCall, q: SelectFromStatement, options: QueryParseOptions, queryId: string, querierDataSource: BucketDataSource): TableValuedFunctionSqlParameterQuery;
|
|
31
37
|
/**
|
|
32
38
|
* Raw source sql query, for debugging purposes.
|
|
33
39
|
*/
|
|
@@ -81,9 +87,13 @@ export declare class TableValuedFunctionSqlParameterQuery {
|
|
|
81
87
|
* Only used internally.
|
|
82
88
|
*/
|
|
83
89
|
readonly callTable: AvailableTable;
|
|
90
|
+
readonly querierDataSource: BucketDataSource;
|
|
84
91
|
readonly errors: SqlRuleError[];
|
|
85
92
|
constructor(options: TableValuedFunctionSqlParameterQueryOptions);
|
|
86
|
-
|
|
93
|
+
getSourceTables(): Set<TablePattern>;
|
|
94
|
+
tableSyncsParameters(_table: SourceTableInterface): boolean;
|
|
95
|
+
createParameterQuerierSource(params: CreateSourceParams): BucketParameterQuerierSource;
|
|
96
|
+
getStaticBucketDescriptions(parameters: RequestParameters, scope: BucketDataScope): BucketDescription[];
|
|
87
97
|
private getIndividualBucketDescription;
|
|
88
98
|
private visitParameterExtractorsAndCallClause;
|
|
89
99
|
get hasAuthenticatedBucketParameters(): boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { DEFAULT_BUCKET_PRIORITY } from './BucketDescription.js';
|
|
1
2
|
import { SqlRuleError } from './errors.js';
|
|
2
3
|
import { AvailableTable, SqlTools } from './sql_filters.js';
|
|
3
4
|
import { checkUnsupportedFeatures, isClauseError, sqliteBool } from './sql_support.js';
|
|
4
5
|
import { generateTableValuedFunctions } from './TableValuedFunctions.js';
|
|
5
|
-
import {
|
|
6
|
-
import { DEFAULT_BUCKET_PRIORITY } from './BucketDescription.js';
|
|
6
|
+
import { buildBucketName, isJsonValue, serializeBucketParameters } from './utils.js';
|
|
7
7
|
import { DetectRequestParameters } from './validators.js';
|
|
8
8
|
/**
|
|
9
9
|
* Represents a parameter query using a table-valued function.
|
|
@@ -15,7 +15,7 @@ import { DetectRequestParameters } from './validators.js';
|
|
|
15
15
|
* This can currently not be combined with parameter table queries or multiple table-valued functions.
|
|
16
16
|
*/
|
|
17
17
|
export class TableValuedFunctionSqlParameterQuery {
|
|
18
|
-
static fromSql(descriptorName, sql, call, q, options, queryId) {
|
|
18
|
+
static fromSql(descriptorName, sql, call, q, options, queryId, querierDataSource) {
|
|
19
19
|
const compatibility = options.compatibility;
|
|
20
20
|
let errors = [];
|
|
21
21
|
errors.push(...checkUnsupportedFeatures(sql, q));
|
|
@@ -68,6 +68,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
68
68
|
callTable,
|
|
69
69
|
priority: priority ?? DEFAULT_BUCKET_PRIORITY,
|
|
70
70
|
queryId,
|
|
71
|
+
querierDataSource,
|
|
71
72
|
errors
|
|
72
73
|
});
|
|
73
74
|
if (query.usesDangerousRequestParameters && !options?.accept_potentially_dangerous_queries) {
|
|
@@ -130,6 +131,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
130
131
|
* Only used internally.
|
|
131
132
|
*/
|
|
132
133
|
callTable;
|
|
134
|
+
querierDataSource;
|
|
133
135
|
errors;
|
|
134
136
|
constructor(options) {
|
|
135
137
|
this.sql = options.sql;
|
|
@@ -138,13 +140,44 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
138
140
|
this.descriptorName = options.descriptorName;
|
|
139
141
|
this.bucketParameters = options.bucketParameters;
|
|
140
142
|
this.queryId = options.queryId;
|
|
143
|
+
this.querierDataSource = options.querierDataSource;
|
|
141
144
|
this.filter = options.filter;
|
|
142
145
|
this.callClause = options.callClause;
|
|
143
146
|
this.function = options.function;
|
|
144
147
|
this.callTable = options.callTable;
|
|
145
148
|
this.errors = options.errors;
|
|
146
149
|
}
|
|
147
|
-
|
|
150
|
+
getSourceTables() {
|
|
151
|
+
return new Set();
|
|
152
|
+
}
|
|
153
|
+
tableSyncsParameters(_table) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
createParameterQuerierSource(params) {
|
|
157
|
+
const hydrationState = params.hydrationState;
|
|
158
|
+
const bucketScope = hydrationState.getBucketSourceScope(this.querierDataSource);
|
|
159
|
+
return {
|
|
160
|
+
pushBucketParameterQueriers: (result, options) => {
|
|
161
|
+
const staticBuckets = this.getStaticBucketDescriptions(options.globalParameters, bucketScope).map((desc) => {
|
|
162
|
+
return {
|
|
163
|
+
...desc,
|
|
164
|
+
definition: this.descriptorName,
|
|
165
|
+
inclusion_reasons: ['default']
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
if (staticBuckets.length == 0) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const staticQuerier = {
|
|
172
|
+
staticBuckets,
|
|
173
|
+
hasDynamicBuckets: false,
|
|
174
|
+
queryDynamicBucketDescriptions: async () => []
|
|
175
|
+
};
|
|
176
|
+
result.queriers.push(staticQuerier);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
getStaticBucketDescriptions(parameters, scope) {
|
|
148
181
|
if (this.filter == null || this.callClause == null) {
|
|
149
182
|
// Error in filter clause
|
|
150
183
|
return [];
|
|
@@ -153,14 +186,14 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
153
186
|
const rows = this.function.call([valueString]);
|
|
154
187
|
let total = [];
|
|
155
188
|
for (let row of rows) {
|
|
156
|
-
const description = this.getIndividualBucketDescription(row, parameters,
|
|
189
|
+
const description = this.getIndividualBucketDescription(row, parameters, scope);
|
|
157
190
|
if (description !== null) {
|
|
158
191
|
total.push(description);
|
|
159
192
|
}
|
|
160
193
|
}
|
|
161
194
|
return total;
|
|
162
195
|
}
|
|
163
|
-
getIndividualBucketDescription(row, parameters,
|
|
196
|
+
getIndividualBucketDescription(row, parameters, bucketScope) {
|
|
164
197
|
const mergedParams = {
|
|
165
198
|
...parameters,
|
|
166
199
|
lookup: (table, column) => {
|
|
@@ -186,8 +219,9 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
186
219
|
throw new Error(`Invalid parameter value: ${value}`);
|
|
187
220
|
}
|
|
188
221
|
}
|
|
222
|
+
const serializedBucketParameters = serializeBucketParameters(this.bucketParameters, result);
|
|
189
223
|
return {
|
|
190
|
-
bucket:
|
|
224
|
+
bucket: buildBucketName(bucketScope, serializedBucketParameters),
|
|
191
225
|
priority: this.priority
|
|
192
226
|
};
|
|
193
227
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableValuedFunctionSqlParameterQuery.js","sourceRoot":"","sources":["../src/TableValuedFunctionSqlParameterQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TableValuedFunctionSqlParameterQuery.js","sourceRoot":"","sources":["../src/TableValuedFunctionSqlParameterQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/compatibility.d.ts
CHANGED
|
@@ -55,8 +55,15 @@ export declare class CompatibilityContext {
|
|
|
55
55
|
readonly maxTimeValuePrecision: TimeValuePrecision | null;
|
|
56
56
|
constructor(options: CompatibilityContextOptions);
|
|
57
57
|
isEnabled(option: CompatibilityOption): boolean;
|
|
58
|
+
serialize(): SerializedCompatibilityContext;
|
|
59
|
+
static deserialize(serialized: SerializedCompatibilityContext): CompatibilityContext;
|
|
58
60
|
/**
|
|
59
61
|
* A {@link CompatibilityContext} in which no fixes are applied.
|
|
60
62
|
*/
|
|
61
63
|
static FULL_BACKWARDS_COMPATIBILITY: CompatibilityContext;
|
|
62
64
|
}
|
|
65
|
+
export interface SerializedCompatibilityContext {
|
|
66
|
+
edition: number;
|
|
67
|
+
overrides: Record<string, boolean>;
|
|
68
|
+
maxTimeValuePrecision?: number;
|
|
69
|
+
}
|
package/dist/compatibility.js
CHANGED
|
@@ -74,6 +74,40 @@ export class CompatibilityContext {
|
|
|
74
74
|
isEnabled(option) {
|
|
75
75
|
return this.overrides.get(option) ?? option.fixedIn <= this.edition;
|
|
76
76
|
}
|
|
77
|
+
serialize() {
|
|
78
|
+
const serialized = {
|
|
79
|
+
edition: this.edition,
|
|
80
|
+
overrides: {}
|
|
81
|
+
};
|
|
82
|
+
this.overrides.forEach((enabled, key) => (serialized.overrides[key.name] = enabled));
|
|
83
|
+
if (this.maxTimeValuePrecision) {
|
|
84
|
+
serialized.maxTimeValuePrecision = this.maxTimeValuePrecision.subSecondDigits;
|
|
85
|
+
}
|
|
86
|
+
return serialized;
|
|
87
|
+
}
|
|
88
|
+
static deserialize(serialized) {
|
|
89
|
+
const overrides = new Map();
|
|
90
|
+
for (const [option, enabled] of Object.entries(serialized.overrides)) {
|
|
91
|
+
const knownOption = CompatibilityOption.byName[option];
|
|
92
|
+
if (knownOption) {
|
|
93
|
+
overrides.set(knownOption, enabled);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
let maxTimeValuePrecision;
|
|
97
|
+
if (serialized.maxTimeValuePrecision != null) {
|
|
98
|
+
for (const option of Object.values(TimeValuePrecision.byName)) {
|
|
99
|
+
if (option.subSecondDigits == serialized.maxTimeValuePrecision) {
|
|
100
|
+
maxTimeValuePrecision = option;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return new CompatibilityContext({
|
|
106
|
+
edition: serialized.edition,
|
|
107
|
+
overrides,
|
|
108
|
+
maxTimeValuePrecision
|
|
109
|
+
});
|
|
110
|
+
}
|
|
77
111
|
/**
|
|
78
112
|
* A {@link CompatibilityContext} in which no fixes are applied.
|
|
79
113
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,mEAAU,CAAA;IACV,+EAAgB,CAAA;AAClB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/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;;OAEG;IACH,MAAM,CAAC,4BAA4B,GAAyB,IAAI,oBAAoB,CAAC;QACnF,OAAO,EAAE,oBAAoB,CAAC,MAAM;KACrC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Equatable, HashSet, StableHasher } from './equality.js';
|
|
2
|
+
import { RequestExpression, RowExpression } from './filter.js';
|
|
3
|
+
import { PointLookup, RowEvaluator } from './rows.js';
|
|
4
|
+
import { RequestTableValuedResultSet } from './table.js';
|
|
5
|
+
import { StreamOptions } from '../sync_plan/plan.js';
|
|
6
|
+
/**
|
|
7
|
+
* Describes how to resolve a subscription to buckets.
|
|
8
|
+
*/
|
|
9
|
+
export declare class StreamResolver {
|
|
10
|
+
readonly options: StreamOptions;
|
|
11
|
+
readonly requestFilters: RequestExpression[];
|
|
12
|
+
readonly lookupStages: ExpandingLookup[][];
|
|
13
|
+
readonly resolvedBucket: ResolveBucket;
|
|
14
|
+
readonly uniqueName: string;
|
|
15
|
+
constructor(options: StreamOptions, requestFilters: RequestExpression[], lookupStages: ExpandingLookup[][], resolvedBucket: ResolveBucket, uniqueName: string);
|
|
16
|
+
buildInstantiationHash(hasher: StableHasher): void;
|
|
17
|
+
hasIdenticalInstantiation(other: StreamResolver): boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A lookup returning multiple rows when instantiated.
|
|
21
|
+
*/
|
|
22
|
+
export type ExpandingLookup = ParameterLookup | EvaluateTableValuedFunction;
|
|
23
|
+
export declare class ParameterLookup implements Equatable {
|
|
24
|
+
readonly lookup: PointLookup;
|
|
25
|
+
readonly instantiation: ParameterValue[];
|
|
26
|
+
constructor(lookup: PointLookup, instantiation: ParameterValue[]);
|
|
27
|
+
buildHash(hasher: StableHasher): void;
|
|
28
|
+
equals(other: unknown): boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare class EvaluateTableValuedFunction implements Equatable {
|
|
31
|
+
readonly tableValuedFunction: RequestTableValuedResultSet;
|
|
32
|
+
readonly outputs: RowExpression[];
|
|
33
|
+
readonly filters: RowExpression[];
|
|
34
|
+
constructor(tableValuedFunction: RequestTableValuedResultSet, outputs: RowExpression[], filters: RowExpression[]);
|
|
35
|
+
buildHash(hasher: StableHasher): void;
|
|
36
|
+
equals(other: unknown): boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class ResolveBucket {
|
|
39
|
+
readonly instantiation: ParameterValue[];
|
|
40
|
+
readonly evaluators: HashSet<RowEvaluator>;
|
|
41
|
+
constructor(evaluator: RowEvaluator, instantiation: ParameterValue[]);
|
|
42
|
+
buildInstantiationHash(hasher: StableHasher): void;
|
|
43
|
+
hasIdenticalInstantiation(other: ResolveBucket): boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A value passed as input to a partition key of a {@link SourceRowProcessor}
|
|
47
|
+
*/
|
|
48
|
+
export type ParameterValue = RequestParameterValue | LookupResultParameterValue | IntersectionParameterValue;
|
|
49
|
+
/**
|
|
50
|
+
* A value derived from request data.
|
|
51
|
+
*/
|
|
52
|
+
export declare class RequestParameterValue implements Equatable {
|
|
53
|
+
readonly expression: RequestExpression;
|
|
54
|
+
constructor(expression: RequestExpression);
|
|
55
|
+
buildHash(hasher: StableHasher): void;
|
|
56
|
+
equals(other: unknown): boolean;
|
|
57
|
+
}
|
|
58
|
+
export declare class LookupResultParameterValue implements Equatable {
|
|
59
|
+
readonly resultIndex: number;
|
|
60
|
+
lookup: ExpandingLookup | undefined;
|
|
61
|
+
constructor(resultIndex: number);
|
|
62
|
+
buildHash(hasher: StableHasher): void;
|
|
63
|
+
equals(other: ParameterValue): boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare class IntersectionParameterValue implements Equatable {
|
|
66
|
+
readonly inner: ParameterValue[];
|
|
67
|
+
constructor(inner: ParameterValue[]);
|
|
68
|
+
buildHash(hasher: StableHasher): void;
|
|
69
|
+
equals(other: unknown): boolean;
|
|
70
|
+
}
|