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.
@@ -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,EAAE,MAAM,SAAS,CAAC;AAGxE,oFAAoF;AACpF,eAAO,MAAM,UAAU,GAAI,KAAK,CAAC,CAAC,SAAS,kBAAkB,EAAE,MAAM,CAAC,KAAG,CAAS,CAAC;AAmBnF,eAAO,MAAM,SAAS,WAA4B,CAAC;AACnD,eAAO,MAAM,QAAQ,WAA2B,CAAC"}
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"}
@@ -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 {
@@ -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,CAAC,IAAI,CAAC;AAAtE,QAAA,UAAU,cAA4D;AAEnF,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"}
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 = Required<JoinPath>;
55
- export declare const reverseJoinOn: (on: ParsedJoinPath["on"]) => {
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
- * result = [
60
- * { table, on: parsedPath[0] }
61
- * ...parsedPath.map(p => ({ table: p.table, on: reversedOn(parsedPath[i+1].on) }))
62
- * ]
63
- */
64
- export declare const reverseParsedPath: (parsedPath: ParsedJoinPath[], table: string) => {
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;
@@ -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,CAEL;AACD,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,EACpE,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,GACnB,CAAC,GAAG,SAAS,CAEf;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,QAAQ,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACzD,MAAM,CA0DR;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAsC/E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAU7E;AAED,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAG1C;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,KACzB,GAAG,IAAI,CAAkB,CAAC;AAG7B,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,CAalE;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,KAAK,CAAC,KACL,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAEvB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEzE;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAEhF;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAEjF;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IACnB,MAAM,CAAC,SAAS,MAAM,CAAC,GACrB,CAAC,SAAS,OAAO,GACf;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAAE,GAC9C,KAAK,GACP,KAAK,CAAC;AACV,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAAE,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAEzD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AAClD,KAAK,iBAAiB,CAAC,CAAC,EAAE,IAAI,IAC5B,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AACxF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,SAAS,SAAS,EAChD,MAAM,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KACzB,OAAO,CACN,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB/F,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,eAAO,MAAM,aAAa,GAAI,IAAI,cAAc,CAAC,IAAI,CAAC;;GAIrD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,YAAY,cAAc,EAAE,EAAE,OAAO,MAAM;;;;;GAa5E,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAErD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACvE,KAAK,CAAC,EACN,YAAY,CAAC,KACZ,WAAW,CAAC,CAAC,EAAE,CAAC,CAKlB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,WAW3C,CAAC;AACF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,GAAG,EACb,sBAAoB,KACnB,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,IA0C3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC5D,KAAK,CAAC,EACN,KAAK,CAAC,GAAG,MAAM,KACd,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GACzB,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GACzC,SAGD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC,CAAC,CAKzE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,EAChG,IAAI,MAAM,KACT,OAAO,CAAC,CAAC,CAMX,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EAAE,KAAK,CAAC,KAC7B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAEjD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAC/D,SAAS,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAEb,CAAC"}
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,CAIL;AACD,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,EACpE,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,GACnB,CAAC,GAAG,SAAS,CAEf;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,QAAQ,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACzD,MAAM,CA0DR;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,SAAS,GAAG,MAAM,CAuCpB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAa7E;AAED,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAG1C;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,KACzB,GAAG,IAAI,CAAkB,CAAC;AAG7B,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,CAalE;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,KAAK,CAAC,KACL,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAEvB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEzE;AACD,wBAAgB,SAAS,CAAC,CAAC,EACzB,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAC7B,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAErB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnD,CAAC,EAAE,CAAC,GACH,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAEtB;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IACnB,MAAM,CAAC,SAAS,MAAM,CAAC,GACrB,CAAC,SAAS,OAAO,GACf;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAAE,GAC9C,KAAK,GACP,KAAK,CAAC;AACV,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAAE,IAAI,OAAO,CAAC,CAAC,CAAC,GACxE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACb,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAEzD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AAClD,KAAK,iBAAiB,CAAC,CAAC,EAAE,IAAI,IAC5B,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAC3E,KAAK,CAAC;AACV,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,SAAS,SAAS,EAChD,MAAM,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KACzB,OAAO,CACN,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG;IACrC,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAgBL,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IAAE,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;CAAE,CAAC;AAC5E,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;;GAMzD,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,GAC5B,YAAY,cAAc,EAAE,EAC5B,OAAO,MAAM;;;;;;;;;;IAmBd,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAErD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACvE,KAAK,CAAC,EACN,YAAY,CAAC,KACZ,WAAW,CAAC,CAAC,EAAE,CAAC,CAKlB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,WAW3C,CAAC;AACF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,GAAG,EACb,sBAAoB,KACnB,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,IA0C3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC5D,KAAK,CAAC,EACN,KAAK,CAAC,GAAG,MAAM,KACd,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GACzB,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GACzC,SAID,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC,CAAC,CAKzE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,UAAU,CACR,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAC3B,IAAI,EACT,IAAI,MAAM,KACT,OAAO,CAAC,CAAC,CAMX,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EAAE,KAAK,CAAC,KAC7B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAEjD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAC/D,SAAS,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAEb,CAAC"}
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" + original + "\n" + res);
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
- const newPPath = [{ table, on: [{}] }, ...(parsedPath ?? [])];
225
- return newPPath
226
- .map((pp, i) => {
227
- const nextPath = newPPath[i + 1];
228
- if (!nextPath)
229
- return undefined;
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: pp.table,
232
- on: (0, exports.reverseJoinOn)(nextPath.on),
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 { DBSchema, RawJoinPath, type AllowedTSType, type CastFromTSToPG } from ".";
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: "Does the string exist as a top-level key within the JSON value?",
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 = ["@@", "@>", "<@", "$contains", "$containedBy"] as const;
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 = ["$exists", "$notExists", "$existsJoined", "$notExistsJoined"] as const;
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
- [{ [funcName: string]: any[] }, (typeof ComplexFilterComparisonKeys)[number]?, any?]
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
- [K in Extract<
225
- (typeof CompareFilterKeys)[number],
226
- string
227
- > as `${Field}.${K}`]: CastFromTSToPG<DataType>;
245
+ [
246
+ K in Extract<
247
+ (typeof CompareFilterKeys)[number],
248
+ string
249
+ > as `${Field}.${K}`
250
+ ]: CastFromTSToPG<DataType>;
228
251
  }>
229
252
  | Partial<{
230
- [K in Extract<
231
- (typeof CompareInFilterKeys)[number],
232
- string
233
- > as `${Field}.${K}`]: CastFromTSToPG<DataType>[];
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<Field, DataType> &
260
+ type StringFilter<Field extends string, DataType extends any> = BasicFilter<
261
+ Field,
262
+ DataType
263
+ > &
236
264
  (
237
265
  | Partial<{
238
- [K in Extract<(typeof TextFilterKeys)[number], string> as `${Field}.${K}`]: DataType;
266
+ [
267
+ K in Extract<
268
+ (typeof TextFilterKeys)[number],
269
+ string
270
+ > as `${Field}.${K}`
271
+ ]: DataType;
239
272
  }>
240
273
  | Partial<{
241
- [K in Extract<(typeof TextFilterFTSKeys)[number], string> as `${Field}.${K}`]: any;
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<Record<(typeof TextFilterFTSKeys)[number], FullTextSearchFilter>>;
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<T extends Record<string, unknown> | readonly Record<string, unknown>[]> =
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>[] ? JSONBFilter<T>
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
- [tname in KeyofString<S>]:
324
- | FullFilter<S[tname]["columns"], S>
325
- | {
326
- path: RawJoinPath[];
327
- filter: FullFilter<S[tname]["columns"], S>;
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> = T extends AnyObject ? T : AnyObject;
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;
@@ -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 => join;
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) => Object.entries(arrFilter).every(([k, v]) => d[k] === v));
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(oldStr: string, newStr: string): TextPatch | string {
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) return newStr;
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" + original + "\n" + res
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>(v: T | undefined | void | null): v is NonNullable<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>>(o: T): (keyof T & string)[] {
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> & U[keyof U];
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>> : 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> & Partial<Pick<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>> & { hasError: true; error: unknown; duration: number })
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 = Required<JoinPath>;
267
- export const reverseJoinOn = (on: ParsedJoinPath["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(Object.entries(constraint).map(([left, right]) => [right, left])),
289
+ Object.fromEntries(
290
+ Object.entries(constraint).map(([left, right]) => [right, left]),
291
+ ),
270
292
  );
271
293
  };
272
294
 
273
- /**
274
- * result = [
275
- * { table, on: parsedPath[0] }
276
- * ...parsedPath.map(p => ({ table: p.table, on: reversedOn(parsedPath[i+1].on) }))
277
- * ]
278
- */
279
- export const reverseParsedPath = (parsedPath: ParsedJoinPath[], table: string) => {
280
- const newPPath: ParsedJoinPath[] = [{ table, on: [{}] }, ...(parsedPath ?? [])];
281
- return newPPath
282
- .map((pp, i) => {
283
- const nextPath = newPPath[i + 1];
284
- if (!nextPath) return undefined;
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: pp.table,
287
- on: reverseJoinOn(nextPath.on),
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)) return undefined as K extends keyof T ? T[K] : undefined;
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: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void,
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) =>