@powersync/service-sync-rules 0.30.0 → 0.31.1
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/HydratedSyncRules.d.ts +3 -3
- package/dist/HydratedSyncRules.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +11 -37
- package/dist/SqlSyncRules.js +11 -340
- package/dist/SqlSyncRules.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 +21 -6
- package/dist/TablePattern.js +57 -30
- package/dist/TablePattern.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 +3 -3
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/compiler.d.ts +7 -1
- package/dist/compiler/compiler.js +19 -2
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +6 -0
- package/dist/compiler/ir_to_sync_plan.js +57 -12
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +45 -14
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.js +72 -24
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +35 -5
- package/dist/compiler/rows.js +64 -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 +1 -11
- package/dist/compiler/sqlite.js +81 -66
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +12 -11
- package/dist/compiler/table.js +17 -2
- package/dist/compiler/table.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 +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +17 -1
- package/dist/json_schema.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 +3 -3
- 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 +2 -2
- 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/evaluator/bucket_data_source.d.ts +1 -0
- package/dist/sync_plan/evaluator/bucket_data_source.js +13 -9
- 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 +12 -2
- package/dist/sync_plan/evaluator/index.js +26 -20
- 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.d.ts +2 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +13 -10
- 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 +37 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
- package/dist/sync_plan/plan.d.ts +40 -8
- package/dist/sync_plan/schema_inference.d.ts +2 -1
- package/dist/sync_plan/schema_inference.js +4 -2
- package/dist/sync_plan/schema_inference.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +15 -6
- package/dist/sync_plan/serialize.js +54 -8
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/types.d.ts +20 -5
- package/dist/types.js +27 -5
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/package.json +1 -1
- package/schema/sync_rules.json +19 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BucketDataSource, CreateSourceParams, HydratedBucketSource } from './BucketSource.js';
|
|
2
|
-
import { ParameterIndexLookupCreator, CompatibilityContext, EvaluatedParameters, EvaluatedRow, EvaluationError, GetBucketParameterQuerierResult, GetQuerierOptions, SqlEventDescriptor, SqliteInputValue, SqliteValue,
|
|
2
|
+
import { ParameterIndexLookupCreator, CompatibilityContext, EvaluatedParameters, EvaluatedRow, EvaluationError, GetBucketParameterQuerierResult, GetQuerierOptions, SqlEventDescriptor, SqliteInputValue, SqliteValue, SyncConfig } from './index.js';
|
|
3
3
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
4
4
|
import { EvaluateRowOptions, SqliteRow } from './types.js';
|
|
5
5
|
/**
|
|
@@ -10,11 +10,11 @@ export declare class HydratedSyncRules {
|
|
|
10
10
|
bucketSources: HydratedBucketSource[];
|
|
11
11
|
eventDescriptors: SqlEventDescriptor[];
|
|
12
12
|
compatibility: CompatibilityContext;
|
|
13
|
-
readonly definition:
|
|
13
|
+
readonly definition: SyncConfig;
|
|
14
14
|
private readonly innerEvaluateRow;
|
|
15
15
|
private readonly innerEvaluateParameterRow;
|
|
16
16
|
constructor(params: {
|
|
17
|
-
definition:
|
|
17
|
+
definition: SyncConfig;
|
|
18
18
|
createParams: CreateSourceParams;
|
|
19
19
|
bucketDataSources: BucketDataSource[];
|
|
20
20
|
bucketParameterIndexLookupCreators: ParameterIndexLookupCreator[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedSyncRules.js","sourceRoot":"","sources":["../src/HydratedSyncRules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HydratedSyncRules.js","sourceRoot":"","sources":["../src/HydratedSyncRules.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import { Scalar } from 'yaml';
|
|
2
1
|
import { BucketParameterQuerier, QuerierError } from './BucketParameterQuerier.js';
|
|
3
|
-
import { BucketDataSource, BucketSource, CreateSourceParams, ParameterIndexLookupCreator } from './BucketSource.js';
|
|
4
|
-
import { CompatibilityContext } from './compatibility.js';
|
|
5
2
|
import { YamlError } from './errors.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
9
|
-
import { QueryParseResult } from './SqlBucketDescriptor.js';
|
|
10
|
-
import { TablePattern } from './TablePattern.js';
|
|
11
|
-
import { RequestParameters, SourceSchema, SqliteInputValue, SqliteJsonRow, SqliteRow, SqliteValue } from './types.js';
|
|
3
|
+
import { RequestParameters, SourceSchema, SqliteJsonRow } from './types.js';
|
|
4
|
+
import { SyncConfig, SyncConfigWithErrors } from './SyncConfig.js';
|
|
12
5
|
export interface SyncRulesOptions {
|
|
13
6
|
schema?: SourceSchema;
|
|
14
7
|
/**
|
|
@@ -18,6 +11,13 @@ export interface SyncRulesOptions {
|
|
|
18
11
|
*/
|
|
19
12
|
defaultSchema: string;
|
|
20
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
21
|
}
|
|
22
22
|
export interface RequestedStream {
|
|
23
23
|
/**
|
|
@@ -54,33 +54,7 @@ export interface GetBucketParameterQuerierResult {
|
|
|
54
54
|
querier: BucketParameterQuerier;
|
|
55
55
|
errors: QuerierError[];
|
|
56
56
|
}
|
|
57
|
-
export declare class SqlSyncRules {
|
|
58
|
-
bucketDataSources: BucketDataSource[];
|
|
59
|
-
bucketParameterLookupSources: ParameterIndexLookupCreator[];
|
|
60
|
-
bucketSources: BucketSource[];
|
|
61
|
-
eventDescriptors: SqlEventDescriptor[];
|
|
62
|
-
compatibility: CompatibilityContext;
|
|
63
|
-
content: string;
|
|
64
|
-
errors: YamlError[];
|
|
57
|
+
export declare class SqlSyncRules extends SyncConfig {
|
|
65
58
|
static validate(yaml: string, options: SyncRulesOptions): YamlError[];
|
|
66
|
-
static fromYaml(yaml: string, options: SyncRulesOptions):
|
|
67
|
-
throwOnError(): void;
|
|
68
|
-
static tokenError(token: any, message: string): YamlError;
|
|
69
|
-
withScalar(scalar: Scalar, cb: (value: string) => QueryParseResult): QueryParseResult;
|
|
70
|
-
constructor(content: string);
|
|
71
|
-
/**
|
|
72
|
-
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
73
|
-
*
|
|
74
|
-
* @param params.hydrationState Transforms bucket ids based on persisted state. May omit for tests.
|
|
75
|
-
*/
|
|
76
|
-
hydrate(params?: CreateSourceParams): HydratedSyncRules;
|
|
77
|
-
applyRowContext<MaybeToast extends undefined = never>(source: SqliteRow<SqliteInputValue | MaybeToast>): SqliteRow<SqliteValue | MaybeToast>;
|
|
78
|
-
getSourceTables(): TablePattern[];
|
|
79
|
-
getEventTables(): TablePattern[];
|
|
80
|
-
tableTriggersEvent(table: SourceTableInterface): boolean;
|
|
81
|
-
tableSyncsData(table: SourceTableInterface): boolean;
|
|
82
|
-
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
83
|
-
debugGetOutputTables(): Record<string, any[]>;
|
|
84
|
-
debugRepresentation(): any[];
|
|
85
|
-
private parsePriority;
|
|
59
|
+
static fromYaml(yaml: string, options: SyncRulesOptions): SyncConfigWithErrors;
|
|
86
60
|
}
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { SqlEventDescriptor } from './events/SqlEventDescriptor.js';
|
|
6
|
-
import { HydratedSyncRules } from './HydratedSyncRules.js';
|
|
7
|
-
import { DEFAULT_HYDRATION_STATE } from './HydrationState.js';
|
|
8
|
-
import { validateSyncRulesSchema } from './json_schema.js';
|
|
9
|
-
import { SqlBucketDescriptor } from './SqlBucketDescriptor.js';
|
|
10
|
-
import { syncStreamFromSql } from './streams/from_sql.js';
|
|
11
|
-
import { applyRowContext } from './utils.js';
|
|
12
|
-
const ACCEPT_POTENTIALLY_DANGEROUS_QUERIES = Symbol('ACCEPT_POTENTIALLY_DANGEROUS_QUERIES');
|
|
13
|
-
export class SqlSyncRules {
|
|
14
|
-
bucketDataSources = [];
|
|
15
|
-
bucketParameterLookupSources = [];
|
|
16
|
-
bucketSources = [];
|
|
17
|
-
eventDescriptors = [];
|
|
18
|
-
compatibility = CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY;
|
|
19
|
-
content;
|
|
20
|
-
errors = [];
|
|
1
|
+
import { SyncRulesErrors, YamlError } from './errors.js';
|
|
2
|
+
import { SyncConfig } from './SyncConfig.js';
|
|
3
|
+
import { SyncConfigFromYaml } from './from_yaml.js';
|
|
4
|
+
export class SqlSyncRules extends SyncConfig {
|
|
21
5
|
static validate(yaml, options) {
|
|
22
6
|
try {
|
|
23
7
|
const rules = this.fromYaml(yaml, options);
|
|
@@ -36,326 +20,13 @@ export class SqlSyncRules {
|
|
|
36
20
|
}
|
|
37
21
|
}
|
|
38
22
|
static fromYaml(yaml, options) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
schema:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
{
|
|
47
|
-
tag: '!accept_potentially_dangerous_queries',
|
|
48
|
-
resolve(_text, _onError) {
|
|
49
|
-
return ACCEPT_POTENTIALLY_DANGEROUS_QUERIES;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
]
|
|
53
|
-
});
|
|
54
|
-
const rules = new SqlSyncRules(yaml);
|
|
55
|
-
if (parsed.errors.length > 0) {
|
|
56
|
-
rules.errors.push(...parsed.errors.map((error) => {
|
|
57
|
-
return new YamlError(error);
|
|
58
|
-
}));
|
|
59
|
-
if (throwOnError) {
|
|
60
|
-
rules.throwOnError();
|
|
61
|
-
}
|
|
62
|
-
return rules;
|
|
63
|
-
}
|
|
64
|
-
const declaredOptions = parsed.get('config');
|
|
65
|
-
let compatibility = CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY;
|
|
66
|
-
if (declaredOptions != null) {
|
|
67
|
-
const edition = (declaredOptions.get('edition') ?? CompatibilityEdition.LEGACY);
|
|
68
|
-
const options = new Map();
|
|
69
|
-
let maxTimeValuePrecision = undefined;
|
|
70
|
-
for (const entry of declaredOptions.items) {
|
|
71
|
-
const { key: { value: key }, value: { value } } = entry;
|
|
72
|
-
if (key == 'timestamp_max_precision') {
|
|
73
|
-
maxTimeValuePrecision = TimeValuePrecision.byName[value];
|
|
74
|
-
}
|
|
75
|
-
const option = CompatibilityOption.byName[key];
|
|
76
|
-
if (option) {
|
|
77
|
-
options.set(option, value);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
compatibility = new CompatibilityContext({ edition, overrides: options, maxTimeValuePrecision });
|
|
81
|
-
if (maxTimeValuePrecision && !compatibility.isEnabled(CompatibilityOption.timestampsIso8601)) {
|
|
82
|
-
rules.errors.push(new YamlError(new Error(`'timestamp_max_precision' requires 'timestamps_iso8601' to be enabled.`)));
|
|
83
|
-
}
|
|
84
|
-
rules.compatibility = compatibility;
|
|
85
|
-
}
|
|
86
|
-
// Bucket definitions using explicit parameter and data queries.
|
|
87
|
-
const bucketMap = parsed.get('bucket_definitions');
|
|
88
|
-
const streamMap = parsed.get('streams');
|
|
89
|
-
const definitionNames = new Set();
|
|
90
|
-
const checkUniqueName = (name, literal) => {
|
|
91
|
-
if (definitionNames.has(name)) {
|
|
92
|
-
rules.errors.push(this.tokenError(literal, 'Duplicate stream or bucket definition.'));
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
definitionNames.add(name);
|
|
96
|
-
return true;
|
|
97
|
-
};
|
|
98
|
-
if (bucketMap == null && streamMap == null) {
|
|
99
|
-
rules.errors.push(new YamlError(new Error(`'bucket_definitions' or 'streams' is required`)));
|
|
100
|
-
if (throwOnError) {
|
|
101
|
-
rules.throwOnError();
|
|
102
|
-
}
|
|
103
|
-
return rules;
|
|
104
|
-
}
|
|
105
|
-
for (let entry of bucketMap?.items ?? []) {
|
|
106
|
-
const { key: keyScalar, value } = entry;
|
|
107
|
-
const key = keyScalar.toString();
|
|
108
|
-
if (!checkUniqueName(key, keyScalar)) {
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
if (value == null || !(value instanceof YAMLMap)) {
|
|
112
|
-
rules.errors.push(this.tokenError(keyScalar, `'${key}' bucket definition must be an object`));
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
const accept_potentially_dangerous_queries = value.get('accept_potentially_dangerous_queries', true)?.value == true;
|
|
116
|
-
const parseOptionPriority = rules.parsePriority(value);
|
|
117
|
-
const queryOptions = {
|
|
118
|
-
...options,
|
|
119
|
-
accept_potentially_dangerous_queries,
|
|
120
|
-
priority: parseOptionPriority,
|
|
121
|
-
compatibility
|
|
122
|
-
};
|
|
123
|
-
const parameters = value.get('parameters', true);
|
|
124
|
-
const dataQueries = value.get('data', true);
|
|
125
|
-
const descriptor = new SqlBucketDescriptor(key);
|
|
126
|
-
if (parameters instanceof Scalar) {
|
|
127
|
-
rules.withScalar(parameters, (q) => {
|
|
128
|
-
return descriptor.addParameterQuery(q, queryOptions);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
else if (parameters instanceof YAMLSeq) {
|
|
132
|
-
for (let item of parameters.items) {
|
|
133
|
-
rules.withScalar(item, (q) => {
|
|
134
|
-
return descriptor.addParameterQuery(q, queryOptions);
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
descriptor.addParameterQuery('SELECT', queryOptions);
|
|
140
|
-
}
|
|
141
|
-
if (!(dataQueries instanceof YAMLSeq)) {
|
|
142
|
-
rules.errors.push(this.tokenError(dataQueries ?? value, `'data' must be an array`));
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
for (let query of dataQueries.items) {
|
|
146
|
-
rules.withScalar(query, (q) => {
|
|
147
|
-
return descriptor.addDataQuery(q, queryOptions, compatibility);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
rules.bucketSources.push(descriptor);
|
|
151
|
-
rules.bucketDataSources.push(...descriptor.dataSources);
|
|
152
|
-
rules.bucketParameterLookupSources.push(...descriptor.parameterIndexLookupCreators);
|
|
153
|
-
}
|
|
154
|
-
for (const entry of streamMap?.items ?? []) {
|
|
155
|
-
const { key: keyScalar, value } = entry;
|
|
156
|
-
const key = keyScalar.toString();
|
|
157
|
-
if (!checkUniqueName(key, keyScalar)) {
|
|
158
|
-
continue;
|
|
159
|
-
}
|
|
160
|
-
const accept_potentially_dangerous_queries = value.get('accept_potentially_dangerous_queries', true)?.value == true;
|
|
161
|
-
const queryOptions = {
|
|
162
|
-
...options,
|
|
163
|
-
accept_potentially_dangerous_queries,
|
|
164
|
-
priority: rules.parsePriority(value),
|
|
165
|
-
auto_subscribe: value.get('auto_subscribe', true)?.value == true,
|
|
166
|
-
compatibility
|
|
167
|
-
};
|
|
168
|
-
const data = value.get('query', true);
|
|
169
|
-
if (data instanceof Scalar) {
|
|
170
|
-
rules.withScalar(data, (q) => {
|
|
171
|
-
const [parsed, errors] = syncStreamFromSql(key, q, queryOptions);
|
|
172
|
-
rules.bucketSources.push(parsed);
|
|
173
|
-
rules.bucketDataSources.push(...parsed.dataSources);
|
|
174
|
-
rules.bucketParameterLookupSources.push(...parsed.parameterIndexLookupCreators);
|
|
175
|
-
return {
|
|
176
|
-
parsed: true,
|
|
177
|
-
errors
|
|
178
|
-
};
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
rules.errors.push(this.tokenError(data, 'Must be a string.'));
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
const eventMap = parsed.get('event_definitions');
|
|
187
|
-
for (const event of eventMap?.items ?? []) {
|
|
188
|
-
const { key, value } = event;
|
|
189
|
-
if (false == value instanceof YAMLMap) {
|
|
190
|
-
rules.errors.push(new YamlError(new Error(`Event definitions must be objects.`)));
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
const payloads = value.get('payloads');
|
|
194
|
-
if (false == payloads instanceof YAMLSeq) {
|
|
195
|
-
rules.errors.push(new YamlError(new Error(`Event definition payloads must be an array.`)));
|
|
196
|
-
continue;
|
|
197
|
-
}
|
|
198
|
-
const eventDescriptor = new SqlEventDescriptor(key.toString(), compatibility);
|
|
199
|
-
for (let item of payloads.items) {
|
|
200
|
-
if (!isScalar(item)) {
|
|
201
|
-
rules.errors.push(new YamlError(new Error(`Payload queries for events must be scalar.`)));
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
rules.withScalar(item, (q) => {
|
|
205
|
-
return eventDescriptor.addSourceQuery(q, options);
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
rules.eventDescriptors.push(eventDescriptor);
|
|
209
|
-
}
|
|
210
|
-
// Validate that there are no additional properties.
|
|
211
|
-
// Since these errors don't contain line numbers, do this last.
|
|
212
|
-
const valid = validateSyncRulesSchema(parsed.toJSON());
|
|
213
|
-
if (!valid) {
|
|
214
|
-
rules.errors.push(...validateSyncRulesSchema.errors.map((e) => {
|
|
215
|
-
return new YamlError(e);
|
|
216
|
-
}));
|
|
217
|
-
}
|
|
218
|
-
if (throwOnError) {
|
|
219
|
-
rules.throwOnError();
|
|
220
|
-
}
|
|
221
|
-
return rules;
|
|
222
|
-
}
|
|
223
|
-
throwOnError() {
|
|
224
|
-
if (this.errors.filter((e) => e.type != 'warning').length > 0) {
|
|
225
|
-
throw new SyncRulesErrors(this.errors);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
static tokenError(token, message) {
|
|
229
|
-
const start = token?.srcToken?.offset ?? 0;
|
|
230
|
-
const end = start + 1;
|
|
231
|
-
return new YamlError(new Error(message), { start, end });
|
|
232
|
-
}
|
|
233
|
-
withScalar(scalar, cb) {
|
|
234
|
-
const value = scalar.toString();
|
|
235
|
-
const wrapped = (value) => {
|
|
236
|
-
try {
|
|
237
|
-
return cb(value);
|
|
238
|
-
}
|
|
239
|
-
catch (e) {
|
|
240
|
-
return {
|
|
241
|
-
parsed: false,
|
|
242
|
-
errors: [e]
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
const result = wrapped(value);
|
|
247
|
-
for (let err of result.errors) {
|
|
248
|
-
let sourceOffset = scalar.srcToken.offset;
|
|
249
|
-
if (scalar.type == Scalar.QUOTE_DOUBLE || scalar.type == Scalar.QUOTE_SINGLE) {
|
|
250
|
-
// TODO: Is there a better way to do this?
|
|
251
|
-
sourceOffset += 1;
|
|
252
|
-
}
|
|
253
|
-
let offset;
|
|
254
|
-
let end;
|
|
255
|
-
if (err instanceof SqlRuleError && err.location) {
|
|
256
|
-
offset = err.location.start + sourceOffset;
|
|
257
|
-
end = err.location.end + sourceOffset;
|
|
258
|
-
}
|
|
259
|
-
else if (typeof err.token?._location?.start == 'number') {
|
|
260
|
-
offset = sourceOffset + err.token?._location?.start;
|
|
261
|
-
end = sourceOffset + err.token?._location?.end;
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
offset = sourceOffset;
|
|
265
|
-
end = sourceOffset + Math.max(value.length, 1);
|
|
266
|
-
}
|
|
267
|
-
const pos = { start: offset, end };
|
|
268
|
-
this.errors.push(new YamlError(err, pos));
|
|
269
|
-
}
|
|
270
|
-
return result;
|
|
271
|
-
}
|
|
272
|
-
constructor(content) {
|
|
273
|
-
this.content = content;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
277
|
-
*
|
|
278
|
-
* @param params.hydrationState Transforms bucket ids based on persisted state. May omit for tests.
|
|
279
|
-
*/
|
|
280
|
-
hydrate(params) {
|
|
281
|
-
let hydrationState = params?.hydrationState;
|
|
282
|
-
if (hydrationState == null || !this.compatibility.isEnabled(CompatibilityOption.versionedBucketIds)) {
|
|
283
|
-
hydrationState = DEFAULT_HYDRATION_STATE;
|
|
284
|
-
}
|
|
285
|
-
const resolvedParams = { hydrationState };
|
|
286
|
-
return new HydratedSyncRules({
|
|
287
|
-
definition: this,
|
|
288
|
-
createParams: resolvedParams,
|
|
289
|
-
bucketDataSources: this.bucketDataSources,
|
|
290
|
-
bucketParameterIndexLookupCreators: this.bucketParameterLookupSources,
|
|
291
|
-
eventDescriptors: this.eventDescriptors,
|
|
292
|
-
compatibility: this.compatibility
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
applyRowContext(source) {
|
|
296
|
-
return applyRowContext(source, this.compatibility);
|
|
297
|
-
}
|
|
298
|
-
getSourceTables() {
|
|
299
|
-
const sourceTables = new Map();
|
|
300
|
-
for (const bucket of this.bucketDataSources) {
|
|
301
|
-
for (const r of bucket.getSourceTables()) {
|
|
302
|
-
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
303
|
-
sourceTables.set(key, r);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
for (const bucket of this.bucketParameterLookupSources) {
|
|
307
|
-
for (const r of bucket.getSourceTables()) {
|
|
308
|
-
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
309
|
-
sourceTables.set(key, r);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
for (const event of this.eventDescriptors) {
|
|
313
|
-
for (const r of event.getSourceTables()) {
|
|
314
|
-
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
315
|
-
sourceTables.set(key, r);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
return [...sourceTables.values()];
|
|
319
|
-
}
|
|
320
|
-
getEventTables() {
|
|
321
|
-
const eventTables = new Map();
|
|
322
|
-
for (const event of this.eventDescriptors) {
|
|
323
|
-
for (const r of event.getSourceTables()) {
|
|
324
|
-
const key = `${r.connectionTag}.${r.schema}.${r.tablePattern}`;
|
|
325
|
-
eventTables.set(key, r);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
return [...eventTables.values()];
|
|
329
|
-
}
|
|
330
|
-
tableTriggersEvent(table) {
|
|
331
|
-
return this.eventDescriptors.some((bucket) => bucket.tableTriggersEvent(table));
|
|
332
|
-
}
|
|
333
|
-
tableSyncsData(table) {
|
|
334
|
-
return this.bucketDataSources.some((b) => b.tableSyncsData(table));
|
|
335
|
-
}
|
|
336
|
-
tableSyncsParameters(table) {
|
|
337
|
-
return this.bucketParameterLookupSources.some((b) => b.tableSyncsParameters(table));
|
|
338
|
-
}
|
|
339
|
-
debugGetOutputTables() {
|
|
340
|
-
let result = {};
|
|
341
|
-
for (let bucket of this.bucketDataSources) {
|
|
342
|
-
bucket.debugWriteOutputTables(result);
|
|
343
|
-
}
|
|
344
|
-
return result;
|
|
345
|
-
}
|
|
346
|
-
debugRepresentation() {
|
|
347
|
-
return this.bucketSources.map((rules) => rules.debugRepresentation());
|
|
348
|
-
}
|
|
349
|
-
parsePriority(value) {
|
|
350
|
-
if (value.has('priority')) {
|
|
351
|
-
const priorityValue = value.get('priority', true);
|
|
352
|
-
if (typeof priorityValue.value != 'number' || !isValidPriority(priorityValue.value)) {
|
|
353
|
-
this.errors.push(SqlSyncRules.tokenError(priorityValue, 'Invalid priority, expected a number between 0 and 3 (inclusive).'));
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
return priorityValue.value;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
23
|
+
const parser = new SyncConfigFromYaml({
|
|
24
|
+
throwOnError: options.throwOnError ?? true,
|
|
25
|
+
allowNewSyncCompiler: options.allowNewSyncCompiler ?? false,
|
|
26
|
+
schema: options.schema,
|
|
27
|
+
defaultSchema: options.defaultSchema
|
|
28
|
+
}, yaml);
|
|
29
|
+
return parser.read();
|
|
359
30
|
}
|
|
360
31
|
}
|
|
361
32
|
//# sourceMappingURL=SqlSyncRules.js.map
|
package/dist/SqlSyncRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"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"}
|
|
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;AA6DpD,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,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,KAAK;YAC3D,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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BucketDataSource, BucketSource, CreateSourceParams, ParameterIndexLookupCreator } from './BucketSource.js';
|
|
2
|
+
import { CompatibilityContext } from './compatibility.js';
|
|
3
|
+
import { YamlError } from './errors.js';
|
|
4
|
+
import { SqlEventDescriptor } from './events/SqlEventDescriptor.js';
|
|
5
|
+
import { HydratedSyncRules } from './HydratedSyncRules.js';
|
|
6
|
+
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
7
|
+
import { TablePattern } from './TablePattern.js';
|
|
8
|
+
import { SqliteInputValue, SqliteRow, SqliteValue } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* A class describing how the sync process has been configured (i.e. which buckets and parameters to create and how to
|
|
11
|
+
* resolve buckets for connections).
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class SyncConfig {
|
|
14
|
+
bucketDataSources: BucketDataSource[];
|
|
15
|
+
bucketParameterLookupSources: ParameterIndexLookupCreator[];
|
|
16
|
+
bucketSources: BucketSource[];
|
|
17
|
+
compatibility: CompatibilityContext;
|
|
18
|
+
eventDescriptors: SqlEventDescriptor[];
|
|
19
|
+
/**
|
|
20
|
+
* The (YAML-based) source contents from which these sync rules have been derived.
|
|
21
|
+
*/
|
|
22
|
+
content: string;
|
|
23
|
+
constructor(content: string);
|
|
24
|
+
/**
|
|
25
|
+
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
26
|
+
*
|
|
27
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state. May omit for tests.
|
|
28
|
+
*/
|
|
29
|
+
hydrate(params?: CreateSourceParams): HydratedSyncRules;
|
|
30
|
+
applyRowContext<MaybeToast extends undefined = never>(source: SqliteRow<SqliteInputValue | MaybeToast>): SqliteRow<SqliteValue | MaybeToast>;
|
|
31
|
+
protected writeSourceTables(sourceTables: Map<String, TablePattern>): void;
|
|
32
|
+
getSourceTables(): TablePattern[];
|
|
33
|
+
getEventTables(): TablePattern[];
|
|
34
|
+
tableTriggersEvent(table: SourceTableInterface): boolean;
|
|
35
|
+
tableSyncsData(table: SourceTableInterface): boolean;
|
|
36
|
+
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
37
|
+
debugGetOutputTables(): Record<string, any[]>;
|
|
38
|
+
debugRepresentation(): any[];
|
|
39
|
+
}
|
|
40
|
+
export interface SyncConfigWithErrors {
|
|
41
|
+
config: SyncConfig;
|
|
42
|
+
errors: YamlError[];
|
|
43
|
+
}
|
|
@@ -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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"}
|