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.
- package/debug/column-definitions-build.log +4 -0
- package/debug/column-definitions-test-server.log +3256 -0
- package/debug/column-definitions-tests-build.log +0 -0
- package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts +19 -6
- package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts.map +1 -1
- package/lib/TableConfig/TableRowFromColumnDefinitions.ts +110 -33
- package/package.json +1 -1
|
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>> =
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
11
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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;
|