prostgles-server 4.2.641 → 4.2.642

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.
File without changes
@@ -7,21 +7,34 @@ type ColumnDefinition = string | {
7
7
  nullable?: boolean;
8
8
  };
9
9
  /** Row types for the column definitions used by managed tables. */
10
- export type TableRowFromColumnDefinitions<T extends Record<string, ColumnDefinition>> = Omit<TableRow<T>, GeneratedColumnNames<T>> & Partial<Pick<TableRow<T>, GeneratedColumnNames<T>>>;
10
+ export type TableRowFromColumnDefinitions<T extends Record<string, ColumnDefinition>> = InsertRow<{
11
+ [K in keyof T]: T[K] extends string ? NormalizeSQL<Uppercase<T[K]>> : T[K];
12
+ }>;
13
+ type InsertRow<T extends Record<string, ColumnDefinition>> = Omit<TableRow<T>, GeneratedColumnNames<T>> & Partial<Pick<TableRow<T>, GeneratedColumnNames<T>>>;
11
14
  type TableRow<T extends Record<string, ColumnDefinition>> = {
12
- [K in keyof T]: T[K] extends {
15
+ [K in keyof T]: T[K] extends ({
13
16
  jsonbSchema: infer S extends JSONB.JSONBSchema;
14
- } ? JSONB.GetType<S> | (T[K] extends {
17
+ }) ? JSONB.GetType<S> | (T[K] extends {
15
18
  nullable: true;
16
19
  } ? null : never) : T[K] extends {
17
20
  enum: readonly (infer V)[];
18
21
  } ? V | (T[K] extends {
19
22
  nullable: true;
20
- } ? null : never) : ColumnValue<T[K]> | (T[K] extends `${string} NOT NULL${string}` | `${string}PRIMARY KEY${string}` ? never : null);
23
+ } ? null : never) : ColumnValue<T[K]> | (T[K] extends string ? ColumnIsRequired<T[K]> extends true ? never : null : never);
21
24
  };
25
+ type ColumnIsRequired<T extends string> = ReadType<T>[0] extends SerialType ? true : ` ${Unquoted<T>} ` extends (`${string} NOT NULL ${string}` | `${string} PRIMARY KEY ${string}` | `${string} GENERATED ${string} AS IDENTITY ${string}`) ? true : false;
22
26
  type GeneratedColumnNames<T extends Record<string, ColumnDefinition>> = {
23
- [K in keyof T]: T[K] extends string ? T[K] extends `${string}DEFAULT${string}` | `${string}SERIAL${string}` | `${string}GENERATED${string}AS IDENTITY${string}` ? K : never : never;
27
+ [K in keyof T]: T[K] extends string ? ReadType<T[K]>[0] extends SerialType ? K : ` ${Unquoted<T[K]>} ` extends (`${string} DEFAULT ${string}` | `${string} GENERATED ${string}`) ? K : never : never;
24
28
  }[keyof T];
