@powersync/service-sync-rules 0.32.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BaseSqlDataQuery.js +2 -1
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +20 -1
- package/dist/BucketDescription.js +12 -0
- package/dist/BucketDescription.js.map +1 -1
- package/dist/BucketParameterQuerier.d.ts +5 -0
- package/dist/BucketParameterQuerier.js +15 -3
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +1 -1
- package/dist/BucketSource.js +5 -4
- package/dist/BucketSource.js.map +1 -1
- package/dist/HydrationState.d.ts +4 -0
- package/dist/HydrationState.js +4 -2
- package/dist/HydrationState.js.map +1 -1
- package/dist/SqlParameterQuery.js +8 -12
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/StaticSqlParameterQuery.js +5 -12
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.js +3 -10
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/cast.d.ts +9 -0
- package/dist/cast.js +131 -0
- package/dist/cast.js.map +1 -0
- package/dist/compiler/bucket_resolver.d.ts +2 -0
- package/dist/compiler/bucket_resolver.js +18 -1
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/equality.d.ts +1 -1
- package/dist/compiler/equality.js.map +1 -1
- package/dist/compiler/parser.js +12 -2
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.js +5 -2
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/sqlite.js +1 -1
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.js +4 -1
- package/dist/compiler/table.js.map +1 -1
- package/dist/from_yaml.js +54 -24
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +9 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +1 -0
- package/dist/schema-generators/DartSchemaGenerator.js +36 -2
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.d.ts +12 -1
- package/dist/schema-generators/DotNetSchemaGenerator.js +104 -3
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/KotlinSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/KotlinSchemaGenerator.js +68 -5
- package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/RoomSchemaGenerator.js +3 -19
- package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.d.ts +7 -1
- package/dist/schema-generators/SchemaGenerator.js +35 -0
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SwiftSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/SwiftSchemaGenerator.js +66 -2
- package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -0
- package/dist/schema-generators/TsSchemaGenerator.js +45 -8
- package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/generators.d.ts +2 -1
- package/dist/schema-generators/generators.js +2 -1
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/sql_functions.d.ts +1 -5
- package/dist/sql_functions.js +31 -114
- package/dist/sql_functions.js.map +1 -1
- package/dist/streams/filter.d.ts +2 -4
- package/dist/streams/filter.js +2 -1
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/variant.js +4 -7
- package/dist/streams/variant.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +2 -2
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +2 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.d.ts +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js +31 -36
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +6 -0
- package/dist/sync_plan/evaluator/index.js +7 -0
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +6 -12
- package/dist/sync_plan/evaluator/parameter_evaluator.js +51 -54
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +4 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +1 -1
- package/dist/sync_plan/schema_inference.d.ts +6 -2
- package/dist/sync_plan/schema_inference.js +104 -3
- package/dist/sync_plan/schema_inference.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +26 -4
- package/dist/utils.js +53 -17
- package/dist/utils.js.map +1 -1
- package/dist/yaml_scalar_map.d.ts +15 -0
- package/dist/yaml_scalar_map.js +126 -0
- package/dist/yaml_scalar_map.js.map +1 -0
- package/package.json +4 -2
- package/schema/sync_rules.json +9 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Scalar } from 'yaml';
|
|
2
|
+
export function isBlockScalar(type) {
|
|
3
|
+
return type === Scalar.BLOCK_LITERAL || type === Scalar.BLOCK_FOLDED;
|
|
4
|
+
}
|
|
5
|
+
export function isQuotedScalar(type) {
|
|
6
|
+
return type === Scalar.QUOTE_DOUBLE || type === Scalar.QUOTE_SINGLE;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Builds a map from indexes in parsed YAML scalars to indexes in the source YAML file.
|
|
10
|
+
*
|
|
11
|
+
* Quoted scalars (", ') have escape sequences that take up more chars in the source relative to the parsed value.
|
|
12
|
+
* Multi-line scalars (|, >) have line folding where newline + surrounding whitespace collapses
|
|
13
|
+
* to a single space. In both cases value offsets don't map 1:1 to source offsets.
|
|
14
|
+
*
|
|
15
|
+
* For unrecognised scalar types the map is empty, so all lookups fall back via ??.
|
|
16
|
+
*
|
|
17
|
+
* @param src The raw YAML source of the scalar token.
|
|
18
|
+
* @param scalarType The Scalar.type value.
|
|
19
|
+
*/
|
|
20
|
+
export function buildParsedToSourceValueMap(src, scalarType) {
|
|
21
|
+
const map = [];
|
|
22
|
+
if (isQuotedScalar(scalarType)) {
|
|
23
|
+
const isDoubleQuoted = scalarType === Scalar.QUOTE_DOUBLE;
|
|
24
|
+
let srcIdx = 0;
|
|
25
|
+
let valIdx = 0;
|
|
26
|
+
while (srcIdx < src.length) {
|
|
27
|
+
map[valIdx] = srcIdx;
|
|
28
|
+
const current = src[srcIdx];
|
|
29
|
+
const next = src[srcIdx + 1];
|
|
30
|
+
if (isDoubleQuoted && current === '\\') {
|
|
31
|
+
// Handle escape chars / unicode
|
|
32
|
+
if (next === 'x')
|
|
33
|
+
srcIdx += 4; // \xXX
|
|
34
|
+
else if (next === 'u')
|
|
35
|
+
srcIdx += 6; // \uXXXX
|
|
36
|
+
else if (next === 'U')
|
|
37
|
+
srcIdx += 10; // \UXXXXXXXX
|
|
38
|
+
else
|
|
39
|
+
srcIdx += 2; // \n, \", \\, etc.
|
|
40
|
+
}
|
|
41
|
+
else if (!isDoubleQuoted && current === "'" && next === "'") {
|
|
42
|
+
// Handle '' in single quotes
|
|
43
|
+
srcIdx += 2;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
srcIdx++;
|
|
47
|
+
}
|
|
48
|
+
valIdx++;
|
|
49
|
+
}
|
|
50
|
+
map[valIdx] = srcIdx;
|
|
51
|
+
}
|
|
52
|
+
else if (isBlockScalar(scalarType)) {
|
|
53
|
+
// Detect indentation using first non-empty line
|
|
54
|
+
let trimIndent = 0;
|
|
55
|
+
let i = 0;
|
|
56
|
+
outer: while (i < src.length) {
|
|
57
|
+
// Skip to end of line
|
|
58
|
+
const lineStart = i;
|
|
59
|
+
while (i < src.length && src[i] !== '\n')
|
|
60
|
+
i++;
|
|
61
|
+
// Count chars from start of line until first non-whitespace char
|
|
62
|
+
for (let j = lineStart; j < i; j++) {
|
|
63
|
+
if (src[j] !== ' ' && src[j] !== '\t') {
|
|
64
|
+
trimIndent = j - lineStart;
|
|
65
|
+
break outer;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// No non-whitespace char found; go to next line
|
|
69
|
+
i++;
|
|
70
|
+
}
|
|
71
|
+
// Skip trimIndent chars for each line
|
|
72
|
+
let valIdx = 0;
|
|
73
|
+
let srcIdx = 0;
|
|
74
|
+
while (srcIdx < src.length) {
|
|
75
|
+
let lineEnd = srcIdx;
|
|
76
|
+
while (lineEnd < src.length && src[lineEnd] !== '\n')
|
|
77
|
+
lineEnd++;
|
|
78
|
+
const lineLen = lineEnd - srcIdx;
|
|
79
|
+
// Prevent skipping into next line for zero-length or very short lines
|
|
80
|
+
const contentStart = srcIdx + Math.min(trimIndent, lineLen);
|
|
81
|
+
for (let p = contentStart; p <= lineEnd && p < src.length; p++) {
|
|
82
|
+
map[valIdx++] = p;
|
|
83
|
+
}
|
|
84
|
+
srcIdx = lineEnd + 1;
|
|
85
|
+
}
|
|
86
|
+
map[valIdx] = src.length; // Sentinel
|
|
87
|
+
}
|
|
88
|
+
else if (scalarType === Scalar.PLAIN) {
|
|
89
|
+
// Plain scalars may span multiple lines. Line folding collapses each
|
|
90
|
+
// (trailing whitespace + newline + leading whitespace of next line) into a single space.
|
|
91
|
+
let valIdx = 0;
|
|
92
|
+
let srcIdx = 0;
|
|
93
|
+
let firstLine = true;
|
|
94
|
+
while (srcIdx <= src.length) {
|
|
95
|
+
// Find content bounds for this line
|
|
96
|
+
let lineEnd = srcIdx;
|
|
97
|
+
while (lineEnd < src.length && src[lineEnd] !== '\n' && src[lineEnd] !== '\r')
|
|
98
|
+
lineEnd++;
|
|
99
|
+
let contentStart = srcIdx;
|
|
100
|
+
if (!firstLine) {
|
|
101
|
+
// Strip leading whitespace from continuation lines
|
|
102
|
+
while (contentStart < lineEnd && (src[contentStart] === ' ' || src[contentStart] === '\t'))
|
|
103
|
+
contentStart++;
|
|
104
|
+
}
|
|
105
|
+
let contentEnd = lineEnd;
|
|
106
|
+
while (contentEnd > contentStart && (src[contentEnd - 1] === ' ' || src[contentEnd - 1] === '\t'))
|
|
107
|
+
contentEnd--;
|
|
108
|
+
if (!firstLine) {
|
|
109
|
+
// The folded newline becomes a single space; map it to the start of this line's content
|
|
110
|
+
map[valIdx++] = contentStart;
|
|
111
|
+
}
|
|
112
|
+
for (let p = contentStart; p < contentEnd; p++) {
|
|
113
|
+
map[valIdx++] = p;
|
|
114
|
+
}
|
|
115
|
+
if (lineEnd >= src.length)
|
|
116
|
+
break;
|
|
117
|
+
srcIdx = lineEnd + 1;
|
|
118
|
+
if (src[lineEnd] === '\r' && src[srcIdx] === '\n')
|
|
119
|
+
srcIdx++; // \r\n counts as one newline
|
|
120
|
+
firstLine = false;
|
|
121
|
+
}
|
|
122
|
+
map[valIdx] = src.length; // Sentinel
|
|
123
|
+
}
|
|
124
|
+
return map;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=yaml_scalar_map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml_scalar_map.js","sourceRoot":"","sources":["../src/yaml_scalar_map.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/service-sync-rules",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "FSL-1.1-ALv2",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^22.16.2",
|
|
26
26
|
"ebnf": "^1.9.1",
|
|
27
|
+
"railroad-diagrams": "^1.0.0",
|
|
27
28
|
"vitest": "^4.0.16"
|
|
28
29
|
},
|
|
29
30
|
"scripts": {
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"build": "pnpm build:tsc && pnpm run build:extra",
|
|
33
34
|
"build:extra": "node scripts/compile-schema.js",
|
|
34
35
|
"build:tests": "tsc -b test/tsconfig.json",
|
|
35
|
-
"test": "vitest"
|
|
36
|
+
"test": "vitest",
|
|
37
|
+
"generate:grammar": "node --experimental-strip-types scripts/generate-grammar-docs.ts"
|
|
36
38
|
}
|
|
37
39
|
}
|
package/schema/sync_rules.json
CHANGED
|
@@ -61,6 +61,15 @@
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
|
+
"with": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"description": "Common-table expressions available to all sync streams",
|
|
67
|
+
"patternProperties": {
|
|
68
|
+
".*": {
|
|
69
|
+
"type": "string"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
64
73
|
"streams": {
|
|
65
74
|
"type": "object",
|
|
66
75
|
"description": "List of stream definitions",
|