@powersync/service-sync-rules 0.0.0-dev-20260203154303 → 0.0.0-dev-20260223080959

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 (105) hide show
  1. package/dist/ExpressionType.d.ts +4 -2
  2. package/dist/ExpressionType.js.map +1 -1
  3. package/dist/HydratedSyncRules.d.ts +3 -3
  4. package/dist/HydratedSyncRules.js.map +1 -1
  5. package/dist/SqlSyncRules.d.ts +11 -37
  6. package/dist/SqlSyncRules.js +11 -340
  7. package/dist/SqlSyncRules.js.map +1 -1
  8. package/dist/SyncConfig.d.ts +46 -0
  9. package/dist/SyncConfig.js +99 -0
  10. package/dist/SyncConfig.js.map +1 -0
  11. package/dist/TablePattern.d.ts +21 -6
  12. package/dist/TablePattern.js +57 -30
  13. package/dist/TablePattern.js.map +1 -1
  14. package/dist/compatibility.d.ts +7 -0
  15. package/dist/compatibility.js +34 -0
  16. package/dist/compatibility.js.map +1 -1
  17. package/dist/compiler/bucket_resolver.d.ts +3 -3
  18. package/dist/compiler/bucket_resolver.js.map +1 -1
  19. package/dist/compiler/compiler.d.ts +22 -3
  20. package/dist/compiler/compiler.js +22 -5
  21. package/dist/compiler/compiler.js.map +1 -1
  22. package/dist/compiler/filter.js +1 -1
  23. package/dist/compiler/filter.js.map +1 -1
  24. package/dist/compiler/ir_to_sync_plan.d.ts +6 -0
  25. package/dist/compiler/ir_to_sync_plan.js +57 -12
  26. package/dist/compiler/ir_to_sync_plan.js.map +1 -1
  27. package/dist/compiler/parser.js +53 -13
  28. package/dist/compiler/parser.js.map +1 -1
  29. package/dist/compiler/querier_graph.js +72 -24
  30. package/dist/compiler/querier_graph.js.map +1 -1
  31. package/dist/compiler/rows.d.ts +35 -5
  32. package/dist/compiler/rows.js +64 -2
  33. package/dist/compiler/rows.js.map +1 -1
  34. package/dist/compiler/scope.d.ts +4 -1
  35. package/dist/compiler/scope.js +13 -2
  36. package/dist/compiler/scope.js.map +1 -1
  37. package/dist/compiler/sqlite.d.ts +2 -11
  38. package/dist/compiler/sqlite.js +104 -79
  39. package/dist/compiler/sqlite.js.map +1 -1
  40. package/dist/compiler/table.d.ts +28 -10
  41. package/dist/compiler/table.js +28 -3
  42. package/dist/compiler/table.js.map +1 -1
  43. package/dist/from_yaml.d.ts +28 -0
  44. package/dist/from_yaml.js +411 -0
  45. package/dist/from_yaml.js.map +1 -0
  46. package/dist/index.d.ts +4 -3
  47. package/dist/index.js +4 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/json_schema.js +17 -1
  50. package/dist/json_schema.js.map +1 -1
  51. package/dist/schema-generators/DartSchemaGenerator.d.ts +3 -3
  52. package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
  53. package/dist/schema-generators/DotNetSchemaGenerator.d.ts +2 -2
  54. package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
  55. package/dist/schema-generators/JsLegacySchemaGenerator.d.ts +2 -2
  56. package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -1
  57. package/dist/schema-generators/KotlinSchemaGenerator.d.ts +2 -2
  58. package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
  59. package/dist/schema-generators/RoomSchemaGenerator.d.ts +2 -2
  60. package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
  61. package/dist/schema-generators/SchemaGenerator.d.ts +8 -3
  62. package/dist/schema-generators/SchemaGenerator.js +20 -13
  63. package/dist/schema-generators/SchemaGenerator.js.map +1 -1
  64. package/dist/schema-generators/SqlSchemaGenerator.d.ts +2 -2
  65. package/dist/schema-generators/SqlSchemaGenerator.js.map +1 -1
  66. package/dist/schema-generators/SwiftSchemaGenerator.d.ts +2 -2
  67. package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
  68. package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -2
  69. package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
  70. package/dist/sql_functions.d.ts +2 -2
  71. package/dist/sync_plan/engine/scalar_expression_engine.d.ts +4 -2
  72. package/dist/sync_plan/engine/scalar_expression_engine.js +18 -0
  73. package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
  74. package/dist/sync_plan/evaluator/bucket_data_source.d.ts +1 -0
  75. package/dist/sync_plan/evaluator/bucket_data_source.js +29 -12
  76. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
  77. package/dist/sync_plan/evaluator/bucket_source.js +1 -1
  78. package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
  79. package/dist/sync_plan/evaluator/index.d.ts +12 -2
  80. package/dist/sync_plan/evaluator/index.js +26 -20
  81. package/dist/sync_plan/evaluator/index.js.map +1 -1
  82. package/dist/sync_plan/evaluator/parameter_evaluator.js +22 -2
  83. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
  84. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.d.ts +2 -1
  85. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +13 -10
  86. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
  87. package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +20 -0
  88. package/dist/sync_plan/evaluator/table_processor_to_sql.js +37 -0
  89. package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
  90. package/dist/sync_plan/expression_visitor.d.ts +1 -1
  91. package/dist/sync_plan/expression_visitor.js +11 -1
  92. package/dist/sync_plan/expression_visitor.js.map +1 -1
  93. package/dist/sync_plan/plan.d.ts +40 -8
  94. package/dist/sync_plan/schema_inference.d.ts +16 -0
  95. package/dist/sync_plan/schema_inference.js +123 -0
  96. package/dist/sync_plan/schema_inference.js.map +1 -0
  97. package/dist/sync_plan/serialize.d.ts +30 -7
  98. package/dist/sync_plan/serialize.js +148 -3
  99. package/dist/sync_plan/serialize.js.map +1 -1
  100. package/dist/types.d.ts +20 -5
  101. package/dist/types.js +27 -5
  102. package/dist/types.js.map +1 -1
  103. package/dist/utils.d.ts +1 -1
  104. package/package.json +1 -1
  105. package/schema/sync_rules.json +19 -3