25
- type ColumnValue<T> = T extends `BYTEA${string}` ? Buffer : T extends `JSONB${string}` ? Record<string, unknown> : T extends `${"SMALLINT" | "INTEGER" | "SERIAL"}${string}` ? number : T extends `${"BIGINT" | "BIGSERIAL" | "NUMERIC" | "DECIMAL"}${string}` ? string | number : T extends `${"REAL" | "DOUBLE PRECISION"}${string}` ? number : string;
29
+ type SerialType = "SMALLSERIAL" | "SERIAL2" | "SERIAL" | "SERIAL4" | "BIGSERIAL" | "SERIAL8";
30
+ type ColumnValue<T> = T extends string ? T extends `DOUBLE PRECISION${infer Rest}` ? ColumnValue<`FLOAT8${Rest}`> : ReadType<T> extends [infer Name extends string, infer Rest extends string] ? ArrayValue<ScalarValue<Name>, Trim<Rest>> : never : never;
31
+ type ScalarValue<T> = T extends "BYTEA" ? Buffer : T extends "JSON" | "JSONB" ? Record<string, unknown> : T extends "BOOL" | "BOOLEAN" ? boolean : T extends ("SMALLINT" | "INT2" | "INT" | "INTEGER" | "INT4" | "SMALLSERIAL" | "SERIAL2" | "SERIAL" | "SERIAL4" | "REAL" | "FLOAT" | "FLOAT4" | "FLOAT8") ? number : T extends "BIGINT" | "INT8" | "BIGSERIAL" | "SERIAL8" | "NUMERIC" | "DECIMAL" | "DEC" ? string | number : string;
32
+ /** Only consume modifiers/array dimensions immediately following the type. */
33
+ type ArrayValue<Value, Rest extends string> = Rest extends `(${string})${infer Tail}` ? ArrayValue<Value, Trim<Tail>> : Rest extends `[${string}]${infer Tail}` ? ArrayValue<(Value | null)[], Trim<Tail>> : Rest extends "ARRAY" | `ARRAY ${string}` | `ARRAY[${string}` ? Rest extends `ARRAY${infer Tail}` ? Trim<Tail> extends `[${string}` ? ArrayValue<Value, Trim<Tail>> : (Value | null)[] : never : Value;
34
+ type ReadType<T extends string, Name extends string = ""> = T extends `${" " | "(" | "["}${string}` ? [Name, T] : T extends `${infer Char}${infer Rest}` ? ReadType<Rest, `${Name}${Char}`> : [Name, ""];
35
+ type Trim<T extends string> = T extends ` ${infer Rest}` ? Trim<Rest> : T extends `${infer Rest} ` ? Trim<Rest> : T;
36
+ type NormalizeSQL<T extends string> = T extends `${infer Start}\n${infer End}` ? NormalizeSQL<`${Start} ${End}`> : T extends `${infer Start}\r${infer End}` ? NormalizeSQL<`${Start} ${End}`> : T extends `${infer Start}\t${infer End}` ? NormalizeSQL<`${Start} ${End}`> : T extends `${infer Start} ${infer End}` ? NormalizeSQL<`${Start} ${End}`> : Trim<T>;
37
+ /** Quoted values and identifiers do not declare defaults or constraints. */
38
+ type Unquoted<T extends string> = T extends `${infer Start}'${string}'${infer End}` ? Unquoted<`${Start}${End}`> : T extends `${infer Start}"${string}"${infer End}` ? Unquoted<`${Start}${End}`> : T;
26
39
  export {};
27
40
  //# sourceMappingURL=TableRowFromColumnDefinitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRowFromColumnDefinitions.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/TableRowFromColumnDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,gBAAgB,GACjB,MAAM,GACN;IAAE,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,mEAAmE;AACnE,MAAM,MAAM,6BAA6B,CACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,IACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI;KACzD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC;KAChD,GACG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,KAAK,CAAC,GACnE,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;KAAE,GACzC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,GAAG,KAAK,CAAC,GAClD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC,CAAC,SACH,GAAG,MAAM,YAAY,MAAM,EAAE,GAAG,GAAG,MAAM,cAAc,MAAM,EAAE,GAC7D,KAAK,GACL,IAAI,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI;KACrE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC/B,CAAC,CAAC,CAAC,CAAC,SACA,GAAG,MAAM,UAAU,MAAM,EAAE,GAC3B,GAAG,MAAM,SAAS,MAAM,EAAE,GAC1B,GAAG,MAAM,YAAY,MAAM,cAAc,MAAM,EAAE,GACnD,CAAC,GACD,KAAK,GACP,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,MAAM,EAAE,GAC5C,MAAM,GACN,CAAC,SAAS,QAAQ,MAAM,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,EAAE,GACvD,MAAM,GACN,CAAC,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,GACpE,MAAM,GAAG,MAAM,GACf,CAAC,SAAS,GAAG,MAAM,GAAG,kBAAkB,GAAG,MAAM,EAAE,GACjD,MAAM,GACN,MAAM,CAAC"}
