@powersync/service-sync-rules 0.43.0 → 0.44.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/HydratedSyncConfig.d.ts +2 -0
- package/dist/HydratedSyncConfig.js +6 -0
- package/dist/HydratedSyncConfig.js.map +1 -1
- package/dist/SourceTableConfig.d.ts +42 -0
- package/dist/SourceTableConfig.js +152 -0
- package/dist/SourceTableConfig.js.map +1 -0
- package/dist/SqlSyncRules.d.ts +14 -0
- package/dist/SqlSyncRules.js +2 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/SyncConfig.d.ts +3 -1
- package/dist/SyncConfig.js +3 -1
- package/dist/SyncConfig.js.map +1 -1
- package/dist/SyncConfigDiagnostics.d.ts +12 -0
- package/dist/SyncConfigDiagnostics.js +2 -0
- package/dist/SyncConfigDiagnostics.js.map +1 -0
- package/dist/TablePattern.d.ts +2 -2
- package/dist/TablePattern.js +17 -7
- package/dist/TablePattern.js.map +1 -1
- package/dist/from_yaml.d.ts +3 -1
- package/dist/from_yaml.js +116 -19
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +7 -0
- package/dist/json.js +2 -0
- package/dist/json.js.map +1 -0
- package/dist/json_schema.d.ts +10 -0
- package/dist/json_schema.js +24 -4
- package/dist/json_schema.js.map +1 -1
- package/dist/legacy/streams/from_sql.js +1 -1
- package/dist/legacy/streams/from_sql.js.map +1 -1
- package/dist/mongo/MongoBsonValidators.d.ts +78 -0
- package/dist/mongo/MongoBsonValidators.js +129 -0
- package/dist/mongo/MongoBsonValidators.js.map +1 -0
- package/dist/mongo/MongoFilterExpression.d.ts +65 -0
- package/dist/mongo/MongoFilterExpression.js +183 -0
- package/dist/mongo/MongoFilterExpression.js.map +1 -0
- package/dist/mongo/MongoFilterValidation.d.ts +28 -0
- package/dist/mongo/MongoFilterValidation.js +47 -0
- package/dist/mongo/MongoFilterValidation.js.map +1 -0
- package/dist/schema-generators/TsSchemaGenerator.d.ts +1 -0
- package/dist/schema-generators/TsSchemaGenerator.js +15 -9
- package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +2 -0
- package/dist/sync_plan/serialize.d.ts +13 -2
- package/dist/sync_plan/serialize.js +17 -8
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/types.d.ts +1 -8
- package/dist/types.js +8 -13
- package/dist/types.js.map +1 -1
- package/dist/yaml_source_locations.d.ts +14 -0
- package/dist/yaml_source_locations.js +112 -0
- package/dist/yaml_source_locations.js.map +1 -0
- package/dist/yaml_validation.js.map +1 -1
- package/package.json +5 -2
- package/schema/sync_config.json +382 -2
- package/schema/sync_rules.json +620 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BucketDataSource } from './BucketSource.js';
|
|
2
2
|
import { BucketSource, CompatibilityContext, EvaluatedParameters, EvaluatedRow, EvaluationError, GetBucketParameterQuerierResult, GetQuerierOptions, HydratedEventDescriptor, HydrateSyncConfigParams, ParameterIndexLookupCreator, SqliteInputValue, SqliteValue, SyncConfig, TablePattern } from './index.js';
|
|
3
|
+
import { SourceTableConfigMap } from './SourceTableConfig.js';
|
|
3
4
|
import { SourceTableRef } from './SourceTableRef.js';
|
|
4
5
|
import { EvaluateRowOptions, SqliteRow } from './types.js';
|
|
5
6
|
export interface MatchingSources {
|
|
@@ -17,6 +18,7 @@ export interface MatchingSources {
|
|
|
17
18
|
*/
|
|
18
19
|
export declare class HydratedSyncConfig {
|
|
19
20
|
#private;
|
|
21
|
+
readonly sourceTableConfig: SourceTableConfigMap;
|
|
20
22
|
/**
|
|
21
23
|
* These are used by queriers, and do not support merging across multiple SyncConfigs.
|
|
22
24
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CompatibilityContext, isEvaluatedParameters, isEvaluatedRow, isEvaluationError, mergeBucketParameterQueriers, mergeDataSources, mergeParameterIndexLookupCreators, parameterLookupScopeKey } from './index.js';
|
|
2
2
|
import { sourceTableRefKey } from './SourceTableRef.js';
|
|
3
3
|
import { createScalarExpressionEngine } from './sync_plan/engine/factory.js';
|
|
4
|
+
import { PrecompiledSyncConfig } from './sync_plan/evaluator/index.js';
|
|
4
5
|
import { applyRowContext, uniqueBy } from './utils.js';
|
|
5
6
|
/**
|
|
6
7
|
* HydratedSyncConfig is sync config definitions along with persisted state.
|
|
@@ -12,6 +13,7 @@ import { applyRowContext, uniqueBy } from './utils.js';
|
|
|
12
13
|
* The persisted state specifically affects bucket names, as well as V3+ storage structure.
|
|
13
14
|
*/
|
|
14
15
|
export class HydratedSyncConfig {
|
|
16
|
+
sourceTableConfig;
|
|
15
17
|
/**
|
|
16
18
|
* These are used by queriers, and do not support merging across multiple SyncConfigs.
|
|
17
19
|
*/
|
|
@@ -56,6 +58,10 @@ export class HydratedSyncConfig {
|
|
|
56
58
|
if (definitions.length == 0) {
|
|
57
59
|
throw new Error('HydratedSyncConfig requires at least one SyncConfig definition');
|
|
58
60
|
}
|
|
61
|
+
// The service validates that definitions sharing a source reader have compatible source-table options.
|
|
62
|
+
const firstConfig = definitions[0];
|
|
63
|
+
this.sourceTableConfig =
|
|
64
|
+
firstConfig instanceof PrecompiledSyncConfig ? (firstConfig.plan.sourceTableConfig ?? {}) : {};
|
|
59
65
|
this.sourceDefinitions = [...definitions];
|
|
60
66
|
this.compatibility = assertSharedCompatibility(this.sourceDefinitions);
|
|
61
67
|
this.hydrationInput = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedSyncConfig.js","sourceRoot":"","sources":["../src/HydratedSyncConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,oBAAoB,EASpB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,EAChB,iCAAiC,EAEjC,uBAAuB,EAQxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"HydratedSyncConfig.js","sourceRoot":"","sources":["../src/HydratedSyncConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { JsonObject } from './json.js';
|
|
2
|
+
import { type MongoTableFilter } from './mongo/MongoFilterExpression.js';
|
|
3
|
+
import { ImplicitSchemaTablePattern } from './TablePattern.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for one entry in `config.source_table_options`. MongoDB filtering is parsed in every edition; execution support is validated by the source adapter.
|
|
6
|
+
*/
|
|
7
|
+
export interface SourceTableConfig {
|
|
8
|
+
mongodb_filter_expression?: MongoTableFilter;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Source-table options keyed by an authored table pattern.
|
|
12
|
+
*/
|
|
13
|
+
export type SourceTableConfigMap<TTableConfig extends SourceTableConfig = SourceTableConfig> = Readonly<Partial<Record<string, TTableConfig>>>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate the source-table options schema with MongoDB pre-filtering expressions.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createSourceTableConfigSchema(): JsonObject;
|
|
18
|
+
/**
|
|
19
|
+
* Parse a source-table key using the same right-to-left qualification as Sync Stream table references.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseSourceTableConfigKey(name: string): ImplicitSchemaTablePattern;
|
|
22
|
+
/**
|
|
23
|
+
* Find authored keys that identify the same pattern after SQL identifier normalization.
|
|
24
|
+
* Invalid keys are left to the source-table schema validator.
|
|
25
|
+
*/
|
|
26
|
+
export declare function findDuplicateSourceTableConfigKeys(keys: Iterable<string>): Array<[string, string]>;
|
|
27
|
+
/**
|
|
28
|
+
* Validate and copy source-table options while preserving declaration order.
|
|
29
|
+
*/
|
|
30
|
+
export declare function normalizeSourceTableConfig(value: unknown): SourceTableConfigMap;
|
|
31
|
+
/**
|
|
32
|
+
* Reject filter connection tags that query hydration cannot honor.
|
|
33
|
+
*/
|
|
34
|
+
export declare function assertMongoFilterConnection(pattern: ImplicitSchemaTablePattern): void;
|
|
35
|
+
/**
|
|
36
|
+
* Conservative equality: declaration order and expression order are significant.
|
|
37
|
+
*/
|
|
38
|
+
export declare function sourceTableConfigsEqual(left: SourceTableConfigMap, right: SourceTableConfigMap): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Configured expressions require execution support even when current collections opt out.
|
|
41
|
+
*/
|
|
42
|
+
export declare function hasMongoFilterExpressions(config: SourceTableConfigMap, connectionTag: string): boolean;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { MONGO_FILTER_VALIDATOR } from './mongo/MongoFilterExpression.js';
|
|
2
|
+
import { DEFAULT_TAG, ImplicitSchemaTablePattern, TablePattern } from './TablePattern.js';
|
|
3
|
+
const SOURCE_TABLE_NAME_ERROR = 'Source table patterns must use <table>, <database>.<table>, or <connection>.<database>.<table>. Double-quote names containing dots or quotes.';
|
|
4
|
+
/**
|
|
5
|
+
* Generate the source-table options schema with MongoDB pre-filtering expressions.
|
|
6
|
+
*/
|
|
7
|
+
export function createSourceTableConfigSchema() {
|
|
8
|
+
return {
|
|
9
|
+
type: 'object',
|
|
10
|
+
propertyNames: {
|
|
11
|
+
minLength: 1,
|
|
12
|
+
pattern: '^(?:[^."]+|"(?:[^"]|"")+")(?:\\.(?:[^."]+|"(?:[^"]|"")+")){0,2}$'
|
|
13
|
+
},
|
|
14
|
+
additionalProperties: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
mongodb_filter_expression: {
|
|
18
|
+
anyOf: [{ $ref: '#/definitions/mongodb_filter_expression' }, { const: 'disabled' }]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
additionalProperties: false
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse a source-table key using the same right-to-left qualification as Sync Stream table references.
|
|
27
|
+
*/
|
|
28
|
+
export function parseSourceTableConfigKey(name) {
|
|
29
|
+
const parts = parseQualifiedIdentifiers(name);
|
|
30
|
+
if (parts.length > 3)
|
|
31
|
+
throw new Error(SOURCE_TABLE_NAME_ERROR);
|
|
32
|
+
if (parts.length == 1)
|
|
33
|
+
return new ImplicitSchemaTablePattern(null, parts[0]);
|
|
34
|
+
if (parts.length == 2)
|
|
35
|
+
return new TablePattern(parts[0], parts[1], DEFAULT_TAG);
|
|
36
|
+
return new TablePattern(parts[1], parts[2], parts[0]);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Find authored keys that identify the same pattern after SQL identifier normalization.
|
|
40
|
+
* Invalid keys are left to the source-table schema validator.
|
|
41
|
+
*/
|
|
42
|
+
export function findDuplicateSourceTableConfigKeys(keys) {
|
|
43
|
+
const seen = new Map();
|
|
44
|
+
const duplicates = [];
|
|
45
|
+
for (const key of keys) {
|
|
46
|
+
let pattern;
|
|
47
|
+
try {
|
|
48
|
+
pattern = parseSourceTableConfigKey(key);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const identity = JSON.stringify([pattern.connectionTag, pattern.schema, pattern.tablePattern]);
|
|
54
|
+
const previous = seen.get(identity);
|
|
55
|
+
if (previous !== undefined) {
|
|
56
|
+
duplicates.push([previous, key]);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
seen.set(identity, key);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return duplicates;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Split a source-table key on unquoted dots and normalize each identifier.
|
|
66
|
+
*/
|
|
67
|
+
function parseQualifiedIdentifiers(name) {
|
|
68
|
+
/*
|
|
69
|
+
* Match <table>, <database>.<table>, or <connection>.<database>.<table> from right to left.
|
|
70
|
+
* Each component is either unquoted without dots or quotes, or quoted to allow dots and escaped quotes within it.
|
|
71
|
+
* A quote inside a quoted component is represented by two consecutive quotes, following SQL identifier syntax.
|
|
72
|
+
*/
|
|
73
|
+
const qualifiedIdentifier = /^(?:(?:(?<connection>"(?:[^"]|"")+"|[^."]+)\.)?(?<database>"(?:[^"]|"")+"|[^."]+)\.)?(?<table>"(?:[^"]|"")+"|[^."]+)$/;
|
|
74
|
+
const match = qualifiedIdentifier.exec(name);
|
|
75
|
+
if (match == null)
|
|
76
|
+
throw new Error(SOURCE_TABLE_NAME_ERROR);
|
|
77
|
+
// Nesting the optional groups aligns one-, two-, and three-part names from the right.
|
|
78
|
+
return [match.groups.connection, match.groups.database, match.groups.table]
|
|
79
|
+
.filter((part) => part != null)
|
|
80
|
+
.map((part) => {
|
|
81
|
+
// Quoted names preserve case and may contain dots or escaped quotes. Unquoted names follow SQL case folding.
|
|
82
|
+
return part.startsWith('"') ? part.slice(1, -1).replaceAll('""', '"') : part.toLowerCase();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Validate and copy source-table options while preserving declaration order.
|
|
87
|
+
*/
|
|
88
|
+
export function normalizeSourceTableConfig(value) {
|
|
89
|
+
if (value === undefined)
|
|
90
|
+
return {};
|
|
91
|
+
assertObject(value, 'Source table configuration must be a JSON object.');
|
|
92
|
+
const duplicate = findDuplicateSourceTableConfigKeys(Object.keys(value))[0];
|
|
93
|
+
if (duplicate != null) {
|
|
94
|
+
const [previous, key] = duplicate;
|
|
95
|
+
throw new Error(`Source-table keys ${JSON.stringify(previous)} and ${JSON.stringify(key)} resolve to the same pattern.`);
|
|
96
|
+
}
|
|
97
|
+
return Object.fromEntries(Object.entries(value).map(([table, options]) => {
|
|
98
|
+
if (!table)
|
|
99
|
+
throw new Error('A source table name must not be empty.');
|
|
100
|
+
const pattern = parseSourceTableConfigKey(table);
|
|
101
|
+
assertObject(options, 'Source table options must be JSON objects.');
|
|
102
|
+
for (const key of Object.keys(options)) {
|
|
103
|
+
if (key !== 'mongodb_filter_expression')
|
|
104
|
+
throw new Error(`Unknown source-table option: ${key}`);
|
|
105
|
+
}
|
|
106
|
+
const filter = options.mongodb_filter_expression;
|
|
107
|
+
if (filter !== undefined && filter !== 'disabled') {
|
|
108
|
+
assertMongoFilterConnection(pattern);
|
|
109
|
+
const result = MONGO_FILTER_VALIDATOR.safeParse(filter);
|
|
110
|
+
if (!result.success) {
|
|
111
|
+
throw new Error(`Invalid MongoDB pre-filtering expression for source table ${JSON.stringify(table)}: ${result.error.message}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return [table, structuredClone(options)];
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Reject filter connection tags that query hydration cannot honor.
|
|
119
|
+
*/
|
|
120
|
+
export function assertMongoFilterConnection(pattern) {
|
|
121
|
+
// FIXME: Revisit when multiple connections are supported and query hydration honors explicit tags.
|
|
122
|
+
// Until then, accepting another tag can silently omit its filter while the query reads the default connection.
|
|
123
|
+
const tag = pattern.connectionTag ?? DEFAULT_TAG;
|
|
124
|
+
if (tag !== DEFAULT_TAG) {
|
|
125
|
+
throw new Error(`MongoDB replication pre-filtering only supports the "${DEFAULT_TAG}" connection; connection ${JSON.stringify(tag)} is not supported.`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Conservative equality: declaration order and expression order are significant.
|
|
130
|
+
*/
|
|
131
|
+
export function sourceTableConfigsEqual(left, right) {
|
|
132
|
+
try {
|
|
133
|
+
return JSON.stringify(normalizeSourceTableConfig(left)) == JSON.stringify(normalizeSourceTableConfig(right));
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Saved options may no longer validate after an upgrade. Do not reuse their replication stream.
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function assertObject(value, message) {
|
|
141
|
+
if (value == null || typeof value != 'object' || Array.isArray(value))
|
|
142
|
+
throw new Error(message);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Configured expressions require execution support even when current collections opt out.
|
|
146
|
+
*/
|
|
147
|
+
export function hasMongoFilterExpressions(config, connectionTag) {
|
|
148
|
+
return Object.entries(config).some(([name, options]) => (parseSourceTableConfigKey(name).connectionTag ?? DEFAULT_TAG) === connectionTag &&
|
|
149
|
+
options?.mongodb_filter_expression !== undefined &&
|
|
150
|
+
options.mongodb_filter_expression !== 'disabled');
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=SourceTableConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceTableConfig.js","sourceRoot":"","sources":["../src/SourceTableConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -2,7 +2,16 @@ import { BucketPriority } from './BucketDescription.js';
|
|
|
2
2
|
import { SyncConfig, SyncConfigWithErrors } from './SyncConfig.js';
|
|
3
3
|
import { YamlError } from './errors.js';
|
|
4
4
|
import { RequestParameters, SourceSchema, SqliteJsonRow } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Source connection types keyed by connection tag for sync config validation.
|
|
7
|
+
*/
|
|
8
|
+
export type SourceConnectionMap = Record<string, {
|
|
9
|
+
type: string;
|
|
10
|
+
}>;
|
|
5
11
|
export interface SyncRulesOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Source database schema.
|
|
14
|
+
*/
|
|
6
15
|
schema?: SourceSchema;
|
|
7
16
|
/**
|
|
8
17
|
* The default schema to use when only a table name is specified.
|
|
@@ -10,6 +19,11 @@ export interface SyncRulesOptions {
|
|
|
10
19
|
* 'public' for Postgres, default database for MongoDB/MySQL.
|
|
11
20
|
*/
|
|
12
21
|
defaultSchema: string;
|
|
22
|
+
/**
|
|
23
|
+
* Source connection types keyed by connection tag. When omitted, source-specific options report warnings
|
|
24
|
+
* if their connection type cannot be checked.
|
|
25
|
+
*/
|
|
26
|
+
connections?: SourceConnectionMap;
|
|
13
27
|
throwOnError?: boolean;
|
|
14
28
|
}
|
|
15
29
|
export interface RequestedStream {
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -23,7 +23,8 @@ export class SqlSyncRules extends SyncConfig {
|
|
|
23
23
|
const parser = new SyncConfigFromYaml({
|
|
24
24
|
throwOnError: options.throwOnError ?? true,
|
|
25
25
|
schema: options.schema,
|
|
26
|
-
defaultSchema: options.defaultSchema
|
|
26
|
+
defaultSchema: options.defaultSchema,
|
|
27
|
+
connections: options.connections
|
|
27
28
|
}, yaml);
|
|
28
29
|
return parser.read();
|
|
29
30
|
}
|
package/dist/SqlSyncRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAuEpD,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,MAAM,MAAM,GAAG,IAAI,kBAAkB,CACnC;YACE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,EACD,IAAI,CACL,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
|
package/dist/SyncConfig.d.ts
CHANGED
|
@@ -14,7 +14,9 @@ export declare abstract class SyncConfig {
|
|
|
14
14
|
bucketDataSources: BucketDataSource[];
|
|
15
15
|
bucketParameterLookupSources: ParameterIndexLookupCreator[];
|
|
16
16
|
bucketSources: BucketSource[];
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Prepared event definitions. Executable event descriptors only exist on {@link HydratedSyncConfig}.
|
|
19
|
+
*/
|
|
18
20
|
eventDefinitions: EventDefinition[];
|
|
19
21
|
compatibility: CompatibilityContext;
|
|
20
22
|
/**
|
package/dist/SyncConfig.js
CHANGED
|
@@ -9,7 +9,9 @@ export class SyncConfig {
|
|
|
9
9
|
bucketDataSources = [];
|
|
10
10
|
bucketParameterLookupSources = [];
|
|
11
11
|
bucketSources = [];
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Prepared event definitions. Executable event descriptors only exist on {@link HydratedSyncConfig}.
|
|
14
|
+
*/
|
|
13
15
|
eventDefinitions = [];
|
|
14
16
|
compatibility = CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY;
|
|
15
17
|
/**
|
package/dist/SyncConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,UAAU;IAC9B,iBAAiB,GAAuB,EAAE,CAAC;IAC3C,4BAA4B,GAAkC,EAAE,CAAC;IACjE,aAAa,GAAmB,EAAE,CAAC;IACnC
|
|
1
|
+
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ErrorLocation } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* A decoded config path, for example `['config', 'source_table_options', 'orders', 'option']`.
|
|
4
|
+
*/
|
|
5
|
+
export type SyncConfigSourcePath = readonly (string | number)[];
|
|
6
|
+
export type SyncConfigSourceLocationTarget = 'key' | 'value';
|
|
7
|
+
export interface SyncConfigSourceLocationResolver {
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a field to its source span, falling back to its nearest existing ancestor.
|
|
10
|
+
*/
|
|
11
|
+
getLocation(path: SyncConfigSourcePath, target?: SyncConfigSourceLocationTarget): ErrorLocation | undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncConfigDiagnostics.js","sourceRoot":"","sources":["../src/SyncConfigDiagnostics.ts"],"names":[],"mappings":""}
|
package/dist/TablePattern.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare class ImplicitSchemaTablePattern implements Equatable {
|
|
|
14
14
|
readonly tablePattern: string;
|
|
15
15
|
readonly connectionTag: string | null;
|
|
16
16
|
readonly schema: string | null;
|
|
17
|
-
constructor(schema: string | null, tablePattern: string);
|
|
17
|
+
constructor(schema: string | null, tablePattern: string, connectionTag?: string | null);
|
|
18
18
|
get isWildcard(): boolean;
|
|
19
19
|
get isSchemaWildcard(): boolean;
|
|
20
20
|
get name(): string;
|
|
@@ -28,7 +28,7 @@ export declare class ImplicitSchemaTablePattern implements Equatable {
|
|
|
28
28
|
export declare class TablePattern extends ImplicitSchemaTablePattern {
|
|
29
29
|
readonly connectionTag: string;
|
|
30
30
|
readonly schema: string;
|
|
31
|
-
constructor(schema: string, tablePattern: string);
|
|
31
|
+
constructor(schema: string, tablePattern: string, connectionTag?: string);
|
|
32
32
|
/**
|
|
33
33
|
* Unique key for this table pattern, used for caching.
|
|
34
34
|
*
|
package/dist/TablePattern.js
CHANGED
|
@@ -12,13 +12,19 @@ export class ImplicitSchemaTablePattern {
|
|
|
12
12
|
tablePattern;
|
|
13
13
|
connectionTag;
|
|
14
14
|
schema;
|
|
15
|
-
constructor(schema, tablePattern) {
|
|
15
|
+
constructor(schema, tablePattern, connectionTag) {
|
|
16
16
|
this.tablePattern = tablePattern;
|
|
17
|
-
if (
|
|
17
|
+
if (connectionTag != null) {
|
|
18
|
+
// A connection tag identifies a database on that connection, so a schema must be provided with it.
|
|
19
|
+
if (schema == null)
|
|
20
|
+
throw new Error('A schema is required when a connection tag is set.');
|
|
21
|
+
this.connectionTag = connectionTag;
|
|
22
|
+
this.schema = schema;
|
|
23
|
+
}
|
|
24
|
+
else if (schema) {
|
|
18
25
|
const splitSchema = schema.split('.');
|
|
19
|
-
if (splitSchema.length > 2)
|
|
26
|
+
if (splitSchema.length > 2)
|
|
20
27
|
throw new Error(`Invalid schema: ${schema}`);
|
|
21
|
-
}
|
|
22
28
|
if (splitSchema.length == 2) {
|
|
23
29
|
this.connectionTag = splitSchema[0];
|
|
24
30
|
this.schema = splitSchema[1];
|
|
@@ -46,7 +52,11 @@ export class ImplicitSchemaTablePattern {
|
|
|
46
52
|
return this.tablePattern;
|
|
47
53
|
}
|
|
48
54
|
toTablePattern(defaultSchema) {
|
|
49
|
-
|
|
55
|
+
// Preserve existing hydration behavior: explicit connection tags are stored but resolve to the default tag.
|
|
56
|
+
// FIXME: When multiple connections are supported, honor explicit tags consistently across SQL, source-table options,
|
|
57
|
+
// and hydration while preserving the interpretation of existing saved plans.
|
|
58
|
+
// Pass a tag for explicit schemas so quoted dots stay literal; undefined lets runtime defaults retain qualification.
|
|
59
|
+
return new TablePattern(this.schema ?? defaultSchema, this.tablePattern, this.schema == null ? undefined : DEFAULT_TAG);
|
|
50
60
|
}
|
|
51
61
|
buildHash(hasher) {
|
|
52
62
|
if (this.connectionTag) {
|
|
@@ -68,8 +78,8 @@ export class ImplicitSchemaTablePattern {
|
|
|
68
78
|
* Some pattern matching SourceTables.
|
|
69
79
|
*/
|
|
70
80
|
export class TablePattern extends ImplicitSchemaTablePattern {
|
|
71
|
-
constructor(schema, tablePattern) {
|
|
72
|
-
super(schema, tablePattern);
|
|
81
|
+
constructor(schema, tablePattern, connectionTag) {
|
|
82
|
+
super(schema, tablePattern, connectionTag);
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* Unique key for this table pattern, used for caching.
|
package/dist/TablePattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IAMnB;IALF,aAAa,CAAgB;IAC7B,MAAM,CAAgB;IAEtC,YACE,MAAqB,EACL,YAAoB;
|
|
1
|
+
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IAMnB;IALF,aAAa,CAAgB;IAC7B,MAAM,CAAgB;IAEtC,YACE,MAAqB,EACL,YAAoB,EACpC,aAA6B;QADb,iBAAY,GAAZ,YAAY,CAAQ;QAGpC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,mGAAmG;YACnG,IAAI,MAAM,IAAI,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAC1F,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,4GAA4G;QAC5G,qHAAqH;QACrH,6EAA6E;QAC7E,qHAAqH;QACrH,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,MAAM,IAAI,aAAa,EAC5B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAC9C,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,OAAO,CACL,KAAK,YAAY,0BAA0B;YAC3C,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa;YACzC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAC3B,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CACxC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,0BAA0B;IAI1D,YAAY,MAAc,EAAE,YAAoB,EAAE,aAAsB;QACtE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,YAAY;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,KAAqB;QAC3B,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF"}
|
package/dist/from_yaml.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { type SourceConnectionMap } from './SqlSyncRules.js';
|
|
1
2
|
import { SyncConfigWithErrors } from './SyncConfig.js';
|
|
2
3
|
import { SourceSchema } from './types.js';
|
|
3
4
|
/**
|
|
4
|
-
* Reads `sync_rules.yaml` files containing a sync
|
|
5
|
+
* Reads `sync_rules.yaml` files containing a sync config.
|
|
5
6
|
*
|
|
6
7
|
* @internal Only exposed through `SqlSyncRules.fromYaml`.
|
|
7
8
|
*/
|
|
@@ -21,4 +22,5 @@ export interface SyncConfigFromYamlOptions {
|
|
|
21
22
|
* 'public' for Postgres, default database for MongoDB/MySQL.
|
|
22
23
|
*/
|
|
23
24
|
readonly defaultSchema: string;
|
|
25
|
+
readonly connections?: SourceConnectionMap;
|
|
24
26
|
}
|