@@ -5,11 +5,13 @@ export declare const TYPE_INTEGER = 4;
5
5
  export declare const TYPE_REAL = 8;
6
6
  export type SqliteType = 'null' | 'blob' | 'text' | 'integer' | 'real' | 'numeric';
7
7
  export type SqliteValueType = 'null' | 'blob' | 'text' | 'integer' | 'real';
8
- export interface ColumnDefinition {
9
- name: string;
8
+ export interface ColumnType {
10
9
  type: ExpressionType;
11
10
  originalType?: string;
12
11
  }
12
+ export interface ColumnDefinition extends ColumnType {
13
+ name: string;
14
+ }
13
15
  export declare class ExpressionType {
14
16
  readonly typeFlags: number;
15
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
@@ -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, SqlSyncRules } from './index.js';
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: SqlSyncRules;
13
+ readonly definition: SyncConfig;
14
14
  private readonly innerEvaluateRow;
15
15
  private readonly innerEvaluateParameterRow;
16
16
  constructor(params: {
17
- definition: SqlSyncRules;
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":"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"}
1
+ {"version":3,"file":"HydratedSyncRules.js","sourceRoot":"","sources":["../src/HydratedSyncRules.ts"],"names":[],"mappings":"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"}
@@ -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 { SqlEventDescriptor } from './events/SqlEventDescriptor.js';
7
- import { HydratedSyncRules } from './HydratedSyncRules.js';
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): SqlSyncRules;
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
  }
@@ -1,23 +1,7 @@
1
- import { isScalar, LineCounter, parseDocument, Scalar, YAMLMap, YAMLSeq } from 'yaml';
2
- import { isValidPriority } from './BucketDescription.js';
3
- import { CompatibilityContext, CompatibilityEdition, CompatibilityOption, TimeValuePrecision } from './compatibility.js';
4
- import { SqlRuleError, SyncRulesErrors, YamlError } from './errors.js';
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 throwOnError = options.throwOnError ?? true;
40
- const lineCounter = new LineCounter();
41
- const parsed = parseDocument(yaml, {
42
- schema: 'core',
43
- keepSourceTokens: true,
44
- lineCounter,
45
- customTags: [
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
@@ -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,46 @@
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
+ * Note: versionedBucketIds is not checked here: It is set at a higher level based
28
+ * on the storage version of the persisted sync rules, and used in hydrationState.
29
+ *
30
+ * @param params.hydrationState Transforms bucket ids based on persisted state.
31
+ */
32
+ hydrate(params: CreateSourceParams): HydratedSyncRules;
33
+ applyRowContext<MaybeToast extends undefined = never>(source: SqliteRow<SqliteInputValue | MaybeToast>): SqliteRow<SqliteValue | MaybeToast>;
34
+ protected writeSourceTables(sourceTables: Map<String, TablePattern>): void;
35
+ getSourceTables(): TablePattern[];
36
+ getEventTables(): TablePattern[];
37
+ tableTriggersEvent(table: SourceTableInterface): boolean;
38
+ tableSyncsData(table: SourceTableInterface): boolean;
39
+ tableSyncsParameters(table: SourceTableInterface): boolean;
40
+ debugGetOutputTables(): Record<string, any[]>;
41
+ debugRepresentation(): any[];
42
+ }
43
+ export interface SyncConfigWithErrors {
44
+ config: SyncConfig;
45
+ errors: YamlError[];
46
+ }