1
+ {"version":3,"file":"TableRowFromColumnDefinitions.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/TableRowFromColumnDefinitions.ts"],"names":[],"mappings":"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"}
@@ -6,44 +6,121 @@ type ColumnDefinition =
6
6
  | { jsonbSchema: JSONB.JSONBSchema; nullable?: boolean };
7
7
 
8
8
  /** Row types for the column definitions used by managed tables. */
9
- export type TableRowFromColumnDefinitions<
10
- T extends Record<string, ColumnDefinition>,
11
- > = Omit<TableRow<T>, GeneratedColumnNames<T>> &
9
+ export type TableRowFromColumnDefinitions<T extends Record<string, ColumnDefinition>> = InsertRow<{
10
+ [K in keyof T]: T[K] extends string ? NormalizeSQL<Uppercase<T[K]>> : T[K];
11
+ }>;
12
+
13
+ type InsertRow<T extends Record<string, ColumnDefinition>> = Omit<
14
+ TableRow<T>,
15
+ GeneratedColumnNames<T>
16
+ > &
12
17
  Partial<Pick<TableRow<T>, GeneratedColumnNames<T>>>;
13
18
 
14
19
  type TableRow<T extends Record<string, ColumnDefinition>> = {
15
- [K in keyof T]: T[K] extends {
16
- jsonbSchema: infer S extends JSONB.JSONBSchema;
17
- }
18
- ? JSONB.GetType<S> | (T[K] extends { nullable: true } ? null : never)
19
- : T[K] extends { enum: readonly (infer V)[] }
20
- ? V | (T[K] extends { nullable: true } ? null : never)
21
- : | ColumnValue<T[K]>
22
- | (T[K] extends
23
- `${string} NOT NULL${string}` | `${string}PRIMARY KEY${string}`
24
- ? never
25
- : null);
20
+ [K in keyof T]: T[K] extends (
21
+ {
22
+ jsonbSchema: infer S extends JSONB.JSONBSchema;
23
+ }
24
+ ) ?
25
+ JSONB.GetType<S> | (T[K] extends { nullable: true } ? null : never)
26
+ : T[K] extends { enum: readonly (infer V)[] } ?
27
+ V | (T[K] extends { nullable: true } ? null : never)
28
+ : | ColumnValue<T[K]>
29
+ | (T[K] extends string ?
30
+ ColumnIsRequired<T[K]> extends true ?
31
+ never
32
+ : null
33
+ : never);
26
34
  };
27
35
 
36
+ type ColumnIsRequired<T extends string> =
37
+ ReadType<T>[0] extends SerialType ? true
38
+ : ` ${Unquoted<T>} ` extends (
39
+
40
+ | `${string} NOT NULL ${string}`
41
+ | `${string} PRIMARY KEY ${string}`
42
+ | `${string} GENERATED ${string} AS IDENTITY ${string}`
43
+ ) ?
44
+ true
45
+ : false;
46
+
28
47
  type GeneratedColumnNames<T extends Record<string, ColumnDefinition>> = {
29
- [K in keyof T]: T[K] extends string
30
- ? T[K] extends
31
- | `${string}DEFAULT${string}`
32
- | `${string}SERIAL${string}`
33
- | `${string}GENERATED${string}AS IDENTITY${string}`
34
- ? K
35
- : never
36
- : never;
48
+ [K in keyof T]: T[K] extends string ?
49
+ ReadType<T[K]>[0] extends SerialType ? K
50
+ : ` ${Unquoted<T[K]>} ` extends (
51
+ `${string} DEFAULT ${string}` | `${string} GENERATED ${string}`
52
+ ) ?
53
+ K
54
+ : never
55
+ : never;
37
56
  }[keyof T];
38
57
 
