@powersync/service-sync-rules 0.17.10 → 0.18.1
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 +126 -0
- package/dist/ExpressionType.d.ts +1 -0
- package/dist/ExpressionType.js +3 -0
- package/dist/ExpressionType.js.map +1 -1
- package/dist/SqlBucketDescriptor.d.ts +3 -3
- package/dist/SqlBucketDescriptor.js +2 -2
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.js +28 -7
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +54 -12
- package/dist/SqlParameterQuery.js +106 -33
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +2 -2
- package/dist/SqlSyncRules.js +21 -4
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +9 -6
- package/dist/StaticSqlParameterQuery.js +42 -12
- package/dist/StaticSqlParameterQuery.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 +4 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/request_functions.d.ts +19 -0
- package/dist/request_functions.js +47 -0
- package/dist/request_functions.js.map +1 -0
- package/dist/sql_filters.d.ts +38 -4
- package/dist/sql_filters.js +270 -177
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +30 -19
- package/dist/sql_functions.js +113 -17
- package/dist/sql_functions.js.map +1 -1
- package/dist/sql_support.d.ts +6 -3
- package/dist/sql_support.js +72 -35
- package/dist/sql_support.js.map +1 -1
- package/dist/types.d.ts +100 -12
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -2
- package/dist/utils.js +0 -6
- package/dist/utils.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ExpressionType } from './ExpressionType.js';
|
|
2
|
+
import { RequestParameters, SqliteValue } from './types.js';
|
|
3
|
+
export interface SqlParameterFunction {
|
|
4
|
+
readonly debugName: string;
|
|
5
|
+
call: (parameters: RequestParameters) => SqliteValue;
|
|
6
|
+
getReturnType(): ExpressionType;
|
|
7
|
+
/** request.user_id(), request.jwt(), token_parameters.* */
|
|
8
|
+
usesAuthenticatedRequestParameters: boolean;
|
|
9
|
+
/** request.parameters(), user_parameters.* */
|
|
10
|
+
usesUnauthenticatedRequestParameters: boolean;
|
|
11
|
+
detail: string;
|
|
12
|
+
documentation: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const REQUEST_FUNCTIONS_NAMED: {
|
|
15
|
+
parameters: SqlParameterFunction;
|
|
16
|
+
jwt: SqlParameterFunction;
|
|
17
|
+
user_id: SqlParameterFunction;
|
|
18
|
+
};
|
|
19
|
+
export declare const REQUEST_FUNCTIONS: Record<string, SqlParameterFunction>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ExpressionType } from './ExpressionType.js';
|
|
2
|
+
const request_parameters = {
|
|
3
|
+
debugName: 'request.parameters',
|
|
4
|
+
call(parameters) {
|
|
5
|
+
return parameters.raw_user_parameters;
|
|
6
|
+
},
|
|
7
|
+
getReturnType() {
|
|
8
|
+
return ExpressionType.TEXT;
|
|
9
|
+
},
|
|
10
|
+
detail: 'Unauthenticated request parameters as JSON',
|
|
11
|
+
documentation: 'Returns parameters passed by the client as a JSON string. These parameters are not authenticated - any value can be passed in by the client.',
|
|
12
|
+
usesAuthenticatedRequestParameters: false,
|
|
13
|
+
usesUnauthenticatedRequestParameters: true
|
|
14
|
+
};
|
|
15
|
+
const request_jwt = {
|
|
16
|
+
debugName: 'request.jwt',
|
|
17
|
+
call(parameters) {
|
|
18
|
+
return parameters.raw_token_payload;
|
|
19
|
+
},
|
|
20
|
+
getReturnType() {
|
|
21
|
+
return ExpressionType.TEXT;
|
|
22
|
+
},
|
|
23
|
+
detail: 'JWT payload as JSON',
|
|
24
|
+
documentation: 'The JWT payload as a JSON string. This is always validated against trusted keys.',
|
|
25
|
+
usesAuthenticatedRequestParameters: true,
|
|
26
|
+
usesUnauthenticatedRequestParameters: false
|
|
27
|
+
};
|
|
28
|
+
const request_user_id = {
|
|
29
|
+
debugName: 'request.user_id',
|
|
30
|
+
call(parameters) {
|
|
31
|
+
return parameters.user_id;
|
|
32
|
+
},
|
|
33
|
+
getReturnType() {
|
|
34
|
+
return ExpressionType.TEXT;
|
|
35
|
+
},
|
|
36
|
+
detail: 'Authenticated user id',
|
|
37
|
+
documentation: "The id of the authenticated user.\nSame as `request.jwt() ->> 'sub'`.",
|
|
38
|
+
usesAuthenticatedRequestParameters: true,
|
|
39
|
+
usesUnauthenticatedRequestParameters: false
|
|
40
|
+
};
|
|
41
|
+
export const REQUEST_FUNCTIONS_NAMED = {
|
|
42
|
+
parameters: request_parameters,
|
|
43
|
+
jwt: request_jwt,
|
|
44
|
+
user_id: request_user_id
|
|
45
|
+
};
|
|
46
|
+
export const REQUEST_FUNCTIONS = REQUEST_FUNCTIONS_NAMED;
|
|
47
|
+
//# sourceMappingURL=request_functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request_functions.js","sourceRoot":"","sources":["../src/request_functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,MAAM,kBAAkB,GAAyB;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,IAAI,CAAC,UAA6B;QAChC,OAAO,UAAU,CAAC,mBAAmB,CAAC;IACxC,CAAC;IACD,aAAa;QACX,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,4CAA4C;IACpD,aAAa,EACX,8IAA8I;IAChJ,kCAAkC,EAAE,KAAK;IACzC,oCAAoC,EAAE,IAAI;CAC3C,CAAC;AAEF,MAAM,WAAW,GAAyB;IACxC,SAAS,EAAE,aAAa;IACxB,IAAI,CAAC,UAA6B;QAChC,OAAO,UAAU,CAAC,iBAAiB,CAAC;IACtC,CAAC;IACD,aAAa;QACX,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,qBAAqB;IAC7B,aAAa,EAAE,kFAAkF;IACjG,kCAAkC,EAAE,IAAI;IACxC,oCAAoC,EAAE,KAAK;CAC5C,CAAC;AAEF,MAAM,eAAe,GAAyB;IAC5C,SAAS,EAAE,iBAAiB;IAC5B,IAAI,CAAC,UAA6B;QAChC,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;IACD,aAAa;QACX,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,uBAAuB;IAC/B,aAAa,EAAE,uEAAuE;IACtF,kCAAkC,EAAE,IAAI;IACxC,oCAAoC,EAAE,KAAK;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,UAAU,EAAE,kBAAkB;IAC9B,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAyC,uBAAuB,CAAC"}
|
package/dist/sql_filters.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Expr, ExprRef, NodeLocation, SelectedColumn } from 'pgsql-ast-parser';
|
|
2
|
-
import { SqlRuleError } from './errors.js';
|
|
3
|
-
import { ClauseError, CompiledClause, ParameterMatchClause, QuerySchema, StaticRowValueClause, TrueIfParametersMatch } from './types.js';
|
|
4
2
|
import { nil } from 'pgsql-ast-parser/src/utils.js';
|
|
3
|
+
import { SqlRuleError } from './errors.js';
|
|
4
|
+
import { SqlFunction } from './sql_functions.js';
|
|
5
|
+
import { ClauseError, CompiledClause, ParameterMatchClause, ParameterValueClause, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
|
|
5
6
|
export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
|
|
6
7
|
export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
|
|
7
8
|
export interface SqlToolsOptions {
|
|
@@ -35,15 +36,27 @@ export interface SqlToolsOptions {
|
|
|
35
36
|
* Only one parameter may be expanded.
|
|
36
37
|
*/
|
|
37
38
|
supports_expanding_parameters?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* true if expressions on parameters are supported, e.g. upper(token_parameters.user_id)
|
|
41
|
+
*/
|
|
42
|
+
supports_parameter_expressions?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Schema for validations.
|
|
45
|
+
*/
|
|
38
46
|
schema?: QuerySchema;
|
|
39
47
|
}
|
|
40
48
|
export declare class SqlTools {
|
|
41
49
|
default_table?: string;
|
|
42
50
|
value_tables: string[];
|
|
51
|
+
/**
|
|
52
|
+
* ['bucket'] for data queries
|
|
53
|
+
* ['token_parameters', 'user_parameters'] for parameter queries
|
|
54
|
+
*/
|
|
43
55
|
parameter_tables: string[];
|
|
44
56
|
sql: string;
|
|
45
57
|
errors: SqlRuleError[];
|
|
46
58
|
supports_expanding_parameters: boolean;
|
|
59
|
+
supports_parameter_expressions: boolean;
|
|
47
60
|
schema?: QuerySchema;
|
|
48
61
|
constructor(options: SqlToolsOptions);
|
|
49
62
|
error(message: string, expr: NodeLocation | Expr | undefined): ClauseError;
|
|
@@ -55,7 +68,8 @@ export declare class SqlTools {
|
|
|
55
68
|
* would make the expression true for the row.
|
|
56
69
|
*/
|
|
57
70
|
compileWhereClause(where: Expr | nil): ParameterMatchClause;
|
|
58
|
-
|
|
71
|
+
compileRowValueExtractor(expr: Expr | nil): RowValueClause | ClauseError;
|
|
72
|
+
compileParameterValueExtractor(expr: Expr | nil): ParameterValueClause | StaticValueClause | ClauseError;
|
|
59
73
|
/**
|
|
60
74
|
* Given an expression, return a compiled clause.
|
|
61
75
|
*/
|
|
@@ -80,7 +94,7 @@ export declare class SqlTools {
|
|
|
80
94
|
*/
|
|
81
95
|
isTableRef(expr: Expr): expr is ExprRef;
|
|
82
96
|
private checkRef;
|
|
83
|
-
|
|
97
|
+
getParameterRefClause(expr: ExprRef): ParameterValueClause;
|
|
84
98
|
refHasSchema(ref: ExprRef): boolean;
|
|
85
99
|
/**
|
|
86
100
|
* Get the table name from an expression.
|
|
@@ -88,4 +102,24 @@ export declare class SqlTools {
|
|
|
88
102
|
* Only "value" tables are supported here, not parameter values.
|
|
89
103
|
*/
|
|
90
104
|
getTableName(ref: ExprRef): string;
|
|
105
|
+
/**
|
|
106
|
+
* Given a function, compile a clause with the function over compiled arguments.
|
|
107
|
+
*
|
|
108
|
+
* For functions with multiple arguments, the following combinations are supported:
|
|
109
|
+
* fn(StaticValueClause, StaticValueClause) => StaticValueClause
|
|
110
|
+
* fn(ParameterValueClause, ParameterValueClause) => ParameterValueClause
|
|
111
|
+
* fn(RowValueClause, RowValueClause) => RowValueClause
|
|
112
|
+
* fn(ParameterValueClause, StaticValueClause) => ParameterValueClause
|
|
113
|
+
* fn(RowValueClause, StaticValueClause) => RowValueClause
|
|
114
|
+
*
|
|
115
|
+
* This is not supported, and will likely never be supported:
|
|
116
|
+
* fn(ParameterValueClause, RowValueClause) => error
|
|
117
|
+
*
|
|
118
|
+
* @param fnImpl The function or operator implementation
|
|
119
|
+
* @param argClauses The compiled argument clauses
|
|
120
|
+
* @param debugArgExpressions The original parsed expressions, for debug info only
|
|
121
|
+
* @returns a compiled function clause
|
|
122
|
+
*/
|
|
123
|
+
composeFunction(fnImpl: SqlFunction, argClauses: CompiledClause[], debugArgExpressions: Expr[]): CompiledClause;
|
|
124
|
+
parameterFunction(): void;
|
|
91
125
|
}
|