@powersync/service-sync-rules 0.0.0-dev-20240708103353

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 (75) hide show
  1. package/LICENSE +67 -0
  2. package/README.md +129 -0
  3. package/dist/DartSchemaGenerator.d.ts +12 -0
  4. package/dist/DartSchemaGenerator.js +39 -0
  5. package/dist/DartSchemaGenerator.js.map +1 -0
  6. package/dist/ExpressionType.d.ts +33 -0
  7. package/dist/ExpressionType.js +61 -0
  8. package/dist/ExpressionType.js.map +1 -0
  9. package/dist/IdSequence.d.ts +4 -0
  10. package/dist/IdSequence.js +9 -0
  11. package/dist/IdSequence.js.map +1 -0
  12. package/dist/JsSchemaGenerator.d.ts +12 -0
  13. package/dist/JsSchemaGenerator.js +42 -0
  14. package/dist/JsSchemaGenerator.js.map +1 -0
  15. package/dist/SchemaGenerator.d.ts +14 -0
  16. package/dist/SchemaGenerator.js +26 -0
  17. package/dist/SchemaGenerator.js.map +1 -0
  18. package/dist/SourceTableInterface.d.ts +5 -0
  19. package/dist/SourceTableInterface.js +2 -0
  20. package/dist/SourceTableInterface.js.map +1 -0
  21. package/dist/SqlBucketDescriptor.d.ts +37 -0
  22. package/dist/SqlBucketDescriptor.js +111 -0
  23. package/dist/SqlBucketDescriptor.js.map +1 -0
  24. package/dist/SqlDataQuery.d.ts +39 -0
  25. package/dist/SqlDataQuery.js +239 -0
  26. package/dist/SqlDataQuery.js.map +1 -0
  27. package/dist/SqlParameterQuery.d.ts +85 -0
  28. package/dist/SqlParameterQuery.js +311 -0
  29. package/dist/SqlParameterQuery.js.map +1 -0
  30. package/dist/SqlSyncRules.d.ts +52 -0
  31. package/dist/SqlSyncRules.js +264 -0
  32. package/dist/SqlSyncRules.js.map +1 -0
  33. package/dist/StaticSchema.d.ts +26 -0
  34. package/dist/StaticSchema.js +61 -0
  35. package/dist/StaticSchema.js.map +1 -0
  36. package/dist/StaticSqlParameterQuery.d.ts +27 -0
  37. package/dist/StaticSqlParameterQuery.js +96 -0
  38. package/dist/StaticSqlParameterQuery.js.map +1 -0
  39. package/dist/TablePattern.d.ts +17 -0
  40. package/dist/TablePattern.js +56 -0
  41. package/dist/TablePattern.js.map +1 -0
  42. package/dist/TableQuerySchema.d.ts +9 -0
  43. package/dist/TableQuerySchema.js +34 -0
  44. package/dist/TableQuerySchema.js.map +1 -0
  45. package/dist/errors.d.ts +22 -0
  46. package/dist/errors.js +58 -0
  47. package/dist/errors.js.map +1 -0
  48. package/dist/generators.d.ts +6 -0
  49. package/dist/generators.js +7 -0
  50. package/dist/generators.js.map +1 -0
  51. package/dist/index.d.ts +19 -0
  52. package/dist/index.js +20 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/json_schema.d.ts +3 -0
  55. package/dist/json_schema.js +52 -0
  56. package/dist/json_schema.js.map +1 -0
  57. package/dist/request_functions.d.ts +17 -0
  58. package/dist/request_functions.js +41 -0
  59. package/dist/request_functions.js.map +1 -0
  60. package/dist/sql_filters.d.ts +125 -0
  61. package/dist/sql_filters.js +599 -0
  62. package/dist/sql_filters.js.map +1 -0
  63. package/dist/sql_functions.d.ts +61 -0
  64. package/dist/sql_functions.js +863 -0
  65. package/dist/sql_functions.js.map +1 -0
  66. package/dist/sql_support.d.ts +25 -0
  67. package/dist/sql_support.js +254 -0
  68. package/dist/sql_support.js.map +1 -0
  69. package/dist/types.d.ts +262 -0
  70. package/dist/types.js +28 -0
  71. package/dist/types.js.map +1 -0
  72. package/dist/utils.d.ts +44 -0
  73. package/dist/utils.js +167 -0
  74. package/dist/utils.js.map +1 -0
  75. package/package.json +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql_functions.js","sourceRoot":"","sources":["../src/sql_functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ClauseError, CompiledClause, ParameterMatchClause, ParameterValueClause, SqliteValue, RowValueClause, StaticValueClause } from './types.js';