39
- type ColumnValue<T> = T extends `BYTEA${string}`
40
- ? Buffer
41
- : T extends `JSONB${string}`
42
- ? Record<string, unknown>
43
- : T extends `${"SMALLINT" | "INTEGER" | "SERIAL"}${string}`
44
- ? number
45
- : T extends `${"BIGINT" | "BIGSERIAL" | "NUMERIC" | "DECIMAL"}${string}`
46
- ? string | number
47
- : T extends `${"REAL" | "DOUBLE PRECISION"}${string}`
48
- ? number
49
- : string;
58
+ type SerialType = "SMALLSERIAL" | "SERIAL2" | "SERIAL" | "SERIAL4" | "BIGSERIAL" | "SERIAL8";
59
+
60
+ type ColumnValue<T> =
61
+ T extends string ?
62
+ T extends `DOUBLE PRECISION${infer Rest}` ? ColumnValue<`FLOAT8${Rest}`>
63
+ : ReadType<T> extends [infer Name extends string, infer Rest extends string] ?
64
+ ArrayValue<ScalarValue<Name>, Trim<Rest>>
65
+ : never
66
+ : never;
67
+
68
+ type ScalarValue<T> =
69
+ T extends "BYTEA" ? Buffer
70
+ : T extends "JSON" | "JSONB" ? Record<string, unknown>
71
+ : T extends "BOOL" | "BOOLEAN" ? boolean
72
+ : T extends (
73
+
74
+ | "SMALLINT"
75
+ | "INT2"
76
+ | "INT"
77
+ | "INTEGER"
78
+ | "INT4"
79
+ | "SMALLSERIAL"
80
+ | "SERIAL2"
81
+ | "SERIAL"
82
+ | "SERIAL4"
83
+ | "REAL"
84
+ | "FLOAT"
85
+ | "FLOAT4"
86
+ | "FLOAT8"
87
+ ) ?
88
+ number
89
+ : T extends "BIGINT" | "INT8" | "BIGSERIAL" | "SERIAL8" | "NUMERIC" | "DECIMAL" | "DEC" ?
90
+ string | number
91
+ : string;
92
+
93
+ /** Only consume modifiers/array dimensions immediately following the type. */
94
+ type ArrayValue<Value, Rest extends string> =
95
+ Rest extends `(${string})${infer Tail}` ? ArrayValue<Value, Trim<Tail>>
96
+ : Rest extends `[${string}]${infer Tail}` ? ArrayValue<(Value | null)[], Trim<Tail>>
97
+ : Rest extends "ARRAY" | `ARRAY ${string}` | `ARRAY[${string}` ?
98
+ Rest extends `ARRAY${infer Tail}` ?
99
+ Trim<Tail> extends `[${string}` ?
100
+ ArrayValue<Value, Trim<Tail>>
101
+ : (Value | null)[]
102
+ : never
103
+ : Value;
104
+
105
+ type ReadType<T extends string, Name extends string = ""> =
106
+ T extends `${" " | "(" | "["}${string}` ? [Name, T]
107
+ : T extends `${infer Char}${infer Rest}` ? ReadType<Rest, `${Name}${Char}`>
108
+ : [Name, ""];
109
+
110
+ type Trim<T extends string> =
111
+ T extends ` ${infer Rest}` ? Trim<Rest>
112
+ : T extends `${infer Rest} ` ? Trim<Rest>
113
+ : T;
114
+
115
+ type NormalizeSQL<T extends string> =
116
+ T extends `${infer Start}\n${infer End}` ? NormalizeSQL<`${Start} ${End}`>
117
+ : T extends `${infer Start}\r${infer End}` ? NormalizeSQL<`${Start} ${End}`>
118
+ : T extends `${infer Start}\t${infer End}` ? NormalizeSQL<`${Start} ${End}`>
119
+ : T extends `${infer Start} ${infer End}` ? NormalizeSQL<`${Start} ${End}`>
120
+ : Trim<T>;
121
+
122
+ /** Quoted values and identifiers do not declare defaults or constraints. */
123
+ type Unquoted<T extends string> =
124
+ T extends `${infer Start}'${string}'${infer End}` ? Unquoted<`${Start}${End}`>
125
+ : T extends `${infer Start}"${string}"${infer End}` ? Unquoted<`${Start}${End}`>
126
+ : T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.641",
3
+ "version": "4.2.642",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",