@powersync/service-sync-rules 0.27.0 → 0.29.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/LICENSE +3 -3
- package/dist/BaseSqlDataQuery.d.ts +9 -1
- package/dist/BaseSqlDataQuery.js +44 -2
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +16 -0
- package/dist/BucketParameterQuerier.d.ts +19 -3
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +72 -0
- package/dist/BucketSource.js +6 -0
- package/dist/BucketSource.js.map +1 -0
- package/dist/ExpressionType.d.ts +1 -0
- package/dist/ExpressionType.js.map +1 -1
- package/dist/SourceTableInterface.d.ts +1 -1
- package/dist/SqlBucketDescriptor.d.ts +40 -8
- package/dist/SqlBucketDescriptor.js +78 -10
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +4 -3
- package/dist/SqlDataQuery.js +10 -30
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +4 -4
- package/dist/SqlParameterQuery.js +9 -4
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +55 -7
- package/dist/SqlSyncRules.js +126 -47
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSchema.js +2 -2
- package/dist/StaticSchema.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +2 -2
- package/dist/StaticSqlParameterQuery.js +3 -2
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TablePattern.js +2 -2
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +2 -2
- package/dist/TableValuedFunctionSqlParameterQuery.js +11 -10
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctions.d.ts +2 -2
- package/dist/TableValuedFunctions.js +38 -35
- package/dist/TableValuedFunctions.js.map +1 -1
- package/dist/compatibility.d.ts +39 -0
- package/dist/compatibility.js +54 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/events/SqlEventDescriptor.d.ts +3 -1
- package/dist/events/SqlEventDescriptor.js +5 -3
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +2 -1
- package/dist/events/SqlEventSourceQuery.js +3 -2
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +54 -1
- package/dist/json_schema.js.map +1 -1
- package/dist/request_functions.d.ts +24 -4
- package/dist/request_functions.js +68 -17
- package/dist/request_functions.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.js +2 -12
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/sql_filters.d.ts +25 -2
- package/dist/sql_filters.js +223 -119
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +13 -31
- package/dist/sql_functions.js +191 -114
- package/dist/sql_functions.js.map +1 -1
- package/dist/sql_support.d.ts +20 -0
- package/dist/sql_support.js +67 -14
- package/dist/sql_support.js.map +1 -1
- package/dist/streams/filter.d.ts +148 -0
- package/dist/streams/filter.js +426 -0
- package/dist/streams/filter.js.map +1 -0
- package/dist/streams/from_sql.d.ts +4 -0
- package/dist/streams/from_sql.js +375 -0
- package/dist/streams/from_sql.js.map +1 -0
- package/dist/streams/functions.d.ts +2 -0
- package/dist/streams/functions.js +38 -0
- package/dist/streams/functions.js.map +1 -0
- package/dist/streams/parameter.d.ts +67 -0
- package/dist/streams/parameter.js +2 -0
- package/dist/streams/parameter.js.map +1 -0
- package/dist/streams/stream.d.ts +40 -0
- package/dist/streams/stream.js +139 -0
- package/dist/streams/stream.js.map +1 -0
- package/dist/streams/utils.d.ts +1 -0
- package/dist/streams/utils.js +13 -0
- package/dist/streams/utils.js.map +1 -0
- package/dist/streams/variant.d.ts +122 -0
- package/dist/streams/variant.js +266 -0
- package/dist/streams/variant.js.map +1 -0
- package/dist/types/custom_sqlite_value.d.ts +38 -0
- package/dist/types/custom_sqlite_value.js +50 -0
- package/dist/types/custom_sqlite_value.js.map +1 -0
- package/dist/types/time.d.ts +33 -0
- package/dist/types/time.js +67 -0
- package/dist/types/time.js.map +1 -0
- package/dist/types.d.ts +53 -10
- package/dist/types.js +28 -2
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +9 -6
- package/dist/utils.js +42 -17
- package/dist/utils.js.map +1 -1
- package/package.json +4 -4
- package/schema/sync_rules.json +80 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/SqlEventSourceQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAA8C,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/SqlEventSourceQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './BucketDescription.js';
|
|
2
2
|
export * from './BucketParameterQuerier.js';
|
|
3
|
+
export * from './BucketSource.js';
|
|
4
|
+
export * from './compatibility.js';
|
|
3
5
|
export * from './errors.js';
|
|
4
6
|
export * from './events/SqlEventDescriptor.js';
|
|
5
7
|
export * from './events/SqlEventSourceQuery.js';
|
|
@@ -11,10 +13,15 @@ export * from './schema-generators/schema-generators.js';
|
|
|
11
13
|
export * from './SourceTableInterface.js';
|
|
12
14
|
export * from './sql_filters.js';
|
|
13
15
|
export * from './sql_functions.js';
|
|
16
|
+
export { SqlBucketDescriptor } from './SqlBucketDescriptor.js';
|
|
14
17
|
export * from './SqlDataQuery.js';
|
|
15
18
|
export * from './SqlParameterQuery.js';
|
|
16
19
|
export * from './SqlSyncRules.js';
|
|
17
20
|
export * from './StaticSchema.js';
|
|
21
|
+
export { SyncStream } from './streams/stream.js';
|
|
22
|
+
export { syncStreamFromSql } from './streams/from_sql.js';
|
|
18
23
|
export * from './TablePattern.js';
|
|
19
24
|
export * from './types.js';
|
|
25
|
+
export * from './types/custom_sqlite_value.js';
|
|
26
|
+
export * from './types/time.js';
|
|
20
27
|
export * from './utils.js';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './BucketDescription.js';
|
|
2
2
|
export * from './BucketParameterQuerier.js';
|
|
3
|
+
export * from './BucketSource.js';
|
|
4
|
+
export * from './compatibility.js';
|
|
3
5
|
export * from './errors.js';
|
|
4
6
|
export * from './events/SqlEventDescriptor.js';
|
|
5
7
|
export * from './events/SqlEventSourceQuery.js';
|
|
@@ -11,11 +13,16 @@ export * from './schema-generators/schema-generators.js';
|
|
|
11
13
|
export * from './SourceTableInterface.js';
|
|
12
14
|
export * from './sql_filters.js';
|
|
13
15
|
export * from './sql_functions.js';
|
|
16
|
+
export { SqlBucketDescriptor } from './SqlBucketDescriptor.js';
|
|
14
17
|
export * from './SqlDataQuery.js';
|
|
15
18
|
export * from './SqlParameterQuery.js';
|
|
16
19
|
export * from './SqlSyncRules.js';
|
|
17
20
|
export * from './StaticSchema.js';
|
|
21
|
+
export { SyncStream } from './streams/stream.js';
|
|
22
|
+
export { syncStreamFromSql } from './streams/from_sql.js';
|
|
18
23
|
export * from './TablePattern.js';
|
|
19
24
|
export * from './types.js';
|
|
25
|
+
export * from './types/custom_sqlite_value.js';
|
|
26
|
+
export * from './types/time.js';
|
|
20
27
|
export * from './utils.js';
|
|
21
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
package/dist/json_schema.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ajvModule from 'ajv';
|
|
2
|
+
import { CompatibilityEdition, CompatibilityOption } from './compatibility.js';
|
|
2
3
|
// Hack to make this work both in NodeJS and a browser
|
|
3
4
|
const Ajv = ajvModule.default ?? ajvModule;
|
|
4
5
|
const ajv = new Ajv({ allErrors: true, verbose: true });
|
|
@@ -48,6 +49,36 @@ export const syncRulesSchema = {
|
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
},
|
|
52
|
+
streams: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
description: 'List of stream definitions',
|
|
55
|
+
examples: [{ user_details: { query: 'select * from users where id = auth.user_id()' } }],
|
|
56
|
+
patternProperties: {
|
|
57
|
+
'.*': {
|
|
58
|
+
type: 'object',
|
|
59
|
+
required: ['query'],
|
|
60
|
+
examples: [{ query: ['select * from mytable'] }],
|
|
61
|
+
properties: {
|
|
62
|
+
accept_potentially_dangerous_queries: {
|
|
63
|
+
description: 'If true, disables warnings on potentially dangerous queries',
|
|
64
|
+
type: 'boolean'
|
|
65
|
+
},
|
|
66
|
+
auto_subscribe: {
|
|
67
|
+
description: 'Whether clients will subscribe to this stream by default.',
|
|
68
|
+
type: 'boolean'
|
|
69
|
+
},
|
|
70
|
+
priority: {
|
|
71
|
+
description: 'Priority for the bucket (lower values indicate higher priority).',
|
|
72
|
+
type: 'integer'
|
|
73
|
+
},
|
|
74
|
+
query: {
|
|
75
|
+
description: 'The SQL query defining content to sync in this stream.',
|
|
76
|
+
type: 'string'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
51
82
|
event_definitions: {
|
|
52
83
|
type: 'object',
|
|
53
84
|
description: 'Record of sync replication event definitions',
|
|
@@ -76,9 +107,31 @@ export const syncRulesSchema = {
|
|
|
76
107
|
}
|
|
77
108
|
}
|
|
78
109
|
}
|
|
110
|
+
},
|
|
111
|
+
config: {
|
|
112
|
+
type: 'object',
|
|
113
|
+
description: 'Config declaring the compatibility level used to parse these definitions.',
|
|
114
|
+
properties: {
|
|
115
|
+
edition: {
|
|
116
|
+
type: 'integer',
|
|
117
|
+
default: CompatibilityEdition.LEGACY,
|
|
118
|
+
minimum: CompatibilityEdition.LEGACY,
|
|
119
|
+
exclusiveMaximum: CompatibilityEdition.SYNC_STREAMS + 1
|
|
120
|
+
},
|
|
121
|
+
...Object.fromEntries(Object.entries(CompatibilityOption.byName).map((e) => {
|
|
122
|
+
return [
|
|
123
|
+
e[0],
|
|
124
|
+
{
|
|
125
|
+
type: 'boolean',
|
|
126
|
+
description: `Enabled by default starting from edition ${e[1].fixedIn}: ${e[1].description}`
|
|
127
|
+
}
|
|
128
|
+
];
|
|
129
|
+
}))
|
|
130
|
+
},
|
|
131
|
+
additionalProperties: false
|
|
79
132
|
}
|
|
80
133
|
},
|
|
81
|
-
required: ['bucket_definitions'],
|
|
134
|
+
anyOf: [{ required: ['bucket_definitions'] }, { required: ['streams'] }],
|
|
82
135
|
additionalProperties: false
|
|
83
136
|
};
|
|
84
137
|
export const validateSyncRulesSchema = ajv.compile(syncRulesSchema);
|
package/dist/json_schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_schema.js","sourceRoot":"","sources":["../src/json_schema.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,KAAK,CAAC;AAC5B,sDAAsD;AACtD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC;AAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,CAAC;YACzD,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;oBAClB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC/C,UAAU,EAAE;wBACV,oCAAoC,EAAE;4BACpC,WAAW,EAAE,6DAA6D;4BAC1E,IAAI,EAAE,SAAS;yBAChB;wBACD,QAAQ,EAAE;4BACR,WAAW,EAAE,kEAAkE;4BAC/E,IAAI,EAAE,SAAS;yBAChB;wBACD,UAAU,EAAE;4BACV,WAAW,EAAE,sBAAsB;4BACnC,KAAK,EAAE;gCACL,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;gCAClD;oCACE,IAAI,EAAE,OAAO;oCACb,WAAW,EAAE,mBAAmB;oCAChC,KAAK,EAAE;wCACL,IAAI,EAAE,QAAQ;qCACf;iCACF;6BACF;yBACF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,cAAc;4BAC3B,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;6BACf;yBACF;qBACF;oBACD,oBAAoB,EAAE,KAAK;iBAC5B;aACF;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE;gBACR;oBACE,iBAAiB,EAAE;wBACjB,QAAQ,EAAE,CAAC,wDAAwD,CAAC;qBACrE;iBACF;aACF;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,QAAQ,EAAE,CAAC,UAAU,CAAC;oBACtB,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,wDAAwD,CAAC,EAAE,CAAC;oBACpF,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,WAAW,EAAE,wEAAwE;4BACrF,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;6BACf;yBACF;wBACD,oBAAoB,EAAE,KAAK;wBAC3B,WAAW,EAAE,IAAI;qBAClB;iBACF;aACF;SACF;KACF;IACD,QAAQ,EAAE,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"json_schema.js","sourceRoot":"","sources":["../src/json_schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import { ExpressionType } from './ExpressionType.js';
|
|
|
2
2
|
import { ParameterValueSet, SqliteValue } from './types.js';
|
|
3
3
|
export interface SqlParameterFunction {
|
|
4
4
|
readonly debugName: string;
|
|
5
|
-
call: (parameters: ParameterValueSet) => SqliteValue;
|
|
5
|
+
call: (parameters: ParameterValueSet, ...args: SqliteValue[]) => SqliteValue;
|
|
6
6
|
getReturnType(): ExpressionType;
|
|
7
|
+
parameterCount: number;
|
|
7
8
|
/** request.user_id(), request.jwt(), token_parameters.* */
|
|
8
9
|
usesAuthenticatedRequestParameters: boolean;
|
|
9
10
|
/** request.parameters(), user_parameters.* */
|
|
@@ -11,9 +12,28 @@ export interface SqlParameterFunction {
|
|
|
11
12
|
detail: string;
|
|
12
13
|
documentation: string;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Defines a `parameters` function and a `parameter` function.
|
|
17
|
+
*
|
|
18
|
+
* The `parameters` function extracts a JSON object from the {@link ParameterValueSet} while the `parameter` function
|
|
19
|
+
* takes a second argument (a JSON path or a single key) to extract.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parameterFunctions(options: {
|
|
22
|
+
schema: string;
|
|
23
|
+
extractJsonString: (v: ParameterValueSet) => string;
|
|
24
|
+
extractJsonParsed: (v: ParameterValueSet) => any;
|
|
25
|
+
sourceDescription: string;
|
|
26
|
+
sourceDocumentation: string;
|
|
27
|
+
usesAuthenticatedRequestParameters: boolean;
|
|
28
|
+
usesUnauthenticatedRequestParameters: boolean;
|
|
29
|
+
}): {
|
|
30
|
+
parameters: SqlParameterFunction;
|
|
31
|
+
parameter: SqlParameterFunction;
|
|
32
|
+
};
|
|
33
|
+
export declare function globalRequestParameterFunctions(schema: string): {
|
|
15
34
|
parameters: SqlParameterFunction;
|
|
16
|
-
|
|
17
|
-
user_id: SqlParameterFunction;
|
|
35
|
+
parameter: SqlParameterFunction;
|
|
18
36
|
};
|
|
37
|
+
export declare const request_jwt: SqlParameterFunction;
|
|
38
|
+
export declare const request_user_id: SqlParameterFunction;
|
|
19
39
|
export declare const REQUEST_FUNCTIONS: Record<string, SqlParameterFunction>;
|
|
@@ -1,19 +1,69 @@
|
|
|
1
1
|
import { ExpressionType } from './ExpressionType.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
import { CompatibilityContext, CompatibilityEdition } from './compatibility.js';
|
|
3
|
+
import { generateSqlFunctions } from './sql_functions.js';
|
|
4
|
+
const jsonExtractFromRecord = generateSqlFunctions(new CompatibilityContext(CompatibilityEdition.SYNC_STREAMS)).jsonExtractFromRecord;
|
|
5
|
+
/**
|
|
6
|
+
* Defines a `parameters` function and a `parameter` function.
|
|
7
|
+
*
|
|
8
|
+
* The `parameters` function extracts a JSON object from the {@link ParameterValueSet} while the `parameter` function
|
|
9
|
+
* takes a second argument (a JSON path or a single key) to extract.
|
|
10
|
+
*/
|
|
11
|
+
export function parameterFunctions(options) {
|
|
12
|
+
const allParameters = {
|
|
13
|
+
debugName: `${options.schema}.parameters`,
|
|
14
|
+
parameterCount: 0,
|
|
15
|
+
call(parameters) {
|
|
16
|
+
return options.extractJsonString(parameters);
|
|
17
|
+
},
|
|
18
|
+
getReturnType() {
|
|
19
|
+
return ExpressionType.TEXT;
|
|
20
|
+
},
|
|
21
|
+
detail: options.sourceDescription,
|
|
22
|
+
documentation: `Returns ${options.sourceDocumentation}`,
|
|
23
|
+
usesAuthenticatedRequestParameters: options.usesAuthenticatedRequestParameters,
|
|
24
|
+
usesUnauthenticatedRequestParameters: options.usesUnauthenticatedRequestParameters
|
|
25
|
+
};
|
|
26
|
+
const extractParameter = {
|
|
27
|
+
debugName: `${options.schema}.parameter`,
|
|
28
|
+
parameterCount: 1,
|
|
29
|
+
call(parameters, path) {
|
|
30
|
+
const parsed = options.extractJsonParsed(parameters);
|
|
31
|
+
// jsonExtractFromRecord uses the correct behavior of only splitting the path if it starts with $.
|
|
32
|
+
// This particular JSON extract function always had that behavior, so we don't need to take backwards
|
|
33
|
+
// compatibility into account.
|
|
34
|
+
if (typeof path == 'string') {
|
|
35
|
+
return jsonExtractFromRecord(parsed, path, '->>');
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
},
|
|
39
|
+
getReturnType() {
|
|
40
|
+
return ExpressionType.ANY;
|
|
41
|
+
},
|
|
42
|
+
detail: `Extract value from ${options.sourceDescription}`,
|
|
43
|
+
documentation: `Returns an extracted value (via the key as the second argument) from ${options.sourceDocumentation}`,
|
|
44
|
+
usesAuthenticatedRequestParameters: options.usesAuthenticatedRequestParameters,
|
|
45
|
+
usesUnauthenticatedRequestParameters: options.usesUnauthenticatedRequestParameters
|
|
46
|
+
};
|
|
47
|
+
return { parameters: allParameters, parameter: extractParameter };
|
|
48
|
+
}
|
|
49
|
+
export function globalRequestParameterFunctions(schema) {
|
|
50
|
+
return parameterFunctions({
|
|
51
|
+
schema,
|
|
52
|
+
extractJsonString: function (v) {
|
|
53
|
+
return v.rawUserParameters;
|
|
54
|
+
},
|
|
55
|
+
extractJsonParsed: function (v) {
|
|
56
|
+
return v.userParameters;
|
|
57
|
+
},
|
|
58
|
+
sourceDescription: 'Unauthenticated request parameters as JSON',
|
|
59
|
+
sourceDocumentation: 'parameters passed by the client as a JSON string. These parameters are not authenticated - any value can be passed in by the client.',
|
|
60
|
+
usesAuthenticatedRequestParameters: false,
|
|
61
|
+
usesUnauthenticatedRequestParameters: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export const request_jwt = {
|
|
16
65
|
debugName: 'request.jwt',
|
|
66
|
+
parameterCount: 0,
|
|
17
67
|
call(parameters) {
|
|
18
68
|
return parameters.rawTokenPayload;
|
|
19
69
|
},
|
|
@@ -25,8 +75,9 @@ const request_jwt = {
|
|
|
25
75
|
usesAuthenticatedRequestParameters: true,
|
|
26
76
|
usesUnauthenticatedRequestParameters: false
|
|
27
77
|
};
|
|
28
|
-
const request_user_id = {
|
|
78
|
+
export const request_user_id = {
|
|
29
79
|
debugName: 'request.user_id',
|
|
80
|
+
parameterCount: 0,
|
|
30
81
|
call(parameters) {
|
|
31
82
|
return parameters.userId;
|
|
32
83
|
},
|
|
@@ -38,8 +89,8 @@ const request_user_id = {
|
|
|
38
89
|
usesAuthenticatedRequestParameters: true,
|
|
39
90
|
usesUnauthenticatedRequestParameters: false
|
|
40
91
|
};
|
|
41
|
-
|
|
42
|
-
|
|
92
|
+
const REQUEST_FUNCTIONS_NAMED = {
|
|
93
|
+
...globalRequestParameterFunctions('request'),
|
|
43
94
|
jwt: request_jwt,
|
|
44
95
|
user_id: request_user_id
|
|
45
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request_functions.js","sourceRoot":"","sources":["../src/request_functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"request_functions.js","sourceRoot":"","sources":["../src/request_functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,18 +2,8 @@ import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
|
|
|
2
2
|
export class SchemaGenerator {
|
|
3
3
|
getAllTables(source, schema) {
|
|
4
4
|
let tables = {};
|
|
5
|
-
for (let descriptor of source.
|
|
6
|
-
|
|
7
|
-
const outTables = query.getColumnOutputs(schema);
|
|
8
|
-
for (let table of outTables) {
|
|
9
|
-
tables[table.name] ??= {};
|
|
10
|
-
for (let column of table.columns) {
|
|
11
|
-
if (column.name != 'id') {
|
|
12
|
-
tables[table.name][column.name] ??= column;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
5
|
+
for (let descriptor of source.bucketSources) {
|
|
6
|
+
descriptor.resolveResultSets(schema, tables);
|
|
17
7
|
}
|
|
18
8
|
return Object.entries(tables).map(([name, columns]) => {
|
|
19
9
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQ5F,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQ5F,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC5C,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IASD;;;OAGG;IACH,UAAU,CAAC,GAAqB;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
package/dist/sql_filters.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ import { Expr, ExprRef, Name, NodeLocation, QName, QNameAliased, SelectedColumn
|
|
|
2
2
|
import { nil } from 'pgsql-ast-parser/src/utils.js';
|
|
3
3
|
import { BucketPriority } from './BucketDescription.js';
|
|
4
4
|
import { SqlRuleError } from './errors.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { SqlParameterFunction } from './request_functions.js';
|
|
6
|
+
import { SqlFunction, generateSqlFunctions } from './sql_functions.js';
|
|
7
|
+
import { ClauseError, CompiledClause, InputParameter, ParameterMatchClause, ParameterValueClause, QueryParameters, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
|
|
8
|
+
import { CompatibilityContext } from './compatibility.js';
|
|
7
9
|
export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
|
|
8
10
|
export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
|
|
9
11
|
export interface SqlToolsOptions {
|
|
@@ -41,10 +43,18 @@ export interface SqlToolsOptions {
|
|
|
41
43
|
* true if expressions on parameters are supported, e.g. upper(token_parameters.user_id)
|
|
42
44
|
*/
|
|
43
45
|
supportsParameterExpressions?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* For each schema, all available parameter functions.
|
|
48
|
+
*/
|
|
49
|
+
parameterFunctions?: Record<string, Record<string, SqlParameterFunction>>;
|
|
44
50
|
/**
|
|
45
51
|
* Schema for validations.
|
|
46
52
|
*/
|
|
47
53
|
schema?: QuerySchema;
|
|
54
|
+
/**
|
|
55
|
+
* Context controling how functions should behave if we've made backwards-incompatible change to them.
|
|
56
|
+
*/
|
|
57
|
+
compatibilityContext: CompatibilityContext;
|
|
48
58
|
}
|
|
49
59
|
export declare class SqlTools {
|
|
50
60
|
readonly defaultTable?: string;
|
|
@@ -58,6 +68,9 @@ export declare class SqlTools {
|
|
|
58
68
|
readonly errors: SqlRuleError[];
|
|
59
69
|
readonly supportsExpandingParameters: boolean;
|
|
60
70
|
readonly supportsParameterExpressions: boolean;
|
|
71
|
+
readonly parameterFunctions: Record<string, Record<string, SqlParameterFunction>>;
|
|
72
|
+
readonly compatibilityContext: CompatibilityContext;
|
|
73
|
+
readonly functions: ReturnType<typeof generateSqlFunctions>;
|
|
61
74
|
schema?: QuerySchema;
|
|
62
75
|
constructor(options: SqlToolsOptions);
|
|
63
76
|
error(message: string, expr: NodeLocation | Expr | undefined): ClauseError;
|
|
@@ -75,6 +88,16 @@ export declare class SqlTools {
|
|
|
75
88
|
* Given an expression, return a compiled clause.
|
|
76
89
|
*/
|
|
77
90
|
compileClause(expr: Expr | nil): CompiledClause;
|
|
91
|
+
compileInClause(left: Expr, leftFilter: CompiledClause, right: Expr, rightFilter: CompiledClause): CompiledClause;
|
|
92
|
+
compileOverlapClause(left: Expr, leftFilter: CompiledClause, right: Expr, rightFilter: CompiledClause): CompiledClause;
|
|
93
|
+
parameterMatchClause(staticFilter: RowValueClause, otherFilter: ParameterValueClause): {
|
|
94
|
+
error: false;
|
|
95
|
+
inputParameters: InputParameter[];
|
|
96
|
+
unbounded: false;
|
|
97
|
+
filterRow(tables: QueryParameters): TrueIfParametersMatch;
|
|
98
|
+
usesAuthenticatedRequestParameters: boolean;
|
|
99
|
+
usesUnauthenticatedRequestParameters: boolean;
|
|
100
|
+
};
|
|
78
101
|
/**
|
|
79
102
|
* "some_column" => "some_column"
|
|
80
103
|
* "table.some_column" => "some_column".
|