@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.
Files changed (72) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +35 -0
  2. package/dist/BaseSqlDataQuery.js +96 -0
  3. package/dist/BaseSqlDataQuery.js.map +1 -0
  4. package/dist/DartSchemaGenerator.d.ts +2 -2
  5. package/dist/DartSchemaGenerator.js +21 -4
  6. package/dist/DartSchemaGenerator.js.map +1 -1
  7. package/dist/ExpressionType.d.ts +7 -2
  8. package/dist/ExpressionType.js +24 -0
  9. package/dist/ExpressionType.js.map +1 -1
  10. package/dist/JsLegacySchemaGenerator.js.map +1 -1
  11. package/dist/SchemaGenerator.d.ts +4 -1
  12. package/dist/SchemaGenerator.js.map +1 -1
  13. package/dist/SqlBucketDescriptor.d.ts +4 -3
  14. package/dist/SqlBucketDescriptor.js +4 -4
  15. package/dist/SqlBucketDescriptor.js.map +1 -1
  16. package/dist/SqlDataQuery.d.ts +5 -35
  17. package/dist/SqlDataQuery.js +9 -98
  18. package/dist/SqlDataQuery.js.map +1 -1
  19. package/dist/SqlParameterQuery.d.ts +2 -2
  20. package/dist/SqlParameterQuery.js +14 -5
  21. package/dist/SqlParameterQuery.js.map +1 -1
  22. package/dist/SqlSyncRules.d.ts +16 -7
  23. package/dist/SqlSyncRules.js +58 -12
  24. package/dist/SqlSyncRules.js.map +1 -1
  25. package/dist/StaticSchema.d.ts +17 -2
  26. package/dist/StaticSchema.js +18 -23
  27. package/dist/StaticSchema.js.map +1 -1
  28. package/dist/StaticSqlParameterQuery.js.map +1 -1
  29. package/dist/TablePattern.d.ts +1 -2
  30. package/dist/TablePattern.js +0 -2
  31. package/dist/TablePattern.js.map +1 -1
  32. package/dist/TableQuerySchema.d.ts +2 -2
  33. package/dist/TableQuerySchema.js +4 -5
  34. package/dist/TableQuerySchema.js.map +1 -1
  35. package/dist/TableValuedFunctionSqlParameterQuery.d.ts +35 -0
  36. package/dist/TableValuedFunctionSqlParameterQuery.js +139 -0
  37. package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -0
  38. package/dist/TableValuedFunctions.d.ts +9 -0
  39. package/dist/TableValuedFunctions.js +37 -0
  40. package/dist/TableValuedFunctions.js.map +1 -0
  41. package/dist/TsSchemaGenerator.d.ts +2 -2
  42. package/dist/TsSchemaGenerator.js +21 -4
  43. package/dist/TsSchemaGenerator.js.map +1 -1
  44. package/dist/errors.js.map +1 -1
  45. package/dist/events/SqlEventDescriptor.d.ts +20 -0
  46. package/dist/events/SqlEventDescriptor.js +50 -0
  47. package/dist/events/SqlEventDescriptor.js.map +1 -0
  48. package/dist/events/SqlEventSourceQuery.d.ts +19 -0
  49. package/dist/events/SqlEventSourceQuery.js +118 -0
  50. package/dist/events/SqlEventSourceQuery.js.map +1 -0
  51. package/dist/index.d.ts +13 -11
  52. package/dist/index.js +13 -11
  53. package/dist/index.js.map +1 -1
  54. package/dist/json_schema.js +29 -0
  55. package/dist/json_schema.js.map +1 -1
  56. package/dist/request_functions.d.ts +2 -2
  57. package/dist/sql_filters.js +28 -24
  58. package/dist/sql_filters.js.map +1 -1
  59. package/dist/sql_functions.d.ts +5 -2
  60. package/dist/sql_functions.js +12 -5
  61. package/dist/sql_functions.js.map +1 -1
  62. package/dist/sql_support.d.ts +1 -3
  63. package/dist/sql_support.js +16 -23
  64. package/dist/sql_support.js.map +1 -1
  65. package/dist/types.d.ts +22 -8
  66. package/dist/types.js +9 -0
  67. package/dist/types.js.map +1 -1
  68. package/dist/utils.d.ts +1 -1
  69. package/dist/utils.js +4 -0
  70. package/dist/utils.js.map +1 -1
  71. package/package.json +7 -5
  72. 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, ExpressionType } from './ExpressionType.js';
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 declare class RequestParameters {
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: RequestParameters): SqliteValue;
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: RequestParameters): SqliteValue;
233
+ lookupParameterValue(parameters: ParameterValueSet): SqliteValue;
220
234
  }
221
235
  export interface QuerySchema {
222
- getType(table: string, column: string): ExpressionType;
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
- getType(schema: QuerySchema): ExpressionType;
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
- getType(column: string): ExpressionType | undefined;
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;AA+CnD,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;AAaD,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;CACF"}
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":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.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.20.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": "18.19.50",
24
- "vitest": "^2.0.5"
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
+ }