@powersync/service-sync-rules 0.0.0-dev-20261005120023 → 0.0.0-dev-20261015071128
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.js +4 -1
- package/dist/HydratedSyncConfig.js.map +1 -1
- package/dist/SourceTableConfig.d.ts +15 -6
- package/dist/SourceTableConfig.js +50 -33
- package/dist/SourceTableConfig.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +11 -12
- package/dist/SqlSyncRules.js +1 -2
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/SyncConfig.d.ts +0 -5
- package/dist/SyncConfig.js +0 -4
- 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/from_yaml.d.ts +2 -13
- package/dist/from_yaml.js +98 -72
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/json_schema.d.ts +1 -2
- package/dist/json_schema.js +6 -9
- 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/sync_plan/evaluator/index.js +0 -1
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +0 -4
- package/dist/sync_plan/serialize.d.ts +0 -5
- package/dist/sync_plan/serialize.js +1 -20
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/yaml_source_locations.d.ts +2 -2
- package/dist/yaml_source_locations.js +7 -12
- package/dist/yaml_source_locations.js.map +1 -1
- package/package.json +4 -2
- package/schema/sync_config.json +371 -4
- package/schema/sync_rules.json +371 -4
- package/dist/SyncConfigParserHooks.d.ts +0 -103
- package/dist/SyncConfigParserHooks.js +0 -11
- package/dist/SyncConfigParserHooks.js.map +0 -1
|
@@ -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.
|
|
@@ -58,7 +59,9 @@ export class HydratedSyncConfig {
|
|
|
58
59
|
throw new Error('HydratedSyncConfig requires at least one SyncConfig definition');
|
|
59
60
|
}
|
|
60
61
|
// The service validates that definitions sharing a source reader have compatible source-table options.
|
|
61
|
-
|
|
62
|
+
const firstConfig = definitions[0];
|
|
63
|
+
this.sourceTableConfig =
|
|
64
|
+
firstConfig instanceof PrecompiledSyncConfig ? (firstConfig.plan.sourceTableConfig ?? {}) : {};
|
|
62
65
|
this.sourceDefinitions = [...definitions];
|
|
63
66
|
this.compatibility = assertSharedCompatibility(this.sourceDefinitions);
|
|
64
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;AAEpB,OAAO,EAAkB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"HydratedSyncConfig.js","sourceRoot":"","sources":["../src/HydratedSyncConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import * as t from 'ts-codec';
|
|
2
1
|
import type { JsonObject } from './json.js';
|
|
2
|
+
import { type MongoTableFilter } from './mongo/MongoFilterExpression.js';
|
|
3
3
|
import { ImplicitSchemaTablePattern } from './TablePattern.js';
|
|
4
4
|
/**
|
|
5
|
-
* Options for one entry in `config.source_table_options`.
|
|
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
6
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
7
|
+
export interface SourceTableConfig {
|
|
8
|
+
mongodb_filter_expression?: MongoTableFilter;
|
|
9
|
+
}
|
|
9
10
|
/**
|
|
10
11
|
* Source-table options keyed by an authored table pattern.
|
|
11
12
|
*/
|
|
12
13
|
export type SourceTableConfigMap<TTableConfig extends SourceTableConfig = SourceTableConfig> = Readonly<Partial<Record<string, TTableConfig>>>;
|
|
13
14
|
/**
|
|
14
|
-
* Generate the
|
|
15
|
+
* Generate the source-table options schema with MongoDB pre-filtering expressions.
|
|
15
16
|
*/
|
|
16
17
|
export declare function createSourceTableConfigSchema(): JsonObject;
|
|
17
18
|
/**
|
|
@@ -24,10 +25,18 @@ export declare function parseSourceTableConfigKey(name: string): ImplicitSchemaT
|
|
|
24
25
|
*/
|
|
25
26
|
export declare function findDuplicateSourceTableConfigKeys(keys: Iterable<string>): Array<[string, string]>;
|
|
26
27
|
/**
|
|
27
|
-
* Validate and copy
|
|
28
|
+
* Validate and copy source-table options while preserving declaration order.
|
|
28
29
|
*/
|
|
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;
|
|
30
35
|
/**
|
|
31
36
|
* Conservative equality: declaration order and expression order are significant.
|
|
32
37
|
*/
|
|
33
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;
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { MONGO_FILTER_VALIDATOR } from './mongo/MongoFilterExpression.js';
|
|
2
2
|
import { DEFAULT_TAG, ImplicitSchemaTablePattern, TablePattern } from './TablePattern.js';
|
|
3
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
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
export const SOURCE_TABLE_CONFIG = t.object({});
|
|
8
|
-
/**
|
|
9
|
-
* Generate the common source-table map while making the empty base option explicit.
|
|
5
|
+
* Generate the source-table options schema with MongoDB pre-filtering expressions.
|
|
10
6
|
*/
|
|
11
7
|
export function createSourceTableConfigSchema() {
|
|
12
8
|
return {
|
|
13
9
|
type: 'object',
|
|
14
10
|
propertyNames: {
|
|
15
11
|
minLength: 1,
|
|
16
|
-
pattern: '^(?:[^."]+|"(?:[^"]|"")+")(?:\\.(?:[^."]+|"(?:[^"]|"")+")){0,2}$'
|
|
17
|
-
patternErrorMessage: 'Use <table>, <database>.<table>, or <connection>.<database>.<table>. Double-quote names containing dots or quotes.'
|
|
12
|
+
pattern: '^(?:[^."]+|"(?:[^"]|"")+")(?:\\.(?:[^."]+|"(?:[^"]|"")+")){0,2}$'
|
|
18
13
|
},
|
|
19
14
|
additionalProperties: {
|
|
20
15
|
type: 'object',
|
|
21
|
-
properties: {
|
|
16
|
+
properties: {
|
|
17
|
+
mongodb_filter_expression: {
|
|
18
|
+
anyOf: [{ $ref: '#/definitions/mongodb_filter_expression' }, { const: 'disabled' }]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
22
21
|
additionalProperties: false
|
|
23
22
|
}
|
|
24
23
|
};
|
|
@@ -84,12 +83,12 @@ function parseQualifiedIdentifiers(name) {
|
|
|
84
83
|
});
|
|
85
84
|
}
|
|
86
85
|
/**
|
|
87
|
-
* Validate and copy
|
|
86
|
+
* Validate and copy source-table options while preserving declaration order.
|
|
88
87
|
*/
|
|
89
88
|
export function normalizeSourceTableConfig(value) {
|
|
90
89
|
if (value === undefined)
|
|
91
90
|
return {};
|
|
92
|
-
|
|
91
|
+
assertObject(value, 'Source table configuration must be a JSON object.');
|
|
93
92
|
const duplicate = findDuplicateSourceTableConfigKeys(Object.keys(value))[0];
|
|
94
93
|
if (duplicate != null) {
|
|
95
94
|
const [previous, key] = duplicate;
|
|
@@ -98,38 +97,56 @@ export function normalizeSourceTableConfig(value) {
|
|
|
98
97
|
return Object.fromEntries(Object.entries(value).map(([table, options]) => {
|
|
99
98
|
if (!table)
|
|
100
99
|
throw new Error('A source table name must not be empty.');
|
|
101
|
-
parseSourceTableConfigKey(table);
|
|
102
|
-
|
|
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
|
+
}
|
|
103
114
|
return [table, structuredClone(options)];
|
|
104
115
|
}));
|
|
105
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
|
+
}
|
|
106
128
|
/**
|
|
107
129
|
* Conservative equality: declaration order and expression order are significant.
|
|
108
130
|
*/
|
|
109
131
|
export function sourceTableConfigsEqual(left, right) {
|
|
110
|
-
|
|
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
|
+
}
|
|
111
139
|
}
|
|
112
|
-
function
|
|
140
|
+
function assertObject(value, message) {
|
|
113
141
|
if (value == null || typeof value != 'object' || Array.isArray(value))
|
|
114
142
|
throw new Error(message);
|
|
115
|
-
assertJsonValue(value, new Set());
|
|
116
143
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
if (!Array.isArray(value) &&
|
|
126
|
-
Object.getPrototypeOf(value) !== Object.prototype &&
|
|
127
|
-
Object.getPrototypeOf(value) !== null) {
|
|
128
|
-
throw new Error('Source table configuration must contain plain JSON objects.');
|
|
129
|
-
}
|
|
130
|
-
parents.add(value);
|
|
131
|
-
for (const child of Object.values(value))
|
|
132
|
-
assertJsonValue(child, parents);
|
|
133
|
-
parents.delete(value);
|
|
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');
|
|
134
151
|
}
|
|
135
152
|
//# sourceMappingURL=SourceTableConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceTableConfig.js","sourceRoot":"","sources":["../src/SourceTableConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SourceTableConfig.js","sourceRoot":"","sources":["../src/SourceTableConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import { BucketPriority } from './BucketDescription.js';
|
|
2
2
|
import { SyncConfig, SyncConfigWithErrors } from './SyncConfig.js';
|
|
3
|
-
import type { AdditionalSyncConfigParser } from './SyncConfigParserHooks.js';
|
|
4
3
|
import { YamlError } from './errors.js';
|
|
5
|
-
import type { SyncRulesSchemaValidator } from './json_schema.js';
|
|
6
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
|
+
}>;
|
|
7
11
|
export interface SyncRulesOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Additional parsing hooks. The service supplies its registered hooks; standalone callers and extension tests
|
|
10
|
-
* can supply hooks directly. Defaults to no additional hooks.
|
|
11
|
-
*/
|
|
12
|
-
parsers?: readonly AdditionalSyncConfigParser[];
|
|
13
|
-
/**
|
|
14
|
-
* Compiled schema validator supplied by the service parser. Must match the supplied parsers.
|
|
15
|
-
* Standalone callers, including tests, normally omit this to compose the schema from parsers.
|
|
16
|
-
*/
|
|
17
|
-
schemaValidator?: SyncRulesSchemaValidator;
|
|
18
12
|
/**
|
|
19
13
|
* Source database schema.
|
|
20
14
|
*/
|
|
@@ -25,6 +19,11 @@ export interface SyncRulesOptions {
|
|
|
25
19
|
* 'public' for Postgres, default database for MongoDB/MySQL.
|
|
26
20
|
*/
|
|
27
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;
|
|
28
27
|
throwOnError?: boolean;
|
|
29
28
|
}
|
|
30
29
|
export interface RequestedStream {
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -24,8 +24,7 @@ export class SqlSyncRules extends SyncConfig {
|
|
|
24
24
|
throwOnError: options.throwOnError ?? true,
|
|
25
25
|
schema: options.schema,
|
|
26
26
|
defaultSchema: options.defaultSchema,
|
|
27
|
-
|
|
28
|
-
schemaValidator: options.schemaValidator
|
|
27
|
+
connections: options.connections
|
|
29
28
|
}, yaml);
|
|
30
29
|
return parser.read();
|
|
31
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;
|
|
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
|
@@ -3,7 +3,6 @@ import { CompatibilityContext } from './compatibility.js';
|
|
|
3
3
|
import { YamlError } from './errors.js';
|
|
4
4
|
import { EventDefinition } from './events/EventDescriptor.js';
|
|
5
5
|
import { HydratedSyncConfig } from './HydratedSyncConfig.js';
|
|
6
|
-
import { SourceTableConfigMap } from './SourceTableConfig.js';
|
|
7
6
|
import { SourceTableRef } from './SourceTableRef.js';
|
|
8
7
|
import { TablePattern } from './TablePattern.js';
|
|
9
8
|
import { SqliteInputValue, SqliteRow, SqliteValue } from './types.js';
|
|
@@ -12,10 +11,6 @@ import { SqliteInputValue, SqliteRow, SqliteValue } from './types.js';
|
|
|
12
11
|
* resolve buckets for connections).
|
|
13
12
|
*/
|
|
14
13
|
export declare abstract class SyncConfig {
|
|
15
|
-
/**
|
|
16
|
-
* Module-specific source options keyed by authored table pattern.
|
|
17
|
-
*/
|
|
18
|
-
sourceTableConfig: SourceTableConfigMap;
|
|
19
14
|
bucketDataSources: BucketDataSource[];
|
|
20
15
|
bucketParameterLookupSources: ParameterIndexLookupCreator[];
|
|
21
16
|
bucketSources: BucketSource[];
|
package/dist/SyncConfig.js
CHANGED
|
@@ -6,10 +6,6 @@ import { applyRowContext } from './utils.js';
|
|
|
6
6
|
* resolve buckets for connections).
|
|
7
7
|
*/
|
|
8
8
|
export class SyncConfig {
|
|
9
|
-
/**
|
|
10
|
-
* Module-specific source options keyed by authored table pattern.
|
|
11
|
-
*/
|
|
12
|
-
sourceTableConfig = {};
|
|
13
9
|
bucketDataSources = [];
|
|
14
10
|
bucketParameterLookupSources = [];
|
|
15
11
|
bucketSources = [];
|
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;
|
|
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/from_yaml.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type SourceConnectionMap } from './SqlSyncRules.js';
|
|
2
2
|
import { SyncConfigWithErrors } from './SyncConfig.js';
|
|
3
|
-
import { AdditionalSyncConfigParser } from './SyncConfigParserHooks.js';
|
|
4
3
|
import { SourceSchema } from './types.js';
|
|
5
4
|
/**
|
|
6
5
|
* Reads `sync_rules.yaml` files containing a sync config.
|
|
@@ -15,17 +14,6 @@ export declare class SyncConfigFromYaml {
|
|
|
15
14
|
read(): SyncConfigWithErrors;
|
|
16
15
|
}
|
|
17
16
|
export interface SyncConfigFromYamlOptions {
|
|
18
|
-
/**
|
|
19
|
-
* Additional parsing hooks registered by the service. Standalone callers, including extension tests,
|
|
20
|
-
* can supply hooks through SqlSyncRules.fromYaml; omitted hooks are normalized to an empty array.
|
|
21
|
-
*/
|
|
22
|
-
readonly parsers: readonly AdditionalSyncConfigParser[];
|
|
23
|
-
/**
|
|
24
|
-
* Compiled schema validator supplied by the service parser, matching its registered hooks.
|
|
25
|
-
* Standalone callers, including tests, normally omit this so the schema is composed from parsers.
|
|
26
|
-
* Supplying a validator skips schema composition and compilation but still runs the parsing hooks.
|
|
27
|
-
*/
|
|
28
|
-
readonly schemaValidator?: SyncRulesSchemaValidator;
|
|
29
17
|
readonly throwOnError: boolean;
|
|
30
18
|
readonly schema?: SourceSchema;
|
|
31
19
|
/**
|
|
@@ -34,4 +22,5 @@ export interface SyncConfigFromYamlOptions {
|
|
|
34
22
|
* 'public' for Postgres, default database for MongoDB/MySQL.
|
|
35
23
|
*/
|
|
36
24
|
readonly defaultSchema: string;
|
|
25
|
+
readonly connections?: SourceConnectionMap;
|
|
37
26
|
}
|