@powersync/service-sync-rules 0.42.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/README.md +49 -14
- package/dist/BucketSource.d.ts +2 -2
- package/dist/HydratedSyncConfig.d.ts +2 -0
- package/dist/HydratedSyncConfig.js +9 -3
- 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/StorageVersion.d.ts +0 -1
- package/dist/StorageVersion.js +0 -1
- package/dist/StorageVersion.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/compatibility.d.ts +2 -1
- package/dist/compatibility.js +4 -2
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/compiler.d.ts +4 -4
- package/dist/compiler/compiler.js +2 -2
- package/dist/compiler/equality.d.ts +2 -2
- package/dist/compiler/equality.js +2 -2
- package/dist/compiler/expression.d.ts +3 -3
- package/dist/compiler/expression.js +2 -2
- package/dist/compiler/parser.d.ts +1 -1
- package/dist/compiler/parser.js +2 -2
- package/dist/compiler/sqlite.js +1 -2
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +2 -2
- package/dist/compiler/table.js +1 -1
- package/dist/from_yaml.d.ts +3 -1
- package/dist/from_yaml.js +121 -26
- 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 +26 -7
- package/dist/json_schema.js.map +1 -1
- package/dist/legacy/BaseSqlDataQuery.d.ts +12 -0
- package/dist/legacy/BaseSqlDataQuery.js +3 -0
- package/dist/legacy/BaseSqlDataQuery.js.map +1 -1
- package/dist/legacy/SqlBucketDescriptor.d.ts +9 -0
- package/dist/legacy/SqlBucketDescriptor.js +6 -0
- package/dist/legacy/SqlBucketDescriptor.js.map +1 -1
- package/dist/legacy/SqlDataQuery.d.ts +6 -0
- package/dist/legacy/SqlDataQuery.js +3 -0
- package/dist/legacy/SqlDataQuery.js.map +1 -1
- package/dist/legacy/SqlParameterQuery.d.ts +4 -0
- package/dist/legacy/SqlParameterQuery.js +1 -0
- package/dist/legacy/SqlParameterQuery.js.map +1 -1
- package/dist/legacy/StaticSqlParameterQuery.d.ts +4 -0
- package/dist/legacy/StaticSqlParameterQuery.js +1 -0
- package/dist/legacy/StaticSqlParameterQuery.js.map +1 -1
- package/dist/legacy/TableQuerySchema.d.ts +1 -0
- package/dist/legacy/TableQuerySchema.js +1 -0
- package/dist/legacy/TableQuerySchema.js.map +1 -1
- package/dist/legacy/TableValuedFunctionSqlParameterQuery.d.ts +4 -0
- package/dist/legacy/TableValuedFunctionSqlParameterQuery.js +1 -0
- package/dist/legacy/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/legacy/sql_filters.d.ts +13 -0
- package/dist/legacy/sql_filters.js +10 -0
- package/dist/legacy/sql_filters.js.map +1 -1
- package/dist/legacy/sql_support.d.ts +33 -0
- package/dist/legacy/sql_support.js +33 -0
- package/dist/legacy/sql_support.js.map +1 -1
- package/dist/legacy/streams/filter.d.ts +22 -0
- package/dist/legacy/streams/filter.js +19 -0
- package/dist/legacy/streams/filter.js.map +1 -1
- package/dist/legacy/streams/from_sql.d.ts +3 -0
- package/dist/legacy/streams/from_sql.js +5 -2
- package/dist/legacy/streams/from_sql.js.map +1 -1
- package/dist/legacy/streams/functions.d.ts +3 -0
- package/dist/legacy/streams/functions.js +3 -0
- package/dist/legacy/streams/functions.js.map +1 -1
- package/dist/legacy/streams/parameter.d.ts +10 -0
- package/dist/legacy/streams/stream.d.ts +7 -1
- package/dist/legacy/streams/stream.js +7 -1
- package/dist/legacy/streams/stream.js.map +1 -1
- package/dist/legacy/streams/variant.d.ts +6 -0
- package/dist/legacy/streams/variant.js +1 -0
- package/dist/legacy/streams/variant.js.map +1 -1
- package/dist/legacy/validators.d.ts +1 -0
- package/dist/legacy/validators.js +1 -0
- package/dist/legacy/validators.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/evaluator/bucket_source.js +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.js +1 -1
- package/dist/sync_plan/plan.d.ts +3 -1
- package/dist/sync_plan/schema_inference.d.ts +1 -1
- package/dist/sync_plan/schema_inference.js +1 -1
- 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/utils.d.ts +1 -0
- package/dist/utils.js +43 -12
- package/dist/utils.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 +9 -3
- package/schema/sync_config.json +620 -0
- package/schema/sync_rules.json +387 -4
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"mongodb_filter_expression": {
|
|
5
|
+
"allOf": [
|
|
6
|
+
{
|
|
7
|
+
"$ref": "#/definitions/__schema0"
|
|
8
|
+
}
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"__schema0": {
|
|
12
|
+
"anyOf": [
|
|
13
|
+
{
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"$eq": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": [
|
|
19
|
+
{
|
|
20
|
+
"$ref": "#/definitions/__schema1"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"$ref": "#/definitions/__schema2"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"additionalItems": false,
|
|
27
|
+
"minItems": 2,
|
|
28
|
+
"maxItems": 2,
|
|
29
|
+
"description": "Compare a source field with a scalar constant.",
|
|
30
|
+
"examples": [
|
|
31
|
+
[
|
|
32
|
+
"$$doc.status",
|
|
33
|
+
"active"
|
|
34
|
+
]
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": [
|
|
39
|
+
"$eq"
|
|
40
|
+
],
|
|
41
|
+
"additionalProperties": false
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "object",
|
|
45
|
+
"properties": {
|
|
46
|
+
"$in": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": [
|
|
49
|
+
{
|
|
50
|
+
"$ref": "#/definitions/__schema1"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"$ref": "#/definitions/__schema6"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"additionalItems": false,
|
|
57
|
+
"minItems": 2,
|
|
58
|
+
"maxItems": 2,
|
|
59
|
+
"examples": [
|
|
60
|
+
[
|
|
61
|
+
"$$doc.status",
|
|
62
|
+
[
|
|
63
|
+
"pending",
|
|
64
|
+
"shipped"
|
|
65
|
+
]
|
|
66
|
+
]
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"required": [
|
|
71
|
+
"$in"
|
|
72
|
+
],
|
|
73
|
+
"additionalProperties": false
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"$and": {
|
|
79
|
+
"minItems": 1,
|
|
80
|
+
"type": "array",
|
|
81
|
+
"items": {
|
|
82
|
+
"$ref": "#/definitions/mongodb_filter_expression"
|
|
83
|
+
},
|
|
84
|
+
"examples": [
|
|
85
|
+
[
|
|
86
|
+
{
|
|
87
|
+
"$eq": [
|
|
88
|
+
"$$doc.active",
|
|
89
|
+
true
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"required": [
|
|
97
|
+
"$and"
|
|
98
|
+
],
|
|
99
|
+
"additionalProperties": false
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "object",
|
|
103
|
+
"properties": {
|
|
104
|
+
"$or": {
|
|
105
|
+
"minItems": 1,
|
|
106
|
+
"type": "array",
|
|
107
|
+
"items": {
|
|
108
|
+
"$ref": "#/definitions/mongodb_filter_expression"
|
|
109
|
+
},
|
|
110
|
+
"examples": [
|
|
111
|
+
[
|
|
112
|
+
{
|
|
113
|
+
"$eq": [
|
|
114
|
+
"$$doc.status",
|
|
115
|
+
"pending"
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"$eq": [
|
|
120
|
+
"$$doc.priority",
|
|
121
|
+
true
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"required": [
|
|
129
|
+
"$or"
|
|
130
|
+
],
|
|
131
|
+
"additionalProperties": false
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"__schema1": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"pattern": "^\\$\\$doc(?:\\.(?![0-9]+(?:\\.|$))[^.$][^.]*)+$"
|
|
138
|
+
},
|
|
139
|
+
"__schema2": {
|
|
140
|
+
"anyOf": [
|
|
141
|
+
{
|
|
142
|
+
"type": "boolean"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"type": "number"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"type": "string",
|
|
149
|
+
"pattern": "^(?!\\$)"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"anyOf": [
|
|
153
|
+
{
|
|
154
|
+
"type": "object",
|
|
155
|
+
"properties": {
|
|
156
|
+
"$literal": {
|
|
157
|
+
"type": "string"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"required": [
|
|
161
|
+
"$literal"
|
|
162
|
+
],
|
|
163
|
+
"additionalProperties": false
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"type": "object",
|
|
167
|
+
"properties": {
|
|
168
|
+
"$oid": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"pattern": "^[0-9a-fA-F]{24}$"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"required": [
|
|
174
|
+
"$oid"
|
|
175
|
+
],
|
|
176
|
+
"additionalProperties": false
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "object",
|
|
180
|
+
"properties": {
|
|
181
|
+
"$numberInt": {
|
|
182
|
+
"allOf": [
|
|
183
|
+
{
|
|
184
|
+
"$ref": "#/definitions/__schema3"
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"required": [
|
|
190
|
+
"$numberInt"
|
|
191
|
+
],
|
|
192
|
+
"additionalProperties": false
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"type": "object",
|
|
196
|
+
"properties": {
|
|
197
|
+
"$numberLong": {
|
|
198
|
+
"allOf": [
|
|
199
|
+
{
|
|
200
|
+
"$ref": "#/definitions/__schema3"
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"required": [
|
|
206
|
+
"$numberLong"
|
|
207
|
+
],
|
|
208
|
+
"additionalProperties": false
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"type": "object",
|
|
212
|
+
"properties": {
|
|
213
|
+
"$numberDouble": {
|
|
214
|
+
"type": "string",
|
|
215
|
+
"pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"required": [
|
|
219
|
+
"$numberDouble"
|
|
220
|
+
],
|
|
221
|
+
"additionalProperties": false
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"type": "object",
|
|
225
|
+
"properties": {
|
|
226
|
+
"$numberDecimal": {
|
|
227
|
+
"type": "string"
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"required": [
|
|
231
|
+
"$numberDecimal"
|
|
232
|
+
],
|
|
233
|
+
"additionalProperties": false
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"type": "object",
|
|
237
|
+
"properties": {
|
|
238
|
+
"$uuid": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"required": [
|
|
244
|
+
"$uuid"
|
|
245
|
+
],
|
|
246
|
+
"additionalProperties": false
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"type": "object",
|
|
250
|
+
"properties": {
|
|
251
|
+
"$date": {
|
|
252
|
+
"anyOf": [
|
|
253
|
+
{
|
|
254
|
+
"type": "string",
|
|
255
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"type": "object",
|
|
259
|
+
"properties": {
|
|
260
|
+
"$numberLong": {
|
|
261
|
+
"allOf": [
|
|
262
|
+
{
|
|
263
|
+
"$ref": "#/definitions/__schema3"
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"required": [
|
|
269
|
+
"$numberLong"
|
|
270
|
+
],
|
|
271
|
+
"additionalProperties": false
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"required": [
|
|
277
|
+
"$date"
|
|
278
|
+
],
|
|
279
|
+
"additionalProperties": false
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"type": "object",
|
|
283
|
+
"properties": {
|
|
284
|
+
"$timestamp": {
|
|
285
|
+
"type": "object",
|
|
286
|
+
"properties": {
|
|
287
|
+
"t": {
|
|
288
|
+
"type": "integer",
|
|
289
|
+
"minimum": 0,
|
|
290
|
+
"maximum": 4294967295
|
|
291
|
+
},
|
|
292
|
+
"i": {
|
|
293
|
+
"type": "integer",
|
|
294
|
+
"minimum": 0,
|
|
295
|
+
"maximum": 4294967295
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"required": [
|
|
299
|
+
"t",
|
|
300
|
+
"i"
|
|
301
|
+
],
|
|
302
|
+
"additionalProperties": false
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
"required": [
|
|
306
|
+
"$timestamp"
|
|
307
|
+
],
|
|
308
|
+
"additionalProperties": false
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"type": "object",
|
|
312
|
+
"properties": {
|
|
313
|
+
"$binary": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"properties": {
|
|
316
|
+
"base64": {
|
|
317
|
+
"$ref": "#/definitions/__schema4"
|
|
318
|
+
},
|
|
319
|
+
"subType": {
|
|
320
|
+
"$ref": "#/definitions/__schema5"
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"required": [
|
|
324
|
+
"base64",
|
|
325
|
+
"subType"
|
|
326
|
+
],
|
|
327
|
+
"additionalProperties": false
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"required": [
|
|
331
|
+
"$binary"
|
|
332
|
+
],
|
|
333
|
+
"additionalProperties": false
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
"__schema3": {
|
|
340
|
+
"type": "string",
|
|
341
|
+
"pattern": "^-?(?:0|[1-9][0-9]*)$"
|
|
342
|
+
},
|
|
343
|
+
"__schema4": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/][AQgw]==|[A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=)?$"
|
|
346
|
+
},
|
|
347
|
+
"__schema5": {
|
|
348
|
+
"type": "string",
|
|
349
|
+
"pattern": "^[0-9a-fA-F]{2}$"
|
|
350
|
+
},
|
|
351
|
+
"__schema6": {
|
|
352
|
+
"minItems": 1,
|
|
353
|
+
"type": "array",
|
|
354
|
+
"items": {
|
|
355
|
+
"$ref": "#/definitions/__schema2"
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"properties": {
|
|
360
|
+
"bucket_definitions": {
|
|
361
|
+
"type": "object",
|
|
362
|
+
"deprecated": true,
|
|
363
|
+
"description": "Deprecated: legacy Sync Rules bucket definitions. They will be removed in the next major version of the PowerSync Service. Use `streams:` (Sync Streams) instead: https://docs.powersync.com/sync/rules/migrate-to-sync-streams",
|
|
364
|
+
"examples": [
|
|
365
|
+
{
|
|
366
|
+
"global": {
|
|
367
|
+
"data": "select * from mytable"
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
],
|
|
371
|
+
"patternProperties": {
|
|
372
|
+
".*": {
|
|
373
|
+
"type": "object",
|
|
374
|
+
"required": [
|
|
375
|
+
"data"
|
|
376
|
+
],
|
|
377
|
+
"examples": [
|
|
378
|
+
{
|
|
379
|
+
"data": [
|
|
380
|
+
"select * from mytable"
|
|
381
|
+
]
|
|
382
|
+
}
|
|
383
|
+
],
|
|
384
|
+
"properties": {
|
|
385
|
+
"accept_potentially_dangerous_queries": {
|
|
386
|
+
"description": "If true, disables warnings on potentially dangerous queries",
|
|
387
|
+
"type": "boolean"
|
|
388
|
+
},
|
|
389
|
+
"priority": {
|
|
390
|
+
"description": "Priority for the bucket (lower values indicate higher priority).",
|
|
391
|
+
"type": "integer"
|
|
392
|
+
},
|
|
393
|
+
"parameters": {
|
|
394
|
+
"description": "Parameter query(ies)",
|
|
395
|
+
"anyOf": [
|
|
396
|
+
{
|
|
397
|
+
"type": "string",
|
|
398
|
+
"description": "Parameter query"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"type": "array",
|
|
402
|
+
"description": "Parameter queries",
|
|
403
|
+
"items": {
|
|
404
|
+
"type": "string"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
"data": {
|
|
410
|
+
"type": "array",
|
|
411
|
+
"description": "Data queries",
|
|
412
|
+
"items": {
|
|
413
|
+
"type": "string"
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"additionalProperties": false
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"with": {
|
|
422
|
+
"type": "object",
|
|
423
|
+
"description": "Common-table expressions available to all sync streams",
|
|
424
|
+
"patternProperties": {
|
|
425
|
+
".*": {
|
|
426
|
+
"type": "string"
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
"streams": {
|
|
431
|
+
"type": "object",
|
|
432
|
+
"description": "List of stream definitions",
|
|
433
|
+
"examples": [
|
|
434
|
+
{
|
|
435
|
+
"user_details": {
|
|
436
|
+
"query": "select * from users where id = auth.user_id()"
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
],
|
|
440
|
+
"patternProperties": {
|
|
441
|
+
".*": {
|
|
442
|
+
"type": "object",
|
|
443
|
+
"examples": [
|
|
444
|
+
{
|
|
445
|
+
"query": [
|
|
446
|
+
"select * from mytable"
|
|
447
|
+
]
|
|
448
|
+
}
|
|
449
|
+
],
|
|
450
|
+
"properties": {
|
|
451
|
+
"accept_potentially_dangerous_queries": {
|
|
452
|
+
"description": "If true, disables warnings on potentially dangerous queries",
|
|
453
|
+
"type": "boolean"
|
|
454
|
+
},
|
|
455
|
+
"auto_subscribe": {
|
|
456
|
+
"description": "Whether clients will subscribe to this stream by default.",
|
|
457
|
+
"type": "boolean"
|
|
458
|
+
},
|
|
459
|
+
"priority": {
|
|
460
|
+
"description": "Priority for the bucket (lower values indicate higher priority).",
|
|
461
|
+
"type": "integer"
|
|
462
|
+
},
|
|
463
|
+
"query": {
|
|
464
|
+
"description": "The SQL query defining content to sync in this stream.",
|
|
465
|
+
"type": "string"
|
|
466
|
+
},
|
|
467
|
+
"queries": {
|
|
468
|
+
"description": "SQL queries defining content to sync in this stream.",
|
|
469
|
+
"type": "array",
|
|
470
|
+
"items": {
|
|
471
|
+
"type": "string"
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"with": {
|
|
475
|
+
"type": "object",
|
|
476
|
+
"description": "Common table expressions defining subqueries available in queries.",
|
|
477
|
+
"patternProperties": {
|
|
478
|
+
".*": {
|
|
479
|
+
"type": "string"
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
"event_definitions": {
|
|
488
|
+
"type": "object",
|
|
489
|
+
"description": "Record of sync replication event definitions",
|
|
490
|
+
"examples": [
|
|
491
|
+
{
|
|
492
|
+
"write_checkpoints": {
|
|
493
|
+
"payloads": [
|
|
494
|
+
"select user_id, client_id, checkpoint from checkpoints"
|
|
495
|
+
]
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
],
|
|
499
|
+
"patternProperties": {
|
|
500
|
+
".*": {
|
|
501
|
+
"type": [
|
|
502
|
+
"object"
|
|
503
|
+
],
|
|
504
|
+
"required": [
|
|
505
|
+
"payloads"
|
|
506
|
+
],
|
|
507
|
+
"examples": [
|
|
508
|
+
{
|
|
509
|
+
"payloads": [
|
|
510
|
+
"select user_id, client_id, checkpoint from checkpoints"
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
],
|
|
514
|
+
"properties": {
|
|
515
|
+
"payloads": {
|
|
516
|
+
"description": "Queries which extract event payload fields from replicated table rows.",
|
|
517
|
+
"type": "array",
|
|
518
|
+
"items": {
|
|
519
|
+
"type": "string"
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
"additionalProperties": false,
|
|
523
|
+
"uniqueItems": true
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
"config": {
|
|
529
|
+
"type": "object",
|
|
530
|
+
"description": "Compatibility, storage, and source-table settings for these definitions.",
|
|
531
|
+
"properties": {
|
|
532
|
+
"source_table_options": {
|
|
533
|
+
"type": "object",
|
|
534
|
+
"propertyNames": {
|
|
535
|
+
"minLength": 1,
|
|
536
|
+
"pattern": "^(?:[^.\"]+|\"(?:[^\"]|\"\")+\")(?:\\.(?:[^.\"]+|\"(?:[^\"]|\"\")+\")){0,2}$"
|
|
537
|
+
},
|
|
538
|
+
"additionalProperties": {
|
|
539
|
+
"type": "object",
|
|
540
|
+
"properties": {
|
|
541
|
+
"mongodb_filter_expression": {
|
|
542
|
+
"anyOf": [
|
|
543
|
+
{
|
|
544
|
+
"$ref": "#/definitions/mongodb_filter_expression"
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"const": "disabled"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"additionalProperties": false
|
|
553
|
+
}
|
|
554
|
+
},
|
|
555
|
+
"edition": {
|
|
556
|
+
"type": "integer",
|
|
557
|
+
"default": 1,
|
|
558
|
+
"minimum": 1,
|
|
559
|
+
"exclusiveMaximum": 4
|
|
560
|
+
},
|
|
561
|
+
"storage_version": {
|
|
562
|
+
"type": "integer",
|
|
563
|
+
"description": "Storage version used by the storage database.",
|
|
564
|
+
"enum": [
|
|
565
|
+
2,
|
|
566
|
+
3,
|
|
567
|
+
4
|
|
568
|
+
]
|
|
569
|
+
},
|
|
570
|
+
"timestamp_max_precision": {
|
|
571
|
+
"type": "string",
|
|
572
|
+
"enum": [
|
|
573
|
+
"seconds",
|
|
574
|
+
"milliseconds",
|
|
575
|
+
"microseconds",
|
|
576
|
+
"nanoseconds"
|
|
577
|
+
]
|
|
578
|
+
},
|
|
579
|
+
"timestamps_iso8601": {
|
|
580
|
+
"type": "boolean",
|
|
581
|
+
"description": "Enabled by default starting from edition 2: Consistently renders timestamps with an ISO 8601-compatible format (previous versions used a space instead of a T to separate date and time)."
|
|
582
|
+
},
|
|
583
|
+
"versioned_bucket_ids": {
|
|
584
|
+
"type": "boolean",
|
|
585
|
+
"description": "Enabled by default starting from edition 2: Encode the version of sync rules in generated bucket ids, which avoids clients downloading data twice and improves client-side progress estimates."
|
|
586
|
+
},
|
|
587
|
+
"fixed_json_extract": {
|
|
588
|
+
"type": "boolean",
|
|
589
|
+
"description": "Enabled by default starting from edition 2: Old versions of the sync service used to treat `->> 'foo.bar'` as a two-element JSON path. With this compatibility option enabled, it follows modern SQLite and treats it as a single key. The `$.` prefix would be required to split on `.`."
|
|
590
|
+
},
|
|
591
|
+
"custom_postgres_types": {
|
|
592
|
+
"type": "boolean",
|
|
593
|
+
"description": "Enabled by default starting from edition 2: Map custom Postgres types into appropriate structures instead of syncing the raw string."
|
|
594
|
+
},
|
|
595
|
+
"unstable_sqlite_expression_engine": {
|
|
596
|
+
"type": "boolean",
|
|
597
|
+
"description": "Enabled by default starting from edition null: Experimental option to evaluate functions and operators in Sync Streams with SQLite instead of a JavaScript implementation."
|
|
598
|
+
},
|
|
599
|
+
"fixed_booleans_in_json": {
|
|
600
|
+
"type": "boolean",
|
|
601
|
+
"description": "Enabled by default starting from edition null: Consistently sync boolean values of a JSON object or array in source data as booleans (instead of integers 0/1)."
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"additionalProperties": false
|
|
605
|
+
}
|
|
606
|
+
},
|
|
607
|
+
"anyOf": [
|
|
608
|
+
{
|
|
609
|
+
"required": [
|
|
610
|
+
"bucket_definitions"
|
|
611
|
+
]
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"required": [
|
|
615
|
+
"streams"
|
|
616
|
+
]
|
|
617
|
+
}
|
|
618
|
+
],
|
|
619
|
+
"additionalProperties": false
|
|
620
|
+
}
|