prostgles-types 4.0.303 → 4.0.304
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/filters.d.ts +5 -5
- package/dist/filters.d.ts.map +1 -1
- package/dist/filters.js +13 -2
- package/dist/filters.js.map +1 -1
- package/lib/filters.ts +73 -28
- package/package.json +1 -1
package/dist/filters.d.ts
CHANGED
|
@@ -178,11 +178,11 @@ export type NormalFilter<T> = {
|
|
|
178
178
|
export type FilterForObject<T extends AnyObject = AnyObject> = NormalFilter<T>;
|
|
179
179
|
export type ExistsFilter<S = void> = Partial<{
|
|
180
180
|
[key in EXISTS_KEY]: S extends DBSchema ? ExactlyOne<{
|
|
181
|
-
[
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
181
|
+
[TableName in KeyofString<S>]: FullFilter<S[TableName]["columns"], S>;
|
|
182
|
+
}> | (key extends "$existsJoined" | "$notExistsJoined" ? {
|
|
183
|
+
path: Exclude<RawJoinPath, string>;
|
|
184
|
+
filter: FullFilter<AnyObject, S>;
|
|
185
|
+
} : never) : any;
|
|
186
186
|
}>;
|
|
187
187
|
/**
|
|
188
188
|
* Filter that relates to a single column
|
package/dist/filters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../lib/filters.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../lib/filters.ts"],"names":[],"mappings":"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"}
|
package/dist/filters.js
CHANGED
|
@@ -84,7 +84,13 @@ exports.JsonbOperands = {
|
|
|
84
84
|
};
|
|
85
85
|
exports.JsonbFilterKeys = (0, util_1.getKeys)(exports.JsonbOperands);
|
|
86
86
|
exports.TextFilterKeys = ["$ilike", "$like", "$nilike", "$nlike"];
|
|
87
|
-
exports.TextFilterFTSKeys = [
|
|
87
|
+
exports.TextFilterFTSKeys = [
|
|
88
|
+
"@@",
|
|
89
|
+
"@>",
|
|
90
|
+
"<@",
|
|
91
|
+
"$contains",
|
|
92
|
+
"$containedBy",
|
|
93
|
+
];
|
|
88
94
|
exports.TextFilter_FullTextSearchFilterKeys = [
|
|
89
95
|
"to_tsquery",
|
|
90
96
|
"plainto_tsquery",
|
|
@@ -130,7 +136,12 @@ exports.GeomFilter_Funcs = [
|
|
|
130
136
|
"ST_MakePolygon",
|
|
131
137
|
"st_makepolygon",
|
|
132
138
|
];
|
|
133
|
-
exports.EXISTS_KEYS = [
|
|
139
|
+
exports.EXISTS_KEYS = [
|
|
140
|
+
"$exists",
|
|
141
|
+
"$notExists",
|
|
142
|
+
"$existsJoined",
|
|
143
|
+
"$notExistsJoined",
|
|
144
|
+
];
|
|
134
145
|
exports.ComplexFilterComparisonKeys = [
|
|
135
146
|
...exports.TextFilterKeys,
|
|
136
147
|
...exports.JsonbFilterKeys,
|
package/dist/filters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../lib/filters.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../lib/filters.ts"],"names":[],"mappings":"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"}
|
package/lib/filters.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DBSchema,
|
|
3
|
+
RawJoinPath,
|
|
4
|
+
type AllowedTSType,
|
|
5
|
+
type CastFromTSToPG,
|
|
6
|
+
} from ".";
|
|
2
7
|
import { ExactlyOne, getKeys } from "./util";
|
|
3
8
|
|
|
4
9
|
export const CompareFilterKeys = [
|
|
@@ -38,7 +43,8 @@ export const JsonbOperands = {
|
|
|
38
43
|
"?": {
|
|
39
44
|
Operator: "?",
|
|
40
45
|
"Right Operand Type": "text",
|
|
41
|
-
Description:
|
|
46
|
+
Description:
|
|
47
|
+
"Does the string exist as a top-level key within the JSON value?",
|
|
42
48
|
Example: "'{\"a\":1, \"b\":2}'::jsonb ? 'b'",
|
|
43
49
|
},
|
|
44
50
|
"?|": {
|
|
@@ -92,7 +98,13 @@ export const JsonbFilterKeys = getKeys(JsonbOperands);
|
|
|
92
98
|
|
|
93
99
|
export const TextFilterKeys = ["$ilike", "$like", "$nilike", "$nlike"] as const;
|
|
94
100
|
|
|
95
|
-
export const TextFilterFTSKeys = [
|
|
101
|
+
export const TextFilterFTSKeys = [
|
|
102
|
+
"@@",
|
|
103
|
+
"@>",
|
|
104
|
+
"<@",
|
|
105
|
+
"$contains",
|
|
106
|
+
"$containedBy",
|
|
107
|
+
] as const;
|
|
96
108
|
|
|
97
109
|
export const TextFilter_FullTextSearchFilterKeys = [
|
|
98
110
|
"to_tsquery",
|
|
@@ -186,7 +198,12 @@ export const GeomFilter_Funcs = [
|
|
|
186
198
|
|
|
187
199
|
export type AnyObject = Record<string, any>;
|
|
188
200
|
|
|
189
|
-
export const EXISTS_KEYS = [
|
|
201
|
+
export const EXISTS_KEYS = [
|
|
202
|
+
"$exists",
|
|
203
|
+
"$notExists",
|
|
204
|
+
"$existsJoined",
|
|
205
|
+
"$notExistsJoined",
|
|
206
|
+
] as const;
|
|
190
207
|
export type EXISTS_KEY = (typeof EXISTS_KEYS)[number];
|
|
191
208
|
|
|
192
209
|
export const ComplexFilterComparisonKeys = [
|
|
@@ -211,7 +228,11 @@ export const COMPLEX_FILTER_KEY = "$filter" as const;
|
|
|
211
228
|
*/
|
|
212
229
|
export type ComplexFilter = Record<
|
|
213
230
|
typeof COMPLEX_FILTER_KEY,
|
|
214
|
-
[
|
|
231
|
+
[
|
|
232
|
+
{ [funcName: string]: any[] },
|
|
233
|
+
(typeof ComplexFilterComparisonKeys)[number]?,
|
|
234
|
+
any?,
|
|
235
|
+
]
|
|
215
236
|
>;
|
|
216
237
|
|
|
217
238
|
export type KeyofString<T> = keyof T & string;
|
|
@@ -221,24 +242,41 @@ export type KeyofString<T> = keyof T & string;
|
|
|
221
242
|
*/
|
|
222
243
|
type BasicFilter<Field extends string, DataType extends any> =
|
|
223
244
|
| Partial<{
|
|
224
|
-
[
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
245
|
+
[
|
|
246
|
+
K in Extract<
|
|
247
|
+
(typeof CompareFilterKeys)[number],
|
|
248
|
+
string
|
|
249
|
+
> as `${Field}.${K}`
|
|
250
|
+
]: CastFromTSToPG<DataType>;
|
|
228
251
|
}>
|
|
229
252
|
| Partial<{
|
|
230
|
-
[
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
253
|
+
[
|
|
254
|
+
K in Extract<
|
|
255
|
+
(typeof CompareInFilterKeys)[number],
|
|
256
|
+
string
|
|
257
|
+
> as `${Field}.${K}`
|
|
258
|
+
]: CastFromTSToPG<DataType>[];
|
|
234
259
|
}>;
|
|
235
|
-
type StringFilter<Field extends string, DataType extends any> = BasicFilter<
|
|
260
|
+
type StringFilter<Field extends string, DataType extends any> = BasicFilter<
|
|
261
|
+
Field,
|
|
262
|
+
DataType
|
|
263
|
+
> &
|
|
236
264
|
(
|
|
237
265
|
| Partial<{
|
|
238
|
-
[
|
|
266
|
+
[
|
|
267
|
+
K in Extract<
|
|
268
|
+
(typeof TextFilterKeys)[number],
|
|
269
|
+
string
|
|
270
|
+
> as `${Field}.${K}`
|
|
271
|
+
]: DataType;
|
|
239
272
|
}>
|
|
240
273
|
| Partial<{
|
|
241
|
-
[
|
|
274
|
+
[
|
|
275
|
+
K in Extract<
|
|
276
|
+
(typeof TextFilterFTSKeys)[number],
|
|
277
|
+
string
|
|
278
|
+
> as `${Field}.${K}`
|
|
279
|
+
]: any;
|
|
242
280
|
}>
|
|
243
281
|
);
|
|
244
282
|
export type ValueOf<T> = T[keyof T];
|
|
@@ -269,11 +307,15 @@ export type CompareFilter<T extends AllowedTSType> =
|
|
|
269
307
|
|
|
270
308
|
export type TextFilter =
|
|
271
309
|
| ExactlyOne<Record<(typeof TextFilterKeys)[number], string>>
|
|
272
|
-
| ExactlyOne<
|
|
310
|
+
| ExactlyOne<
|
|
311
|
+
Record<(typeof TextFilterFTSKeys)[number], FullTextSearchFilter>
|
|
312
|
+
>;
|
|
273
313
|
|
|
274
314
|
type Primitive = string | number | boolean | Date | null;
|
|
275
315
|
|
|
276
|
-
export type JSONBFilter<
|
|
316
|
+
export type JSONBFilter<
|
|
317
|
+
T extends Record<string, unknown> | readonly Record<string, unknown>[],
|
|
318
|
+
> =
|
|
277
319
|
| {
|
|
278
320
|
/**
|
|
279
321
|
* Does the left JSON value contain the right JSON path/value entries at the top level?
|
|
@@ -302,7 +344,8 @@ export type FilterDataType<T extends AllowedTSType> =
|
|
|
302
344
|
: T extends boolean ? CompareFilter<CastFromTSToPG<T>>
|
|
303
345
|
: T extends Date ? CompareFilter<CastFromTSToPG<T>>
|
|
304
346
|
: T extends Primitive[] ? ArrayFilter<T>
|
|
305
|
-
: T extends Record<string, unknown> | Record<string, unknown>[] ?
|
|
347
|
+
: T extends Record<string, unknown> | Record<string, unknown>[] ?
|
|
348
|
+
JSONBFilter<T>
|
|
306
349
|
: CompareFilter<T> | TextFilter | GeomFilter;
|
|
307
350
|
|
|
308
351
|
/**
|
|
@@ -319,14 +362,15 @@ export type FilterForObject<T extends AnyObject = AnyObject> = NormalFilter<T>;
|
|
|
319
362
|
|
|
320
363
|
export type ExistsFilter<S = void> = Partial<{
|
|
321
364
|
[key in EXISTS_KEY]: S extends DBSchema ?
|
|
322
|
-
ExactlyOne<{
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
365
|
+
| ExactlyOne<{
|
|
366
|
+
[TableName in KeyofString<S>]: FullFilter<S[TableName]["columns"], S>;
|
|
367
|
+
}>
|
|
368
|
+
| (key extends "$existsJoined" | "$notExistsJoined" ?
|
|
369
|
+
{
|
|
370
|
+
path: Exclude<RawJoinPath, string>;
|
|
371
|
+
filter: FullFilter<AnyObject, S>;
|
|
372
|
+
}
|
|
373
|
+
: never)
|
|
330
374
|
: any;
|
|
331
375
|
/** ExactlyOne does not for any type. This produces error */
|
|
332
376
|
// ExactlyOne<{
|
|
@@ -339,7 +383,8 @@ export type ExistsFilter<S = void> = Partial<{
|
|
|
339
383
|
*/
|
|
340
384
|
export type FilterItem<T extends AnyObject = AnyObject> = FilterForObject<T>;
|
|
341
385
|
|
|
342
|
-
export type AnyObjIfVoid<T extends AnyObject | void> =
|
|
386
|
+
export type AnyObjIfVoid<T extends AnyObject | void> =
|
|
387
|
+
T extends AnyObject ? T : AnyObject;
|
|
343
388
|
|
|
344
389
|
/**
|
|
345
390
|
* Data filter
|