2
+ import { SqlFunction } from './sql_functions.js';
3
+ import { SelectFromStatement } from 'pgsql-ast-parser';
4
+ import { SqlRuleError } from './errors.js';
5
+ export declare function isParameterMatchClause(clause: CompiledClause): clause is ParameterMatchClause;
6
+ export declare function isRowValueClause(clause: CompiledClause): clause is RowValueClause;
7
+ export declare function isStaticValueClause(clause: CompiledClause): clause is StaticValueClause;
8
+ export declare function isParameterValueClause(clause: CompiledClause): clause is ParameterValueClause;
9
+ export declare function isClauseError(clause: CompiledClause): clause is ClauseError;
10
+ export declare const SQLITE_TRUE = 1n;
11
+ export declare const SQLITE_FALSE = 0n;
12
+ export declare function sqliteBool(value: SqliteValue | boolean): 1n | 0n;
13
+ export declare function sqliteNot(value: SqliteValue | boolean): 0n | 1n;
14
+ export declare function compileStaticOperator(op: string, left: RowValueClause, right: RowValueClause): RowValueClause;
15
+ export declare function getOperatorFunction(op: string): SqlFunction;
16
+ export declare function andFilters(a: CompiledClause, b: CompiledClause): CompiledClause;
17
+ export declare function orFilters(a: CompiledClause, b: CompiledClause): CompiledClause;
18
+ export declare function orParameterSetClauses(a: ParameterMatchClause, b: ParameterMatchClause): ParameterMatchClause;
19
+ /**
20
+ * Given any CompiledClause, convert it into a ParameterMatchClause.
21
+ *
22
+ * @param clause
23
+ */
24
+ export declare function toBooleanParameterSetClause(clause: CompiledClause): ParameterMatchClause;
25
+ export declare function checkUnsupportedFeatures(sql: string, q: SelectFromStatement): SqlRuleError[];
@@ -0,0 +1,254 @@
1
+ import { MATCH_CONST_FALSE, MATCH_CONST_TRUE } from './sql_filters.js';
2
+ import { evaluateOperator, getOperatorReturnType } from './sql_functions.js';
3
+ import { SqlRuleError } from './errors.js';
4
+ import { ExpressionType } from './ExpressionType.js';
5
+ export function isParameterMatchClause(clause) {
6
+ return Array.isArray(clause.inputParameters);
7
+ }
8
+ export function isRowValueClause(clause) {
9
+ return typeof clause.evaluate == 'function';
10
+ }
11
+ export function isStaticValueClause(clause) {
12
+ return isRowValueClause(clause) && typeof clause.value != 'undefined';
13
+ }
14
+ export function isParameterValueClause(clause) {
15
+ // noinspection SuspiciousTypeOfGuard
16
+ return typeof clause.key == 'string';
17
+ }
18
+ export function isClauseError(clause) {
19
+ return clause.error === true;
20
+ }
21
+ export const SQLITE_TRUE = 1n;
22
+ export const SQLITE_FALSE = 0n;
23
+ export function sqliteBool(value) {
24
+ if (value == null) {
25
+ return SQLITE_FALSE;
26
+ }
27
+ else if (typeof value == 'boolean' || typeof value == 'number') {
28
+ return value ? SQLITE_TRUE : SQLITE_FALSE;
29
+ }
30
+ else if (typeof value == 'bigint') {
31
+ return value != 0n ? SQLITE_TRUE : SQLITE_FALSE;
32
+ }
33
+ else if (typeof value == 'string') {
34
+ return parseInt(value) ? SQLITE_TRUE : SQLITE_FALSE;
35
+ }
36
+ else {
37
+ return SQLITE_FALSE;
38
+ }
39
+ }
40
+ export function sqliteNot(value) {
41
+ return sqliteBool(!sqliteBool(value));
42
+ }
43
+ export function compileStaticOperator(op, left, right) {
44
+ return {
45
+ evaluate: (tables) => {
46
+ const leftValue = left.evaluate(tables);
47
+ const rightValue = right.evaluate(tables);
48
+ return evaluateOperator(op, leftValue, rightValue);
49
+ },
50
+ getType(schema) {
51
+ const typeLeft = left.getType(schema);
52
+ const typeRight = right.getType(schema);
53
+ return getOperatorReturnType(op, typeLeft, typeRight);
54
+ }
55
+ };
56
+ }
57
+ export function getOperatorFunction(op) {
58
+ return {
59
+ debugName: `operator${op}`,
60
+ call(...args) {
61
+ return evaluateOperator(op, args[0], args[1]);
62
+ },
63
+ getReturnType(args) {
64
+ return getOperatorReturnType(op, args[0], args[1]);
65
+ },
66
+ parameters: [
67
+ { name: 'left', type: ExpressionType.ANY, optional: false },
68
+ { name: 'right', type: ExpressionType.ANY, optional: false }
69
+ ]
70
+ };
71
+ }
72
+ export function andFilters(a, b) {
73
+ if (isRowValueClause(a) && isRowValueClause(b)) {
74
+ // Optimization
75
+ return {
76
+ evaluate(tables) {
77
+ const aValue = sqliteBool(a.evaluate(tables));
78
+ const bValue = sqliteBool(b.evaluate(tables));
79
+ return sqliteBool(aValue && bValue);
80
+ },
81
+ getType() {
82
+ return ExpressionType.INTEGER;
83
+ }
84
+ };
85
+ }
86
+ const aFilter = toBooleanParameterSetClause(a);
87
+ const bFilter = toBooleanParameterSetClause(b);
88
+ const aParams = aFilter.inputParameters;
89
+ const bParams = bFilter.inputParameters;
90
+ if (aFilter.unbounded && bFilter.unbounded) {
91
+ // This could explode the number of buckets for the row
92
+ throw new Error('Cannot have multiple IN expressions on bucket parameters');
93
+ }
94
+ const combinedMap = new Map([...aParams, ...bParams].map((p) => [p.key, p]));
95
+ return {
96
+ error: aFilter.error || bFilter.error,
97
+ inputParameters: [...combinedMap.values()],
98
+ unbounded: aFilter.unbounded || bFilter.unbounded,
99
+ filterRow: (tables) => {
100
+ const aResult = aFilter.filterRow(tables);
101
+ const bResult = bFilter.filterRow(tables);
102
+ let results = [];
103
+ for (let result1 of aResult) {
104
+ for (let result2 of bResult) {
105
+ let combined = { ...result1 };
106
+ let valid = true;
107
+ for (let key in result2) {
108
+ if (key in combined && combined[key] != result2[key]) {
109
+ valid = false;
110
+ break;
111
+ }
112
+ combined[key] = result2[key];
113
+ }
114
+ results.push(combined);
115
+ }
116
+ }
117
+ return results;
118
+ },
119
+ usesAuthenticatedRequestParameters: aFilter.usesAuthenticatedRequestParameters || bFilter.usesAuthenticatedRequestParameters,
120
+ usesUnauthenticatedRequestParameters: aFilter.usesUnauthenticatedRequestParameters || bFilter.usesUnauthenticatedRequestParameters
121
+ };
122
+ }
123
+ export function orFilters(a, b) {
124
+ if (isRowValueClause(a) && isRowValueClause(b)) {
125
+ // Optimization
126
+ return {
127
+ evaluate(tables) {
128
+ const aValue = sqliteBool(a.evaluate(tables));
129
+ const bValue = sqliteBool(b.evaluate(tables));
130
+ return sqliteBool(aValue || bValue);
131
+ },
132
+ getType() {
133
+ return ExpressionType.INTEGER;
134
+ }
135
+ };
136
+ }
137
+ const aFilter = toBooleanParameterSetClause(a);
138
+ const bFilter = toBooleanParameterSetClause(b);
139
+ return orParameterSetClauses(aFilter, bFilter);
140
+ }
141
+ export function orParameterSetClauses(a, b) {
142
+ const aParams = a.inputParameters;
143
+ const bParams = b.inputParameters;
144
+ // This gives the guaranteed set of parameters matched against.
145
+ const combinedMap = new Map([...aParams, ...bParams].map((p) => [p.key, p]));
146
+ if (combinedMap.size != aParams.length || combinedMap.size != bParams.length) {
147
+ throw new Error(`Left and right sides of OR must use the same parameters, or split into separate queries. ${JSON.stringify(aParams)} != ${JSON.stringify(bParams)}`);
148
+ }
149
+ const parameters = [...combinedMap.values()];
150
+ // assets.region_id = bucket.region_id AND bucket.user_id IN assets.user_ids
151
+ // OR bucket.region_id IN assets.region_ids AND bucket.user_id = assets.user_id
152
+ const unbounded = a.unbounded || b.unbounded;
153
+ return {
154
+ error: a.error || b.error,
155
+ inputParameters: parameters,
156
+ unbounded,
157
+ filterRow: (tables) => {
158
+ const aResult = a.filterRow(tables);
159
+ const bResult = b.filterRow(tables);
160
+ let results = [...aResult, ...bResult];
161
+ return results;
162
+ },
163
+ // Pessimistic check
164
+ usesAuthenticatedRequestParameters: a.usesAuthenticatedRequestParameters && b.usesAuthenticatedRequestParameters,
165
+ // Optimistic check
166
+ usesUnauthenticatedRequestParameters: a.usesUnauthenticatedRequestParameters || b.usesUnauthenticatedRequestParameters
167
+ };
168
+ }
169
+ /**
170
+ * Given any CompiledClause, convert it into a ParameterMatchClause.
171
+ *
172
+ * @param clause
173
+ */
174
+ export function toBooleanParameterSetClause(clause) {
175
+ if (isParameterMatchClause(clause)) {
176
+ return clause;
177
+ }
178
+ else if (isRowValueClause(clause)) {
179
+ return {
180
+ error: false,
181
+ inputParameters: [],
182
+ unbounded: false,
183
+ filterRow(tables) {
184
+ const value = sqliteBool(clause.evaluate(tables));
185
+ return value ? MATCH_CONST_TRUE : MATCH_CONST_FALSE;
186
+ },
187
+ usesAuthenticatedRequestParameters: false,
188
+ usesUnauthenticatedRequestParameters: false
189
+ };
190
+ }
191
+ else if (isClauseError(clause)) {
192
+ return {
193
+ error: true,
194
+ inputParameters: [],
195
+ unbounded: false,
196
+ filterRow(tables) {
197
+ throw new Error('invalid clause');
198
+ },
199
+ usesAuthenticatedRequestParameters: false,
200
+ usesUnauthenticatedRequestParameters: false
201
+ };
202
+ }
203
+ else {
204
+ // Equivalent to `bucket.param = true`
205
+ const key = clause.key;
206
+ const inputParam = {
207
+ key: key,
208
+ expands: false,
209
+ filteredRowToLookupValue: (filterParameters) => {
210
+ return filterParameters[key];
211
+ },
212
+ parametersToLookupValue: (parameters) => {
213
+ const inner = clause.lookupParameterValue(parameters);
214
+ return sqliteBool(inner);
215
+ }
216
+ };
217
+ return {
218
+ error: false,
219
+ inputParameters: [inputParam],
220
+ unbounded: false,
221
+ filterRow(tables) {
222
+ return [{ [key]: SQLITE_TRUE }];
223
+ },
224
+ usesAuthenticatedRequestParameters: clause.usesAuthenticatedRequestParameters,
225
+ usesUnauthenticatedRequestParameters: clause.usesUnauthenticatedRequestParameters
226
+ };
227
+ }
228
+ }
229
+ export function checkUnsupportedFeatures(sql, q) {
230
+ let errors = [];
231
+ if (q.limit != null) {
232
+ errors.push(new SqlRuleError('LIMIT is not supported', sql, q.limit._location));
233
+ }
234
+ if (q.orderBy != null) {
235
+ errors.push(new SqlRuleError('ORDER BY is not supported', sql, q.orderBy[0]?._location));
236
+ }
237
+ if (q.skip != null) {
238
+ errors.push(new SqlRuleError('SKIP is not supported', sql, q.skip._location));
239
+ }
240
+ if (q.having != null) {
241
+ errors.push(new SqlRuleError('HAVING is not supported', sql, q.having._location));
242
+ }
243
+ if (q.groupBy != null) {
244
+ errors.push(new SqlRuleError('GROUP BY is not supported', sql, q.groupBy[0]?._location));
245
+ }
246
+ if (q.distinct != null) {
247
+ errors.push(new SqlRuleError('DISTINCT is not supported', sql));
248
+ }
249
+ if (q.for != null) {
250
+ errors.push(new SqlRuleError('SELECT FOR is not supported', sql, q.for._location));
251
+ }
252
+ return errors;
253
+ }
254
+ //# sourceMappingURL=sql_support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql_support.js","sourceRoot":"","sources":["../src/sql_support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,262 @@
1
+ import { JsonContainer } from '@powersync/service-jsonbig';
2
+ import { SourceTableInterface } from './SourceTableInterface.js';
3
+ import { ColumnDefinition, ExpressionType } from './ExpressionType.js';
4
+ import { TablePattern } from './TablePattern.js';
5
+ export interface SyncRules {
6
+ evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
7
+ evaluateParameterRow(table: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
8
+ }
9
+ export interface QueryParseOptions {
10
+ accept_potentially_dangerous_queries?: boolean;
11
+ }
12
+ export interface EvaluatedParameters {
13
+ lookup: SqliteJsonValue[];
14
+ /**
15
+ * Parameters used to generate bucket id. May be incomplete.
16
+ *
17
+ * JSON-serializable.
18
+ */
19
+ bucket_parameters: Record<string, SqliteJsonValue>[];
20
+ }
21
+ export type EvaluatedParametersResult = EvaluatedParameters | EvaluationError;
22
+ export interface EvaluatedRow {
23
+ bucket: string;
24
+ /** Output table - may be different from input table. */
25
+ table: string;
26
+ /**
27
+ * Convenience attribute. Must match data.id.
28
+ */
29
+ id: string;
30
+ /** Must be JSON-serializable. */
31
+ data: SqliteJsonRow;
32
+ /** For debugging purposes only. */
33
+ ruleId?: string;
34
+ }
35
+ export interface EvaluationError {
36
+ error: string;
37
+ }
38
+ export declare function isEvaluationError(e: any): e is EvaluationError;
39
+ export declare function isEvaluatedRow(e: EvaluationResult): e is EvaluatedRow;
40
+ export declare function isEvaluatedParameters(e: EvaluatedParametersResult): e is EvaluatedParameters;
41
+ export type EvaluationResult = EvaluatedRow | EvaluationError;
42
+ export interface RequestJwtPayload {
43
+ /**
44
+ * user_id
45
+ */
46
+ sub: string;
47
+ [key: string]: any;
48
+ }
49
+ export declare class RequestParameters {
50
+ token_parameters: SqliteJsonRow;
51
+ user_parameters: SqliteJsonRow;
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
+ constructor(tokenPayload: RequestJwtPayload, clientParameters: Record<string, any>);
62
+ }
63
+ /**
64
+ * A value that is both SQLite and JSON-compatible.
65
+ *
66
+ * Uint8Array is not supported.
67
+ */
68
+ export type SqliteJsonValue = number | string | bigint | null;
69
+ /**
70
+ * A value supported by the SQLite type system.
71
+ */
72
+ export type SqliteValue = number | string | null | bigint | Uint8Array;
73
+ /**
74
+ * A set of values that are both SQLite and JSON-compatible.
75
+ *
76
+ * This is a flat object -> no nested arrays or objects.
77
+ */
78
+ export type SqliteJsonRow = {
79
+ [column: string]: SqliteJsonValue;
80
+ };
81
+ /**
82
+ * SQLite-compatible row (NULL, TEXT, INTEGER, REAL, BLOB).
83
+ * JSON is represented as TEXT.
84
+ */
85
+ export type SqliteRow = {
86
+ [column: string]: SqliteValue;
87
+ };
88
+ /**
89
+ * SQLite-compatible row (NULL, TEXT, INTEGER, REAL, BLOB).
90
+ * JSON is represented as TEXT.
91
+ *
92
+ * Toasted values are `undefined`.
93
+ */
94
+ export type ToastableSqliteRow = {
95
+ [column: string]: SqliteValue | undefined;
96
+ };
97
+ /**
98
+ * A value as received from the database.
99
+ */
100
+ export type DatabaseInputValue = SqliteValue | boolean | DatabaseInputValue[] | JsonContainer | {
101
+ [key: string]: DatabaseInputValue;
102
+ };
103
+ /**
104
+ * Database input row. Can contain nested arrays and objects.
105
+ */
106
+ export type DatabaseInputRow = {
107
+ [column: string]: DatabaseInputValue;
108
+ };
109
+ /**
110
+ * A set of known parameters that a query is evaluated on.
111
+ */
112
+ export type QueryParameters = {
113
+ [table: string]: SqliteRow;
114
+ };
115
+ /**
116
+ * A single set of parameters that would make a WHERE filter true.
117
+ *
118
+ * Each parameter is prefixed with a table name, e.g. 'bucket.param'.
119
+ *
120
+ * Data queries: this is converted into a bucket id, given named bucket parameters.
121
+ *
122
+ * Parameter queries: this is converted into a lookup array.
123
+ */
124
+ export type FilterParameters = {
125
+ [parameter: string]: SqliteJsonValue;
126
+ };
127
+ export interface InputParameter {
128
+ /**
129
+ * An unique identifier per parameter in a query.
130
+ *
131
+ * This is used to identify the same parameters used in a query multiple times.
132
+ *
133
+ * The value itself does not necessarily have any specific meaning.
134
+ */
135
+ key: string;
136
+ /**
137
+ * True if the parameter expands to an array. This means parametersToLookupValue() can
138
+ * return a JSON array. This is different from `unbounded` on the clause.
139
+ */
140
+ expands: boolean;
141
+ /**
142
+ * Given FilterParameters from a data row, return the associated value.
143
+ *
144
+ * Only relevant for parameter queries.
145
+ */
146
+ filteredRowToLookupValue(filterParameters: FilterParameters): SqliteJsonValue;
147
+ /**
148
+ * Given RequestParameters, return the associated value to lookup.
149
+ *
150
+ * Only relevant for parameter queries.
151
+ */
152
+ parametersToLookupValue(parameters: RequestParameters): SqliteValue;
153
+ }
154
+ export interface EvaluateRowOptions {
155
+ sourceTable: SourceTableInterface;
156
+ record: SqliteRow;
157
+ }
158
+ /**
159
+ * This is a clause that matches row and parameter values.
160
+ *
161
+ * Example:
162
+ * [WHERE] users.org_id = bucket.org_id
163
+ *
164
+ * For a given a row, this produces a set of parameters that would make the clause evaluate to true.
165
+ */
166
+ export interface ParameterMatchClause {
167
+ error: boolean;
168
+ /**
169
+ * The parameter fields that are used for this filter, for example:
170
+ * * ['bucket.region_id'] for a data query
171
+ * * ['token_parameters.user_id'] for a parameter query
172
+ *
173
+ * These parameters are always matched by this clause, and no additional parameters are matched.
174
+ */
175
+ inputParameters: InputParameter[];
176
+ /**
177
+ * True if the filter depends on an unbounded array column. This means filterRow can return
178
+ * multiple items.
179
+ *
180
+ * We restrict filters to only allow a single unbounded column for bucket parameters, otherwise the number of
181
+ * bucketParameter combinations could grow too much.
182
+ */
183
+ unbounded: boolean;
184
+ /**
185
+ * Given a data row, give a set of filter parameters that would make the filter be true.
186
+ *
187
+ * For StaticSqlParameterQuery, the tables are token_parameters and user_parameters.
188
+ * For others, it is the table of the data or parameter query.
189
+ *
190
+ * @param tables - {table => row}
191
+ * @return The filter parameters
192
+ */
193
+ filterRow(tables: QueryParameters): TrueIfParametersMatch;
194
+ /** request.user_id(), request.jwt(), token_parameters.* */
195
+ usesAuthenticatedRequestParameters: boolean;
196
+ /** request.parameters(), user_parameters.* */
197
+ usesUnauthenticatedRequestParameters: boolean;
198
+ }
199
+ /**
200
+ * This is a clause that operates on request or bucket parameters.
201
+ */
202
+ export interface ParameterValueClause {
203
+ /** request.user_id(), request.jwt(), token_parameters.* */
204
+ usesAuthenticatedRequestParameters: boolean;
205
+ /** request.parameters(), user_parameters.* */
206
+ usesUnauthenticatedRequestParameters: boolean;
207
+ /**
208
+ * An unique key for the clause.
209
+ *
210
+ * For bucket parameters, this is `bucket.${name}`.
211
+ * For expressions, the exact format is undefined.
212
+ */
213
+ key: string;
214
+ /**
215
+ * Given RequestParameters, return the associated value to lookup.
216
+ *
217
+ * Only relevant for parameter queries.
218
+ */
219
+ lookupParameterValue(parameters: RequestParameters): SqliteValue;
220
+ }
221
+ export interface QuerySchema {
222
+ getType(table: string, column: string): ExpressionType;
223
+ getColumns(table: string): ColumnDefinition[];
224
+ }
225
+ /**
226
+ * A clause that uses row values as input.
227
+ *
228
+ * For parameter queries, that is the parameter table being queried.
229
+ * For data queries, that is the data table being queried.
230
+ */
231
+ export interface RowValueClause {
232
+ evaluate(tables: QueryParameters): SqliteValue;
233
+ getType(schema: QuerySchema): ExpressionType;
234
+ }
235
+ /**
236
+ * Completely static value.
237
+ *
238
+ * Extends RowValueClause and ParameterValueClause to simplify code in some places.
239
+ */
240
+ export interface StaticValueClause extends RowValueClause, ParameterValueClause {
241
+ readonly value: SqliteValue;
242
+ }
243
+ export interface ClauseError {
244
+ error: true;
245
+ }
246
+ export type CompiledClause = RowValueClause | ParameterMatchClause | ParameterValueClause | ClauseError;
247
+ /**
248
+ * true if any of the filter parameter sets match
249
+ */
250
+ export type TrueIfParametersMatch = FilterParameters[];
251
+ export interface QueryBucketIdOptions {
252
+ getParameterSets: (lookups: SqliteJsonValue[][]) => Promise<SqliteJsonRow[]>;
253
+ parameters: RequestParameters;
254
+ }
255
+ export interface SourceSchemaTable {
256
+ table: string;
257
+ getType(column: string): ExpressionType | undefined;
258
+ getColumns(): ColumnDefinition[];
259
+ }
260
+ export interface SourceSchema {
261
+ getTables(sourceTable: TablePattern): SourceSchemaTable[];
262
+ }
package/dist/types.js ADDED
@@ -0,0 +1,28 @@
1
+ import { JSONBig } from '@powersync/service-jsonbig';
2
+ import { toSyncRulesParameters } from './utils.js';
3
+ export function isEvaluationError(e) {
4
+ return typeof e.error == 'string';
5
+ }
6
+ export function isEvaluatedRow(e) {
7
+ return typeof e.bucket == 'string';
8
+ }
9
+ export function isEvaluatedParameters(e) {
10
+ return Array.isArray(e.lookup);
11
+ }
12
+ export class RequestParameters {
13
+ constructor(tokenPayload, clientParameters) {
14
+ // This type is verified when we verify the token
15
+ const legacyParameters = tokenPayload.parameters;
16
+ const token_parameters = {
17
+ ...legacyParameters,
18
+ // sub takes presedence over any embedded parameters
19
+ user_id: tokenPayload.sub
20
+ };
21
+ this.token_parameters = toSyncRulesParameters(token_parameters);
22
+ this.user_id = tokenPayload.sub;
23
+ this.raw_token_payload = JSONBig.stringify(tokenPayload);
24
+ this.raw_user_parameters = JSONBig.stringify(clientParameters);
25
+ this.user_parameters = toSyncRulesParameters(clientParameters);
26
+ }
27
+ }
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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"}