prostgles-types 4.0.302 → 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/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index_umd.js +1 -1
- package/dist/joinHelpers.d.ts +27 -0
- package/dist/joinHelpers.d.ts.map +1 -1
- package/dist/joinHelpers.js +15 -1
- package/dist/joinHelpers.js.map +1 -1
- package/dist/util.d.ts +12 -10
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +18 -16
- package/dist/util.js.map +1 -1
- package/lib/filters.ts +73 -28
- package/lib/index.ts +23 -1
- package/lib/joinHelpers.ts +18 -2
- package/lib/util.ts +59 -30
- package/package.json +1 -1
package/dist/joinHelpers.d.ts
CHANGED
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
import type { DetailedJoinSelect, JoinMaker } from "./index";
|
|
2
2
|
/** Preserve literal table names and selections for joined return type inference. */
|
|
3
3
|
export declare const defineJoin: <const J extends DetailedJoinSelect>(join: J) => J;
|
|
4
|
+
/** Schema for an explicit, persisted join path step. */
|
|
5
|
+
export declare const parsedJoinPathSchema: {
|
|
6
|
+
readonly type: {
|
|
7
|
+
readonly table: "string";
|
|
8
|
+
readonly on: {
|
|
9
|
+
readonly oneOf: readonly [{
|
|
10
|
+
readonly type: "string";
|
|
11
|
+
}, {
|
|
12
|
+
readonly arrayOf: {
|
|
13
|
+
readonly record: {
|
|
14
|
+
readonly values: "string";
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}];
|
|
18
|
+
};
|
|
19
|
+
readonly params: {
|
|
20
|
+
readonly record: {
|
|
21
|
+
readonly values: "unknown";
|
|
22
|
+
};
|
|
23
|
+
readonly optional: true;
|
|
24
|
+
};
|
|
25
|
+
readonly reversed: {
|
|
26
|
+
readonly type: "boolean";
|
|
27
|
+
readonly optional: true;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
4
31
|
export declare const innerJoin: JoinMaker;
|
|
5
32
|
export declare const leftJoin: JoinMaker;
|
|
6
33
|
//# sourceMappingURL=joinHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joinHelpers.d.ts","sourceRoot":"","sources":["../lib/joinHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,kBAAkB,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"joinHelpers.d.ts","sourceRoot":"","sources":["../lib/joinHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,kBAAkB,EAAE,SAAS,EAAS,MAAM,SAAS,CAAC;AAG/E,oFAAoF;AACpF,eAAO,MAAM,UAAU,GAAI,KAAK,CAAC,CAAC,SAAS,kBAAkB,EAAE,MAAM,CAAC,KAAG,CACnE,CAAC;AAEP,wDAAwD;AACxD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;CAYK,CAAC;AAmBvC,eAAO,MAAM,SAAS,WAA4B,CAAC;AACnD,eAAO,MAAM,QAAQ,WAA2B,CAAC"}
|
package/dist/joinHelpers.js
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.leftJoin = exports.innerJoin = exports.defineJoin = void 0;
|
|
3
|
+
exports.leftJoin = exports.innerJoin = exports.parsedJoinPathSchema = exports.defineJoin = void 0;
|
|
4
4
|
const util_1 = require("./util");
|
|
5
5
|
/** Preserve literal table names and selections for joined return type inference. */
|
|
6
6
|
const defineJoin = (join) => join;
|
|
7
7
|
exports.defineJoin = defineJoin;
|
|
8
|
+
/** Schema for an explicit, persisted join path step. */
|
|
9
|
+
exports.parsedJoinPathSchema = {
|
|
10
|
+
type: {
|
|
11
|
+
table: "string",
|
|
12
|
+
on: {
|
|
13
|
+
oneOf: [
|
|
14
|
+
{ type: "string" },
|
|
15
|
+
{ arrayOf: { record: { values: "string" } } },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
params: { record: { values: "unknown" }, optional: true },
|
|
19
|
+
reversed: { type: "boolean", optional: true },
|
|
20
|
+
},
|
|
21
|
+
};
|
|
8
22
|
const getJoinFunc = (joinType = "$leftJoin") => {
|
|
9
23
|
const joinMaker = (tableName, filter, select, options = {}) => {
|
|
10
24
|
return {
|
package/dist/joinHelpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joinHelpers.js","sourceRoot":"","sources":["../lib/joinHelpers.ts"],"names":[],"mappings":";;;AACA,iCAAkC;AAElC,oFAAoF;AAC7E,MAAM,UAAU,GAAG,CAAqC,IAAO,EAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"joinHelpers.js","sourceRoot":"","sources":["../lib/joinHelpers.ts"],"names":[],"mappings":";;;AACA,iCAAkC;AAElC,oFAAoF;AAC7E,MAAM,UAAU,GAAG,CAAqC,IAAO,EAAK,EAAE,CAC3E,IAAI,CAAC;AADM,QAAA,UAAU,cAChB;AAEP,wDAAwD;AAC3C,QAAA,oBAAoB,GAAG;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ;QACf,EAAE,EAAE;YACF,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;aAC9C;SACF;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC9C;CACmC,CAAC;AAEvC,MAAM,WAAW,GAAG,CAAC,WAAuC,WAAW,EAAE,EAAE;IACzE,MAAM,SAAS,GAAc,CAC3B,SAA8C,EAC9C,MAA2C,EAC3C,MAA2C,EAC3C,UAA+C,EAAE,EACjD,EAAE;QACF,OAAO;YACL,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;YACrC,MAAM;YACN,GAAG,IAAA,eAAQ,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM;SACP,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC"}
|
package/dist/util.d.ts
CHANGED
|
@@ -51,22 +51,24 @@ export declare const tryCatch: <T extends AnyObject>(func: () => T | Promise<T>)
|
|
|
51
51
|
error: unknown;
|
|
52
52
|
duration: number;
|
|
53
53
|
})>;
|
|
54
|
-
export type ParsedJoinPath =
|
|
55
|
-
|
|
54
|
+
export type ParsedJoinPath = JoinPath & {
|
|
55
|
+
on: NonNullable<JoinPath["on"]>;
|
|
56
|
+
};
|
|
57
|
+
export declare const reverseJoinOn: (on: Record<string, string>[]) => {
|
|
56
58
|
[k: string]: string;
|
|
57
59
|
}[];
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
/** Reverse each join toward its source table, then reverse the path order. */
|
|
61
|
+
export declare const reverseParsedPath: (parsedPath: ParsedJoinPath[], table: string) => ({
|
|
62
|
+
reversed?: boolean | undefined;
|
|
63
|
+
params?: Record<string, unknown> | undefined;
|
|
64
|
+
table: string;
|
|
65
|
+
on: string | (string & Record<string, string>[]) | (Record<string, string>[] & string);
|
|
66
|
+
} | {
|
|
65
67
|
table: string;
|
|
66
68
|
on: {
|
|
67
69
|
[k: string]: string;
|
|
68
70
|
}[];
|
|
69
|
-
}[];
|
|
71
|
+
})[];
|
|
70
72
|
type FilterMatch<T, U> = T extends U ? T : undefined;
|
|
71
73
|
export declare const extractTypeUtil: <T extends AnyObject, U extends Partial<T>>(obj: T, objSubType: U) => FilterMatch<T, U>;
|
|
72
74
|
export declare const safeStringify: (obj: AnyObject) => string;
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAwB,MAAM,GAAG,CAAC;AAG9D,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,UAKjC;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,SAAS,EAAE,OAAO,SAAS,MAAM,CAAC,EACnE,KAAK,CAAC,EACN,OAAM,OAAO,EAAE,GAAG,SAAS,OAAO,EAAO,EACzC,uBAAoB,KACnB,IAAI,CAAC,CAAC,EAAE,OAAO,CAgBjB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,SAAS,MAAM,CAAC,EACnE,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,EAAE,GACjB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAOlB;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,EACtE,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,GACnB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
|
package/dist/util.js
CHANGED
|
@@ -149,7 +149,10 @@ function unpatchText(original, patch) {
|
|
|
149
149
|
return text;
|
|
150
150
|
let res = original.slice(0, from) + text + original.slice(to);
|
|
151
151
|
if (md5Hash && (0, md5_1.md5)(res) !== md5Hash)
|
|
152
|
-
throw ("Patch text error: Could not match md5 hash: (original/result) \n" +
|
|
152
|
+
throw ("Patch text error: Could not match md5 hash: (original/result) \n" +
|
|
153
|
+
original +
|
|
154
|
+
"\n" +
|
|
155
|
+
res);
|
|
153
156
|
return res;
|
|
154
157
|
}
|
|
155
158
|
function isEmpty(obj) {
|
|
@@ -214,25 +217,24 @@ const reverseJoinOn = (on) => {
|
|
|
214
217
|
return on.map((constraint) => Object.fromEntries(Object.entries(constraint).map(([left, right]) => [right, left])));
|
|
215
218
|
};
|
|
216
219
|
exports.reverseJoinOn = reverseJoinOn;
|
|
217
|
-
/**
|
|
218
|
-
* result = [
|
|
219
|
-
* { table, on: parsedPath[0] }
|
|
220
|
-
* ...parsedPath.map(p => ({ table: p.table, on: reversedOn(parsedPath[i+1].on) }))
|
|
221
|
-
* ]
|
|
222
|
-
*/
|
|
220
|
+
/** Reverse each join toward its source table, then reverse the path order. */
|
|
223
221
|
const reverseParsedPath = (parsedPath, table) => {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
return (parsedPath ?? [])
|
|
223
|
+
.map(({ table: targetTable, on, params, reversed }, index) => {
|
|
224
|
+
const sourceTable = parsedPath[index - 1]?.table ?? table;
|
|
225
|
+
if (typeof on === "string") {
|
|
226
|
+
return {
|
|
227
|
+
table: sourceTable,
|
|
228
|
+
on,
|
|
229
|
+
...(params && { params }),
|
|
230
|
+
...(targetTable === sourceTable && { reversed: !reversed }),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
230
233
|
return {
|
|
231
|
-
table:
|
|
232
|
-
on: (0, exports.reverseJoinOn)(
|
|
234
|
+
table: sourceTable,
|
|
235
|
+
on: (0, exports.reverseJoinOn)(on),
|
|
233
236
|
};
|
|
234
237
|
})
|
|
235
|
-
.filter(isDefined)
|
|
236
238
|
.reverse();
|
|
237
239
|
};
|
|
238
240
|
exports.reverseParsedPath = reverseParsedPath;
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.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
|
package/lib/index.ts
CHANGED
|
@@ -563,9 +563,30 @@ export type JoinPath = {
|
|
|
563
563
|
* {
|
|
564
564
|
* leftColumn: "rightColumn"
|
|
565
565
|
* }
|
|
566
|
+
* A string selects a named, server-defined computed join.
|
|
566
567
|
*/
|
|
567
|
-
on?: Record<string, string>[];
|
|
568
|
+
on?: Record<string, string>[] | string;
|
|
569
|
+
/** Parameters validated against the server-defined computed join schema. */
|
|
570
|
+
params?: Record<string, unknown>;
|
|
571
|
+
/** Reverse a computed self-join; omitted for the declared direction. */
|
|
572
|
+
reversed?: boolean;
|
|
568
573
|
};
|
|
574
|
+
|
|
575
|
+
/** Published direct relationships. SQL implementations remain on the server. */
|
|
576
|
+
export type ClientJoin = {
|
|
577
|
+
tables: [string, string];
|
|
578
|
+
} & (
|
|
579
|
+
| {
|
|
580
|
+
on: Record<string, string>[];
|
|
581
|
+
supportsMultiHop: boolean;
|
|
582
|
+
paramsSchema?: never;
|
|
583
|
+
}
|
|
584
|
+
| {
|
|
585
|
+
on: string;
|
|
586
|
+
supportsMultiHop: boolean;
|
|
587
|
+
paramsSchema?: JSONB.ObjectType["type"];
|
|
588
|
+
}
|
|
589
|
+
);
|
|
569
590
|
/**
|
|
570
591
|
* Can be either the target table name, or the sequence of tables to join through with the target table at the end.
|
|
571
592
|
*/
|
|
@@ -1641,6 +1662,7 @@ export type TableSchemaErrors = {
|
|
|
1641
1662
|
export type ClientSchema = {
|
|
1642
1663
|
rawSQL: boolean;
|
|
1643
1664
|
joinTables: string[][];
|
|
1665
|
+
joins: ClientJoin[];
|
|
1644
1666
|
auth: AuthTypes.AuthSocketSchema | undefined;
|
|
1645
1667
|
version: any;
|
|
1646
1668
|
err?: string;
|
package/lib/joinHelpers.ts
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
import type { AnyObject, DetailedJoinSelect, JoinMaker } from "./index";
|
|
1
|
+
import type { AnyObject, DetailedJoinSelect, JoinMaker, JSONB } from "./index";
|
|
2
2
|
import { omitKeys } from "./util";
|
|
3
3
|
|
|
4
4
|
/** Preserve literal table names and selections for joined return type inference. */
|
|
5
|
-
export const defineJoin = <const J extends DetailedJoinSelect>(join: J): J =>
|
|
5
|
+
export const defineJoin = <const J extends DetailedJoinSelect>(join: J): J =>
|
|
6
|
+
join;
|
|
7
|
+
|
|
8
|
+
/** Schema for an explicit, persisted join path step. */
|
|
9
|
+
export const parsedJoinPathSchema = {
|
|
10
|
+
type: {
|
|
11
|
+
table: "string",
|
|
12
|
+
on: {
|
|
13
|
+
oneOf: [
|
|
14
|
+
{ type: "string" },
|
|
15
|
+
{ arrayOf: { record: { values: "string" } } },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
params: { record: { values: "unknown" }, optional: true },
|
|
19
|
+
reversed: { type: "boolean", optional: true },
|
|
20
|
+
},
|
|
21
|
+
} as const satisfies JSONB.JSONBSchema;
|
|
6
22
|
|
|
7
23
|
const getJoinFunc = (joinType: "$leftJoin" | "$innerJoin" = "$leftJoin") => {
|
|
8
24
|
const joinMaker: JoinMaker = (
|
package/lib/util.ts
CHANGED
|
@@ -46,7 +46,9 @@ export function filter<T extends AnyObject, ArrFilter extends Partial<T>>(
|
|
|
46
46
|
array: T[],
|
|
47
47
|
arrFilter: ArrFilter,
|
|
48
48
|
): T[] {
|
|
49
|
-
return array.filter((d) =>
|
|
49
|
+
return array.filter((d) =>
|
|
50
|
+
Object.entries(arrFilter).every(([k, v]) => d[k] === v),
|
|
51
|
+
);
|
|
50
52
|
}
|
|
51
53
|
export function find<T extends AnyObject, ArrFilter extends Partial<T>>(
|
|
52
54
|
array: T[],
|
|
@@ -125,9 +127,13 @@ export type TextPatch = {
|
|
|
125
127
|
md5: string;
|
|
126
128
|
};
|
|
127
129
|
|
|
128
|
-
export function getTextPatch(
|
|
130
|
+
export function getTextPatch(
|
|
131
|
+
oldStr: string,
|
|
132
|
+
newStr: string,
|
|
133
|
+
): TextPatch | string {
|
|
129
134
|
/* Big change, no point getting diff */
|
|
130
|
-
if (!oldStr || !newStr || !oldStr.trim().length || !newStr.trim().length)
|
|
135
|
+
if (!oldStr || !newStr || !oldStr.trim().length || !newStr.trim().length)
|
|
136
|
+
return newStr;
|
|
131
137
|
|
|
132
138
|
/* Return no change if matching */
|
|
133
139
|
if (oldStr === newStr)
|
|
@@ -172,7 +178,10 @@ export function unpatchText(original: string | null, patch: TextPatch): string {
|
|
|
172
178
|
let res = original.slice(0, from) + text + original.slice(to);
|
|
173
179
|
if (md5Hash && md5(res) !== md5Hash)
|
|
174
180
|
throw (
|
|
175
|
-
"Patch text error: Could not match md5 hash: (original/result) \n" +
|
|
181
|
+
"Patch text error: Could not match md5 hash: (original/result) \n" +
|
|
182
|
+
original +
|
|
183
|
+
"\n" +
|
|
184
|
+
res
|
|
176
185
|
);
|
|
177
186
|
return res;
|
|
178
187
|
}
|
|
@@ -211,11 +220,15 @@ export const getObjectEntries = <T extends Record<string, any>>(
|
|
|
211
220
|
export function isObject(obj: any | undefined): obj is Record<string, any> {
|
|
212
221
|
return Boolean(obj && typeof obj === "object" && !Array.isArray(obj));
|
|
213
222
|
}
|
|
214
|
-
export function isDefined<T>(
|
|
223
|
+
export function isDefined<T>(
|
|
224
|
+
v: T | undefined | void | null,
|
|
225
|
+
): v is NonNullable<T> {
|
|
215
226
|
return v !== undefined && v !== null;
|
|
216
227
|
}
|
|
217
228
|
|
|
218
|
-
export function getKeys<T extends Record<string, any>>(
|
|
229
|
+
export function getKeys<T extends Record<string, any>>(
|
|
230
|
+
o: T,
|
|
231
|
+
): (keyof T & string)[] {
|
|
219
232
|
return Object.keys(o) as unknown as (keyof T & string)[];
|
|
220
233
|
}
|
|
221
234
|
|
|
@@ -226,15 +239,18 @@ export type Explode<T> =
|
|
|
226
239
|
: never
|
|
227
240
|
: never;
|
|
228
241
|
export type AtMostOne<T> = Explode<Partial<T>>;
|
|
229
|
-
export type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> &
|
|
242
|
+
export type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> &
|
|
243
|
+
U[keyof U];
|
|
230
244
|
export type ExactlyOne<T> = AtMostOne<T> & AtLeastOne<T>;
|
|
231
245
|
|
|
232
246
|
type UnionKeys<T> = T extends T ? keyof T : never;
|
|
233
247
|
type StrictUnionHelper<T, TAll> =
|
|
234
|
-
T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>>
|
|
248
|
+
T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>>
|
|
249
|
+
: never;
|
|
235
250
|
export type StrictUnion<T> = StrictUnionHelper<T, T>;
|
|
236
251
|
|
|
237
|
-
export type PartialByKeys<T, K extends keyof T> = Omit<T, K> &
|
|
252
|
+
export type PartialByKeys<T, K extends keyof T> = Omit<T, K> &
|
|
253
|
+
Partial<Pick<T, K>>;
|
|
238
254
|
export type Simplify<T> = { [K in keyof T]: T[K] } & {};
|
|
239
255
|
|
|
240
256
|
/**
|
|
@@ -245,7 +261,11 @@ export const tryCatch = async <T extends AnyObject>(
|
|
|
245
261
|
func: () => T | Promise<T>,
|
|
246
262
|
): Promise<
|
|
247
263
|
| (T & { hasError?: false; error?: undefined; duration: number })
|
|
248
|
-
| (Partial<Record<keyof T, undefined>> & {
|
|
264
|
+
| (Partial<Record<keyof T, undefined>> & {
|
|
265
|
+
hasError: true;
|
|
266
|
+
error: unknown;
|
|
267
|
+
duration: number;
|
|
268
|
+
})
|
|
249
269
|
> => {
|
|
250
270
|
const startTime = Date.now();
|
|
251
271
|
try {
|
|
@@ -263,31 +283,36 @@ export const tryCatch = async <T extends AnyObject>(
|
|
|
263
283
|
}
|
|
264
284
|
};
|
|
265
285
|
|
|
266
|
-
export type ParsedJoinPath =
|
|
267
|
-
export const reverseJoinOn = (on:
|
|
286
|
+
export type ParsedJoinPath = JoinPath & { on: NonNullable<JoinPath["on"]> };
|
|
287
|
+
export const reverseJoinOn = (on: Record<string, string>[]) => {
|
|
268
288
|
return on.map((constraint) =>
|
|
269
|
-
Object.fromEntries(
|
|
289
|
+
Object.fromEntries(
|
|
290
|
+
Object.entries(constraint).map(([left, right]) => [right, left]),
|
|
291
|
+
),
|
|
270
292
|
);
|
|
271
293
|
};
|
|
272
294
|
|
|
273
|
-
/**
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
295
|
+
/** Reverse each join toward its source table, then reverse the path order. */
|
|
296
|
+
export const reverseParsedPath = (
|
|
297
|
+
parsedPath: ParsedJoinPath[],
|
|
298
|
+
table: string,
|
|
299
|
+
) => {
|
|
300
|
+
return (parsedPath ?? [])
|
|
301
|
+
.map(({ table: targetTable, on, params, reversed }, index) => {
|
|
302
|
+
const sourceTable = parsedPath[index - 1]?.table ?? table;
|
|
303
|
+
if (typeof on === "string") {
|
|
304
|
+
return {
|
|
305
|
+
table: sourceTable,
|
|
306
|
+
on,
|
|
307
|
+
...(params && { params }),
|
|
308
|
+
...(targetTable === sourceTable && { reversed: !reversed }),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
285
311
|
return {
|
|
286
|
-
table:
|
|
287
|
-
on: reverseJoinOn(
|
|
312
|
+
table: sourceTable,
|
|
313
|
+
on: reverseJoinOn(on),
|
|
288
314
|
};
|
|
289
315
|
})
|
|
290
|
-
.filter(isDefined)
|
|
291
316
|
.reverse();
|
|
292
317
|
};
|
|
293
318
|
|
|
@@ -368,7 +393,8 @@ export const getProperty = <T extends object, K extends string>(
|
|
|
368
393
|
): K extends keyof T ? T[K]
|
|
369
394
|
: K extends string ? T[keyof T] | undefined
|
|
370
395
|
: undefined => {
|
|
371
|
-
if (!Object.keys(obj).includes(key))
|
|
396
|
+
if (!Object.keys(obj).includes(key))
|
|
397
|
+
return undefined as K extends keyof T ? T[K] : undefined;
|
|
372
398
|
return obj[key as keyof T] as K extends keyof T ? T[K] : undefined;
|
|
373
399
|
};
|
|
374
400
|
|
|
@@ -380,7 +406,10 @@ export const withTimeout = <T>(promise: Promise<T>, ms: number): Promise<T> => {
|
|
|
380
406
|
};
|
|
381
407
|
|
|
382
408
|
export const createPromiseWithTimeout = <T>(
|
|
383
|
-
executor: (
|
|
409
|
+
executor: (
|
|
410
|
+
resolve: (value: T | PromiseLike<T>) => void,
|
|
411
|
+
reject: (reason?: any) => void,
|
|
412
|
+
) => void,
|
|
384
413
|
ms: number,
|
|
385
414
|
): Promise<T> => {
|
|
386
415
|
const timeout = new Promise<never>((_, reject) =>
|