@powersync/service-sync-rules 0.20.0 → 0.21.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.d.ts +35 -0
- package/dist/BaseSqlDataQuery.js +96 -0
- package/dist/BaseSqlDataQuery.js.map +1 -0
- package/dist/DartSchemaGenerator.d.ts +2 -2
- package/dist/DartSchemaGenerator.js +21 -4
- package/dist/DartSchemaGenerator.js.map +1 -1
- package/dist/ExpressionType.d.ts +7 -2
- package/dist/ExpressionType.js +24 -0
- package/dist/ExpressionType.js.map +1 -1
- package/dist/JsLegacySchemaGenerator.js.map +1 -1
- package/dist/SchemaGenerator.d.ts +4 -1
- package/dist/SchemaGenerator.js.map +1 -1
- package/dist/SqlBucketDescriptor.d.ts +4 -3
- package/dist/SqlBucketDescriptor.js +4 -4
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +5 -35
- package/dist/SqlDataQuery.js +9 -98
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +2 -2
- package/dist/SqlParameterQuery.js +14 -5
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +16 -7
- package/dist/SqlSyncRules.js +58 -12
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSchema.d.ts +17 -2
- package/dist/StaticSchema.js +18 -23
- package/dist/StaticSchema.js.map +1 -1
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TablePattern.d.ts +1 -2
- package/dist/TablePattern.js +0 -2
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableQuerySchema.d.ts +2 -2
- package/dist/TableQuerySchema.js +4 -5
- package/dist/TableQuerySchema.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +35 -0
- package/dist/TableValuedFunctionSqlParameterQuery.js +139 -0
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -0
- package/dist/TableValuedFunctions.d.ts +9 -0
- package/dist/TableValuedFunctions.js +37 -0
- package/dist/TableValuedFunctions.js.map +1 -0
- package/dist/TsSchemaGenerator.d.ts +2 -2
- package/dist/TsSchemaGenerator.js +21 -4
- package/dist/TsSchemaGenerator.js.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/events/SqlEventDescriptor.d.ts +20 -0
- package/dist/events/SqlEventDescriptor.js +50 -0
- package/dist/events/SqlEventDescriptor.js.map +1 -0
- package/dist/events/SqlEventSourceQuery.d.ts +19 -0
- package/dist/events/SqlEventSourceQuery.js +118 -0
- package/dist/events/SqlEventSourceQuery.js.map +1 -0
- package/dist/index.d.ts +13 -11
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +29 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/request_functions.d.ts +2 -2
- package/dist/sql_filters.js +28 -24
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +5 -2
- package/dist/sql_functions.js +12 -5
- package/dist/sql_functions.js.map +1 -1
- package/dist/sql_support.d.ts +1 -3
- package/dist/sql_support.js +16 -23
- package/dist/sql_support.js.map +1 -1
- package/dist/types.d.ts +22 -8
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -1
- package/package.json +7 -5
- package/schema/sync_rules.json +106 -0
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { JsonContainer } from '@powersync/service-jsonbig';
|
|
2
2
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
|
-
import { ColumnDefinition
|
|
3
|
+
import { ColumnDefinition } from './ExpressionType.js';
|
|
4
4
|
import { TablePattern } from './TablePattern.js';
|
|
5
|
+
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
5
6
|
export interface SyncRules {
|
|
6
7
|
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
7
8
|
evaluateParameterRow(table: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
8
9
|
}
|
|
9
|
-
export interface QueryParseOptions {
|
|
10
|
+
export interface QueryParseOptions extends SyncRulesOptions {
|
|
10
11
|
accept_potentially_dangerous_queries?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export interface EvaluatedParameters {
|
|
@@ -46,7 +47,19 @@ export interface RequestJwtPayload {
|
|
|
46
47
|
sub: string;
|
|
47
48
|
[key: string]: any;
|
|
48
49
|
}
|
|
49
|
-
export
|
|
50
|
+
export interface ParameterValueSet {
|
|
51
|
+
lookup(table: string, column: string): SqliteValue;
|
|
52
|
+
/**
|
|
53
|
+
* JSON string of raw request parameters.
|
|
54
|
+
*/
|
|
55
|
+
raw_user_parameters: string;
|
|
56
|
+
/**
|
|
57
|
+
* JSON string of raw request parameters.
|
|
58
|
+
*/
|
|
59
|
+
raw_token_payload: string;
|
|
60
|
+
user_id: string;
|
|
61
|
+
}
|
|
62
|
+
export declare class RequestParameters implements ParameterValueSet {
|
|
50
63
|
token_parameters: SqliteJsonRow;
|
|
51
64
|
user_parameters: SqliteJsonRow;
|
|
52
65
|
/**
|
|
@@ -59,6 +72,7 @@ export declare class RequestParameters {
|
|
|
59
72
|
raw_token_payload: string;
|
|
60
73
|
user_id: string;
|
|
61
74
|
constructor(tokenPayload: RequestJwtPayload, clientParameters: Record<string, any>);
|
|
75
|
+
lookup(table: string, column: string): SqliteJsonValue;
|
|
62
76
|
}
|
|
63
77
|
/**
|
|
64
78
|
* A value that is both SQLite and JSON-compatible.
|
|
@@ -149,7 +163,7 @@ export interface InputParameter {
|
|
|
149
163
|
*
|
|
150
164
|
* Only relevant for parameter queries.
|
|
151
165
|
*/
|
|
152
|
-
parametersToLookupValue(parameters:
|
|
166
|
+
parametersToLookupValue(parameters: ParameterValueSet): SqliteValue;
|
|
153
167
|
}
|
|
154
168
|
export interface EvaluateRowOptions {
|
|
155
169
|
sourceTable: SourceTableInterface;
|
|
@@ -216,10 +230,10 @@ export interface ParameterValueClause {
|
|
|
216
230
|
*
|
|
217
231
|
* Only relevant for parameter queries.
|
|
218
232
|
*/
|
|
219
|
-
lookupParameterValue(parameters:
|
|
233
|
+
lookupParameterValue(parameters: ParameterValueSet): SqliteValue;
|
|
220
234
|
}
|
|
221
235
|
export interface QuerySchema {
|
|
222
|
-
|
|
236
|
+
getColumn(table: string, column: string): ColumnDefinition | undefined;
|
|
223
237
|
getColumns(table: string): ColumnDefinition[];
|
|
224
238
|
}
|
|
225
239
|
/**
|
|
@@ -230,7 +244,7 @@ export interface QuerySchema {
|
|
|
230
244
|
*/
|
|
231
245
|
export interface RowValueClause {
|
|
232
246
|
evaluate(tables: QueryParameters): SqliteValue;
|
|
233
|
-
|
|
247
|
+
getColumnDefinition(schema: QuerySchema): ColumnDefinition | undefined;
|
|
234
248
|
}
|
|
235
249
|
/**
|
|
236
250
|
* Completely static value.
|
|
@@ -254,7 +268,7 @@ export interface QueryBucketIdOptions {
|
|
|
254
268
|
}
|
|
255
269
|
export interface SourceSchemaTable {
|
|
256
270
|
table: string;
|
|
257
|
-
|
|
271
|
+
getColumn(column: string): ColumnDefinition | undefined;
|
|
258
272
|
getColumns(): ColumnDefinition[];
|
|
259
273
|
}
|
|
260
274
|
export interface SourceSchema {
|
package/dist/types.js
CHANGED
|
@@ -24,5 +24,14 @@ export class RequestParameters {
|
|
|
24
24
|
this.raw_user_parameters = JSONBig.stringify(clientParameters);
|
|
25
25
|
this.user_parameters = toSyncRulesParameters(clientParameters);
|
|
26
26
|
}
|
|
27
|
+
lookup(table, column) {
|
|
28
|
+
if (table == 'token_parameters') {
|
|
29
|
+
return this.token_parameters[column];
|
|
30
|
+
}
|
|
31
|
+
else if (table == 'user_parameters') {
|
|
32
|
+
return this.user_parameters[column];
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Unknown table: ${table}`);
|
|
35
|
+
}
|
|
27
36
|
}
|
|
28
37
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAgDnD,MAAM,UAAU,iBAAiB,CAAC,CAAM;IACtC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAmB;IAChD,OAAO,OAAQ,CAAkB,CAAC,MAAM,IAAI,QAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAA4B;IAChE,OAAO,KAAK,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AA6BD,MAAM,OAAO,iBAAiB;IAgB5B,YAAY,YAA+B,EAAE,gBAAqC;QAChF,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAA6C,CAAC;QAEpF,MAAM,gBAAgB,GAAG;YACvB,GAAG,gBAAgB;YACnB,oDAAoD;YACpD,OAAO,EAAE,YAAY,CAAC,GAAG;SAC1B,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare function filterJsonRow(data: SqliteRow): SqliteJsonRow;
|
|
|
16
16
|
*
|
|
17
17
|
* Types specifically not supported in output are `boolean` and `undefined`.
|
|
18
18
|
*/
|
|
19
|
-
export declare function jsonValueToSqlite(value: null | undefined | string | number | bigint | boolean): SqliteValue;
|
|
19
|
+
export declare function jsonValueToSqlite(value: null | undefined | string | number | bigint | boolean | any): SqliteValue;
|
|
20
20
|
export declare function isJsonValue(value: SqliteValue): value is SqliteJsonValue;
|
|
21
21
|
/**
|
|
22
22
|
* Map database row to SqliteRow for use in sync rules.
|
package/dist/utils.js
CHANGED
|
@@ -36,6 +36,10 @@ export function jsonValueToSqlite(value) {
|
|
|
36
36
|
if (typeof value == 'boolean') {
|
|
37
37
|
return value ? SQLITE_TRUE : SQLITE_FALSE;
|
|
38
38
|
}
|
|
39
|
+
else if (typeof value == 'object' || Array.isArray(value)) {
|
|
40
|
+
// Objects and arrays must be stringified
|
|
41
|
+
return JSONBig.stringify(value);
|
|
42
|
+
}
|
|
39
43
|
else {
|
|
40
44
|
return value ?? null;
|
|
41
45
|
}
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAY,MAAM,4BAA4B,CAAC;AAE7E,MAAM,UAAU,iBAAiB,CAAC,CAAY;IAC5C,OAAO,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,aAAqB,EACrB,iBAA2B,EAC3B,MAAuC;IAEvC,gHAAgH;IAChH,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,GAAG,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,IAAI,MAAM,GAAwB,EAAE,CAAC;IACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAY,MAAM,4BAA4B,CAAC;AAE7E,MAAM,UAAU,iBAAiB,CAAC,CAAY;IAC5C,OAAO,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,aAAqB,EACrB,iBAA2B,EAC3B,MAAuC;IAEvC,gHAAgH;IAChH,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,GAAG,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,IAAI,MAAM,GAAwB,EAAE,CAAC;IACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkE;IAClG,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,yCAAyC;QACzC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC3G,CAAC;AAED,SAAS,cAAc,CAAC,IAAS,EAAE,KAAK,GAAG,CAAC;IAC1C,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;QACxB,kDAAkD;QAClD,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,CAAC,oBAAoB;IACnC,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,SAAS,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3C,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QACzC,oEAAoE;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,MAAM,GAAwB,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAqB;IAClD,IAAI,MAAM,GAAc,EAAE,CAAC;IAC3B,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA+B;IACnE,IAAI,MAAM,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAoB,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS,EAAE,UAAoB,EAAE,aAAuB;IACvF,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,oBAAoB;QACpB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,SAAS,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3C,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,sFAAsF;QACtF,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,MAAM,GAAwB,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,KAAU,EAAE,QAAmB,EAAE,KAAuB;QAChE,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAE,CAAC;IAC/C,CAAC;CACF,CAAC"}
|
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.21.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "FSL-1.1-Apache-2.0",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"access": "public"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
|
-
"dist/**/*"
|
|
12
|
+
"dist/**/*",
|
|
13
|
+
"schema/*"
|
|
13
14
|
],
|
|
14
15
|
"type": "module",
|
|
15
16
|
"dependencies": {
|
|
@@ -20,12 +21,13 @@
|
|
|
20
21
|
"@powersync/service-jsonbig": "^0.17.10"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
|
-
"@types/node": "
|
|
24
|
-
"vitest": "^2.
|
|
24
|
+
"@types/node": "^22.5.5",
|
|
25
|
+
"vitest": "^2.1.1"
|
|
25
26
|
},
|
|
26
27
|
"scripts": {
|
|
27
28
|
"clean": "rm -r ./dist && tsc -b --clean",
|
|
28
|
-
"build": "tsc -b",
|
|
29
|
+
"build:tsc": "tsc -b",
|
|
30
|
+
"build": "pnpm build:tsc && node scripts/compile-schema.js",
|
|
29
31
|
"build:tests": "tsc -b test/tsconfig.json",
|
|
30
32
|
"test": "vitest"
|
|
31
33
|
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"properties": {
|
|
4
|
+
"bucket_definitions": {
|
|
5
|
+
"type": "object",
|
|
6
|
+
"description": "List of bucket definitions",
|
|
7
|
+
"examples": [
|
|
8
|
+
{
|
|
9
|
+
"global": {
|
|
10
|
+
"data": "select * from mytable"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"patternProperties": {
|
|
15
|
+
".*": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"required": [
|
|
18
|
+
"data"
|
|
19
|
+
],
|
|
20
|
+
"examples": [
|
|
21
|
+
{
|
|
22
|
+
"data": [
|
|
23
|
+
"select * from mytable"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"properties": {
|
|
28
|
+
"accept_potentially_dangerous_queries": {
|
|
29
|
+
"description": "If true, disables warnings on potentially dangerous queries",
|
|
30
|
+
"type": "boolean"
|
|
31
|
+
},
|
|
32
|
+
"parameters": {
|
|
33
|
+
"description": "Parameter query(ies)",
|
|
34
|
+
"anyOf": [
|
|
35
|
+
{
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Parameter query"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "array",
|
|
41
|
+
"description": "Parameter queries",
|
|
42
|
+
"items": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"data": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"description": "Data queries",
|
|
51
|
+
"items": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"additionalProperties": false
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"event_definitions": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"description": "Record of sync replication event definitions",
|
|
63
|
+
"examples": [
|
|
64
|
+
{
|
|
65
|
+
"write_checkpoints": {
|
|
66
|
+
"payloads": [
|
|
67
|
+
"select user_id, client_id, checkpoint from checkpoints"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"patternProperties": {
|
|
73
|
+
".*": {
|
|
74
|
+
"type": [
|
|
75
|
+
"object"
|
|
76
|
+
],
|
|
77
|
+
"required": [
|
|
78
|
+
"payloads"
|
|
79
|
+
],
|
|
80
|
+
"examples": [
|
|
81
|
+
{
|
|
82
|
+
"payloads": [
|
|
83
|
+
"select user_id, client_id, checkpoint from checkpoints"
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"properties": {
|
|
88
|
+
"payloads": {
|
|
89
|
+
"description": "Queries which extract event payload fields from replicated table rows.",
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "string"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false,
|
|
96
|
+
"uniqueItems": true
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"required": [
|
|
103
|
+
"bucket_definitions"
|
|
104
|
+
],
|
|
105
|
+
"additionalProperties": false
|
|
106
|
+
}
|