prostgles-server 4.2.401 → 4.2.403
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/DBSchemaBuilder/getServerFunctionReturnTypes.d.ts.map +1 -1
- package/dist/DBSchemaBuilder/getServerFunctionReturnTypes.js +14 -1
- package/dist/DBSchemaBuilder/getServerFunctionReturnTypes.js.map +1 -1
- package/dist/DBSchemaBuilder/resolveTypeToStructure.d.ts +1 -1
- package/dist/DBSchemaBuilder/resolveTypeToStructure.d.ts.map +1 -1
- package/dist/DBSchemaBuilder/resolveTypeToStructure.js +26 -35
- package/dist/DBSchemaBuilder/resolveTypeToStructure.js.map +1 -1
- package/lib/DBSchemaBuilder/getServerFunctionReturnTypes.ts +21 -1
- package/lib/DBSchemaBuilder/resolveTypeToStructure.ts +74 -35
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getServerFunctionReturnTypes.d.ts","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getServerFunctionReturnTypes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getServerFunctionReturnTypes.d.ts","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getServerFunctionReturnTypes.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,GAAI,cAAc,MAAM,kBA6ThE,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.getServerFunctionReturnTypes = void 0;
|
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const resolveTypeToStructure_1 = require("./resolveTypeToStructure");
|
|
7
|
+
let globalBuiltinsCache = undefined;
|
|
7
8
|
const getServerFunctionReturnTypes = (instancePath) => {
|
|
8
9
|
const configPath = ts.findConfigFile((0, path_1.dirname)(instancePath), (f) => ts.sys.fileExists(f));
|
|
9
10
|
if (!configPath)
|
|
@@ -17,6 +18,18 @@ const getServerFunctionReturnTypes = (instancePath) => {
|
|
|
17
18
|
if (!sf) {
|
|
18
19
|
throw new Error(`Source file not found: ${instancePath}`);
|
|
19
20
|
}
|
|
21
|
+
if (!globalBuiltinsCache || globalBuiltinsCache.instancePath !== instancePath) {
|
|
22
|
+
// get all global type symbols
|
|
23
|
+
const globals = checker
|
|
24
|
+
.getSymbolsInScope(program.getSourceFiles()[0], ts.SymbolFlags.Type)
|
|
25
|
+
.filter((sym) => sym.declarations?.some((d) => d.getSourceFile().hasNoDefaultLib))
|
|
26
|
+
.map((sym) => sym.getName());
|
|
27
|
+
globalBuiltinsCache = {
|
|
28
|
+
instancePath,
|
|
29
|
+
names: new Set(globals),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const globalBuiltins = globalBuiltinsCache.names;
|
|
20
33
|
const getActualSymbol = (symbol) => {
|
|
21
34
|
if (!symbol)
|
|
22
35
|
return undefined;
|
|
@@ -83,7 +96,7 @@ const getServerFunctionReturnTypes = (instancePath) => {
|
|
|
83
96
|
}
|
|
84
97
|
const rt = checker.getReturnTypeOfSignature(sig);
|
|
85
98
|
// const typeString = checker.typeToString(rt);
|
|
86
|
-
result.set(propertyName, (0, resolveTypeToStructure_1.resolveTypeToStructure)(propertyName, checker, rt));
|
|
99
|
+
result.set(propertyName, (0, resolveTypeToStructure_1.resolveTypeToStructure)(globalBuiltins, propertyName, checker, rt));
|
|
87
100
|
};
|
|
88
101
|
/**
|
|
89
102
|
* Check if a call expression is a define function call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getServerFunctionReturnTypes.js","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getServerFunctionReturnTypes.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,+BAA+B;AAC/B,qEAAkE;
|
|
1
|
+
{"version":3,"file":"getServerFunctionReturnTypes.js","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getServerFunctionReturnTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import * as ts from "typescript";
|
|
|
3
3
|
* Recursively resolve a type to its structural representation
|
|
4
4
|
* using only built-in/primitive types
|
|
5
5
|
*/
|
|
6
|
-
export declare const resolveTypeToStructure: (functionName: string, checker: ts.TypeChecker, type: ts.Type,
|
|
6
|
+
export declare const resolveTypeToStructure: (globalBuiltIns: Set<string>, functionName: string, checker: ts.TypeChecker, type: ts.Type, parentTypes?: ts.Type[], maxDepth?: number) => string;
|
|
7
7
|
//# sourceMappingURL=resolveTypeToStructure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTypeToStructure.d.ts","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/resolveTypeToStructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,cAAc,MAAM,EACpB,SAAS,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,CAAC,IAAI,EACb,
|
|
1
|
+
{"version":3,"file":"resolveTypeToStructure.d.ts","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/resolveTypeToStructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,gBAAgB,GAAG,CAAC,MAAM,CAAC,EAC3B,cAAc,MAAM,EACpB,SAAS,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,CAAC,IAAI,EACb,cAAa,EAAE,CAAC,IAAI,EAAO,EAC3B,iBAAa,KACZ,MA+NF,CAAC"}
|
|
@@ -6,11 +6,13 @@ const ts = require("typescript");
|
|
|
6
6
|
* Recursively resolve a type to its structural representation
|
|
7
7
|
* using only built-in/primitive types
|
|
8
8
|
*/
|
|
9
|
-
const resolveTypeToStructure = (functionName, checker, type,
|
|
9
|
+
const resolveTypeToStructure = (globalBuiltIns, functionName, checker, type, parentTypes = [], maxDepth = 10) => {
|
|
10
|
+
const depth = parentTypes.length;
|
|
10
11
|
if (depth > maxDepth) {
|
|
11
|
-
console.warn(`Max type resolution depth (${maxDepth}) reached for function ${JSON.stringify(functionName)} ReturnType
|
|
12
|
+
console.warn(`Max type resolution depth (${maxDepth}) reached for function ${JSON.stringify(functionName)} ReturnType`, parentTypes);
|
|
12
13
|
return "unknown";
|
|
13
14
|
}
|
|
15
|
+
const nextParentTypes = [...parentTypes, type];
|
|
14
16
|
// Handle primitive types
|
|
15
17
|
if (type.flags & ts.TypeFlags.String)
|
|
16
18
|
return "string";
|
|
@@ -43,23 +45,32 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
43
45
|
}
|
|
44
46
|
// Handle union types
|
|
45
47
|
if (type.isUnion()) {
|
|
46
|
-
const parts = type.types.map((t) => (0, exports.resolveTypeToStructure)(functionName, checker, t,
|
|
48
|
+
const parts = type.types.map((t) => (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, t, parentTypes));
|
|
47
49
|
// Deduplicate
|
|
48
50
|
const unique = [...new Set(parts)];
|
|
49
51
|
return unique.length === 1 ? unique[0] : unique.join(" | ");
|
|
50
52
|
}
|
|
51
53
|
// Handle intersection types
|
|
52
54
|
if (type.isIntersection()) {
|
|
53
|
-
const parts = type.types.map((t) => (0, exports.resolveTypeToStructure)(functionName, checker, t,
|
|
55
|
+
const parts = type.types.map((t) => (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, t, parentTypes));
|
|
54
56
|
return parts.join(" & ");
|
|
55
57
|
}
|
|
56
58
|
// Handle Promise<T> - unwrap to Promise<ResolvedT>
|
|
57
59
|
const symbol = type.getSymbol();
|
|
58
60
|
const typeName = symbol?.getName();
|
|
61
|
+
if (typeName && globalBuiltIns.has(typeName)) {
|
|
62
|
+
// Check for type arguments (e.g., ReadableStream<Uint8Array>)
|
|
63
|
+
const typeArgs = checker.getTypeArguments(type);
|
|
64
|
+
if (typeArgs.length > 0) {
|
|
65
|
+
const resolvedArgs = typeArgs.map((t) => (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, t, parentTypes));
|
|
66
|
+
return `${typeName}<${resolvedArgs.join(", ")}>`;
|
|
67
|
+
}
|
|
68
|
+
return typeName;
|
|
69
|
+
}
|
|
59
70
|
if (typeName === "Promise") {
|
|
60
71
|
const [typeArg] = checker.getTypeArguments(type);
|
|
61
72
|
if (typeArg) {
|
|
62
|
-
const innerType = (0, exports.resolveTypeToStructure)(functionName, checker, typeArg,
|
|
73
|
+
const innerType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, typeArg, nextParentTypes);
|
|
63
74
|
return `Promise<${innerType}>`;
|
|
64
75
|
}
|
|
65
76
|
return "Promise<unknown>";
|
|
@@ -68,7 +79,7 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
68
79
|
if (checker.isArrayType(type)) {
|
|
69
80
|
const [typeArg] = checker.getTypeArguments(type);
|
|
70
81
|
if (typeArg) {
|
|
71
|
-
const elementType = (0, exports.resolveTypeToStructure)(functionName, checker, typeArg,
|
|
82
|
+
const elementType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, typeArg, nextParentTypes);
|
|
72
83
|
return `${elementType}[]`;
|
|
73
84
|
}
|
|
74
85
|
return "unknown[]";
|
|
@@ -76,15 +87,15 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
76
87
|
// Handle tuple types
|
|
77
88
|
if (checker.isTupleType(type)) {
|
|
78
89
|
const typeArgs = checker.getTypeArguments(type);
|
|
79
|
-
const elements = typeArgs.map((t) => (0, exports.resolveTypeToStructure)(functionName, checker, t,
|
|
90
|
+
const elements = typeArgs.map((t) => (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, t, nextParentTypes));
|
|
80
91
|
return `[${elements.join(", ")}]`;
|
|
81
92
|
}
|
|
82
93
|
// Handle Map<K, V>
|
|
83
94
|
if (typeName === "Map") {
|
|
84
95
|
const typeArgs = checker.getTypeArguments(type);
|
|
85
96
|
if (typeArgs.length === 2) {
|
|
86
|
-
const keyType = (0, exports.resolveTypeToStructure)(functionName, checker, typeArgs[0],
|
|
87
|
-
const valueType = (0, exports.resolveTypeToStructure)(functionName, checker, typeArgs[1],
|
|
97
|
+
const keyType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, typeArgs[0], nextParentTypes);
|
|
98
|
+
const valueType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, typeArgs[1], nextParentTypes);
|
|
88
99
|
return `Map<${keyType}, ${valueType}>`;
|
|
89
100
|
}
|
|
90
101
|
return "Map<unknown, unknown>";
|
|
@@ -93,42 +104,22 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
93
104
|
if (typeName === "Set") {
|
|
94
105
|
const typeArgs = checker.getTypeArguments(type);
|
|
95
106
|
if (typeArgs.length > 0) {
|
|
96
|
-
const elementType = (0, exports.resolveTypeToStructure)(functionName, checker, typeArgs[0],
|
|
107
|
+
const elementType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, typeArgs[0], nextParentTypes);
|
|
97
108
|
return `Set<${elementType}>`;
|
|
98
109
|
}
|
|
99
110
|
return "Set<unknown>";
|
|
100
111
|
}
|
|
101
|
-
// Handle Date, Error, RegExp, etc. (global built-in types)
|
|
102
|
-
const globalBuiltIns = [
|
|
103
|
-
"Date",
|
|
104
|
-
"Error",
|
|
105
|
-
"RegExp",
|
|
106
|
-
"URL",
|
|
107
|
-
"URLSearchParams",
|
|
108
|
-
"Buffer",
|
|
109
|
-
"Blob",
|
|
110
|
-
"File",
|
|
111
|
-
"FormData",
|
|
112
|
-
"Headers",
|
|
113
|
-
"Request",
|
|
114
|
-
"Response",
|
|
115
|
-
"ReadableStream",
|
|
116
|
-
"WritableStream",
|
|
117
|
-
];
|
|
118
|
-
if (typeName && globalBuiltIns.includes(typeName)) {
|
|
119
|
-
return typeName;
|
|
120
|
-
}
|
|
121
112
|
// Handle function types
|
|
122
113
|
const callSignatures = type.getCallSignatures();
|
|
123
114
|
if (callSignatures.length > 0) {
|
|
124
115
|
const sig = callSignatures[0];
|
|
125
116
|
const params = sig.getParameters().map((param) => {
|
|
126
117
|
const paramType = checker.getTypeOfSymbolAtLocation(param, param.valueDeclaration);
|
|
127
|
-
const paramTypeStr = (0, exports.resolveTypeToStructure)(functionName, checker, paramType,
|
|
118
|
+
const paramTypeStr = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, paramType, nextParentTypes);
|
|
128
119
|
const isOptional = param.flags & ts.SymbolFlags.Optional;
|
|
129
120
|
return `${param.getName()}${isOptional ? "?" : ""}: ${paramTypeStr}`;
|
|
130
121
|
});
|
|
131
|
-
const returnType = (0, exports.resolveTypeToStructure)(functionName, checker, checker.getReturnTypeOfSignature(sig),
|
|
122
|
+
const returnType = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, checker.getReturnTypeOfSignature(sig), nextParentTypes);
|
|
132
123
|
return `(${params.join(", ")}) => ${returnType}`;
|
|
133
124
|
}
|
|
134
125
|
// Handle object types - expand to structural form
|
|
@@ -140,7 +131,7 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
140
131
|
if (!propDecl)
|
|
141
132
|
continue;
|
|
142
133
|
const propType = checker.getTypeOfSymbolAtLocation(prop, propDecl);
|
|
143
|
-
const propTypeStr = (0, exports.resolveTypeToStructure)(functionName, checker, propType,
|
|
134
|
+
const propTypeStr = (0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, propType, parentTypes);
|
|
144
135
|
const isOptional = prop.flags & ts.SymbolFlags.Optional;
|
|
145
136
|
const propName = prop.getName();
|
|
146
137
|
// Handle property names that need quoting
|
|
@@ -152,10 +143,10 @@ const resolveTypeToStructure = (functionName, checker, type, depth = 0, maxDepth
|
|
|
152
143
|
const stringIndexType = type.getStringIndexType();
|
|
153
144
|
const numberIndexType = type.getNumberIndexType();
|
|
154
145
|
if (stringIndexType) {
|
|
155
|
-
members.push(`[key: string]: ${(0, exports.resolveTypeToStructure)(functionName, checker, stringIndexType,
|
|
146
|
+
members.push(`[key: string]: ${(0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, stringIndexType, nextParentTypes)}`);
|
|
156
147
|
}
|
|
157
148
|
if (numberIndexType) {
|
|
158
|
-
members.push(`[key: number]: ${(0, exports.resolveTypeToStructure)(functionName, checker, numberIndexType,
|
|
149
|
+
members.push(`[key: number]: ${(0, exports.resolveTypeToStructure)(globalBuiltIns, functionName, checker, numberIndexType, nextParentTypes)}`);
|
|
159
150
|
}
|
|
160
151
|
if (members.length === 0) {
|
|
161
152
|
// Empty object or object with no enumerable properties
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTypeToStructure.js","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/resolveTypeToStructure.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC;;;GAGG;AACI,MAAM,sBAAsB,GAAG,CACpC,YAAoB,EACpB,OAAuB,EACvB,IAAa,EACb,
|
|
1
|
+
{"version":3,"file":"resolveTypeToStructure.js","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/resolveTypeToStructure.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,13 @@ import * as ts from "typescript";
|
|
|
2
2
|
import { dirname } from "path";
|
|
3
3
|
import { resolveTypeToStructure } from "./resolveTypeToStructure";
|
|
4
4
|
|
|
5
|
+
let globalBuiltinsCache:
|
|
6
|
+
| {
|
|
7
|
+
instancePath: string;
|
|
8
|
+
names: Set<string>;
|
|
9
|
+
}
|
|
10
|
+
| undefined = undefined;
|
|
11
|
+
|
|
5
12
|
export const getServerFunctionReturnTypes = (instancePath: string) => {
|
|
6
13
|
const configPath = ts.findConfigFile(dirname(instancePath), (f) => ts.sys.fileExists(f));
|
|
7
14
|
if (!configPath) throw new Error("tsconfig.json not found");
|
|
@@ -18,6 +25,19 @@ export const getServerFunctionReturnTypes = (instancePath: string) => {
|
|
|
18
25
|
throw new Error(`Source file not found: ${instancePath}`);
|
|
19
26
|
}
|
|
20
27
|
|
|
28
|
+
if (!globalBuiltinsCache || globalBuiltinsCache.instancePath !== instancePath) {
|
|
29
|
+
// get all global type symbols
|
|
30
|
+
const globals = checker
|
|
31
|
+
.getSymbolsInScope(program.getSourceFiles()[0]!, ts.SymbolFlags.Type)
|
|
32
|
+
.filter((sym) => sym.declarations?.some((d) => d.getSourceFile().hasNoDefaultLib))
|
|
33
|
+
.map((sym) => sym.getName());
|
|
34
|
+
globalBuiltinsCache = {
|
|
35
|
+
instancePath,
|
|
36
|
+
names: new Set(globals),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const globalBuiltins = globalBuiltinsCache.names;
|
|
40
|
+
|
|
21
41
|
const getActualSymbol = (symbol: ts.Symbol | undefined) => {
|
|
22
42
|
if (!symbol) return undefined;
|
|
23
43
|
if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
@@ -89,7 +109,7 @@ export const getServerFunctionReturnTypes = (instancePath: string) => {
|
|
|
89
109
|
|
|
90
110
|
const rt = checker.getReturnTypeOfSignature(sig);
|
|
91
111
|
// const typeString = checker.typeToString(rt);
|
|
92
|
-
result.set(propertyName, resolveTypeToStructure(propertyName, checker, rt));
|
|
112
|
+
result.set(propertyName, resolveTypeToStructure(globalBuiltins, propertyName, checker, rt));
|
|
93
113
|
};
|
|
94
114
|
|
|
95
115
|
/**
|
|
@@ -5,19 +5,24 @@ import * as ts from "typescript";
|
|
|
5
5
|
* using only built-in/primitive types
|
|
6
6
|
*/
|
|
7
7
|
export const resolveTypeToStructure = (
|
|
8
|
+
globalBuiltIns: Set<string>,
|
|
8
9
|
functionName: string,
|
|
9
10
|
checker: ts.TypeChecker,
|
|
10
11
|
type: ts.Type,
|
|
11
|
-
|
|
12
|
+
parentTypes: ts.Type[] = [],
|
|
12
13
|
maxDepth = 10,
|
|
13
14
|
): string => {
|
|
15
|
+
const depth = parentTypes.length;
|
|
14
16
|
if (depth > maxDepth) {
|
|
15
17
|
console.warn(
|
|
16
18
|
`Max type resolution depth (${maxDepth}) reached for function ${JSON.stringify(functionName)} ReturnType`,
|
|
19
|
+
parentTypes,
|
|
17
20
|
);
|
|
18
21
|
return "unknown";
|
|
19
22
|
}
|
|
20
23
|
|
|
24
|
+
const nextParentTypes = [...parentTypes, type];
|
|
25
|
+
|
|
21
26
|
// Handle primitive types
|
|
22
27
|
if (type.flags & ts.TypeFlags.String) return "string";
|
|
23
28
|
if (type.flags & ts.TypeFlags.Number) return "number";
|
|
@@ -41,7 +46,7 @@ export const resolveTypeToStructure = (
|
|
|
41
46
|
// Handle union types
|
|
42
47
|
if (type.isUnion()) {
|
|
43
48
|
const parts = type.types.map((t) =>
|
|
44
|
-
resolveTypeToStructure(functionName, checker, t,
|
|
49
|
+
resolveTypeToStructure(globalBuiltIns, functionName, checker, t, parentTypes),
|
|
45
50
|
);
|
|
46
51
|
// Deduplicate
|
|
47
52
|
const unique = [...new Set(parts)];
|
|
@@ -51,7 +56,7 @@ export const resolveTypeToStructure = (
|
|
|
51
56
|
// Handle intersection types
|
|
52
57
|
if (type.isIntersection()) {
|
|
53
58
|
const parts = type.types.map((t) =>
|
|
54
|
-
resolveTypeToStructure(functionName, checker, t,
|
|
59
|
+
resolveTypeToStructure(globalBuiltIns, functionName, checker, t, parentTypes),
|
|
55
60
|
);
|
|
56
61
|
return parts.join(" & ");
|
|
57
62
|
}
|
|
@@ -60,10 +65,28 @@ export const resolveTypeToStructure = (
|
|
|
60
65
|
const symbol = type.getSymbol();
|
|
61
66
|
const typeName = symbol?.getName();
|
|
62
67
|
|
|
68
|
+
if (typeName && globalBuiltIns.has(typeName)) {
|
|
69
|
+
// Check for type arguments (e.g., ReadableStream<Uint8Array>)
|
|
70
|
+
const typeArgs = checker.getTypeArguments(type as ts.TypeReference);
|
|
71
|
+
if (typeArgs.length > 0) {
|
|
72
|
+
const resolvedArgs = typeArgs.map((t) =>
|
|
73
|
+
resolveTypeToStructure(globalBuiltIns, functionName, checker, t, parentTypes),
|
|
74
|
+
);
|
|
75
|
+
return `${typeName}<${resolvedArgs.join(", ")}>`;
|
|
76
|
+
}
|
|
77
|
+
return typeName;
|
|
78
|
+
}
|
|
79
|
+
|
|
63
80
|
if (typeName === "Promise") {
|
|
64
81
|
const [typeArg] = checker.getTypeArguments(type as ts.TypeReference);
|
|
65
82
|
if (typeArg) {
|
|
66
|
-
const innerType = resolveTypeToStructure(
|
|
83
|
+
const innerType = resolveTypeToStructure(
|
|
84
|
+
globalBuiltIns,
|
|
85
|
+
functionName,
|
|
86
|
+
checker,
|
|
87
|
+
typeArg,
|
|
88
|
+
nextParentTypes,
|
|
89
|
+
);
|
|
67
90
|
return `Promise<${innerType}>`;
|
|
68
91
|
}
|
|
69
92
|
return "Promise<unknown>";
|
|
@@ -73,7 +96,13 @@ export const resolveTypeToStructure = (
|
|
|
73
96
|
if (checker.isArrayType(type)) {
|
|
74
97
|
const [typeArg] = checker.getTypeArguments(type as ts.TypeReference);
|
|
75
98
|
if (typeArg) {
|
|
76
|
-
const elementType = resolveTypeToStructure(
|
|
99
|
+
const elementType = resolveTypeToStructure(
|
|
100
|
+
globalBuiltIns,
|
|
101
|
+
functionName,
|
|
102
|
+
checker,
|
|
103
|
+
typeArg,
|
|
104
|
+
nextParentTypes,
|
|
105
|
+
);
|
|
77
106
|
return `${elementType}[]`;
|
|
78
107
|
}
|
|
79
108
|
return "unknown[]";
|
|
@@ -83,7 +112,7 @@ export const resolveTypeToStructure = (
|
|
|
83
112
|
if (checker.isTupleType(type)) {
|
|
84
113
|
const typeArgs = checker.getTypeArguments(type as ts.TypeReference);
|
|
85
114
|
const elements = typeArgs.map((t) =>
|
|
86
|
-
resolveTypeToStructure(functionName, checker, t,
|
|
115
|
+
resolveTypeToStructure(globalBuiltIns, functionName, checker, t, nextParentTypes),
|
|
87
116
|
);
|
|
88
117
|
return `[${elements.join(", ")}]`;
|
|
89
118
|
}
|
|
@@ -92,8 +121,20 @@ export const resolveTypeToStructure = (
|
|
|
92
121
|
if (typeName === "Map") {
|
|
93
122
|
const typeArgs = checker.getTypeArguments(type as ts.TypeReference);
|
|
94
123
|
if (typeArgs.length === 2) {
|
|
95
|
-
const keyType = resolveTypeToStructure(
|
|
96
|
-
|
|
124
|
+
const keyType = resolveTypeToStructure(
|
|
125
|
+
globalBuiltIns,
|
|
126
|
+
functionName,
|
|
127
|
+
checker,
|
|
128
|
+
typeArgs[0]!,
|
|
129
|
+
nextParentTypes,
|
|
130
|
+
);
|
|
131
|
+
const valueType = resolveTypeToStructure(
|
|
132
|
+
globalBuiltIns,
|
|
133
|
+
functionName,
|
|
134
|
+
checker,
|
|
135
|
+
typeArgs[1]!,
|
|
136
|
+
nextParentTypes,
|
|
137
|
+
);
|
|
97
138
|
return `Map<${keyType}, ${valueType}>`;
|
|
98
139
|
}
|
|
99
140
|
return "Map<unknown, unknown>";
|
|
@@ -103,48 +144,40 @@ export const resolveTypeToStructure = (
|
|
|
103
144
|
if (typeName === "Set") {
|
|
104
145
|
const typeArgs = checker.getTypeArguments(type as ts.TypeReference);
|
|
105
146
|
if (typeArgs.length > 0) {
|
|
106
|
-
const elementType = resolveTypeToStructure(
|
|
147
|
+
const elementType = resolveTypeToStructure(
|
|
148
|
+
globalBuiltIns,
|
|
149
|
+
functionName,
|
|
150
|
+
checker,
|
|
151
|
+
typeArgs[0]!,
|
|
152
|
+
nextParentTypes,
|
|
153
|
+
);
|
|
107
154
|
return `Set<${elementType}>`;
|
|
108
155
|
}
|
|
109
156
|
return "Set<unknown>";
|
|
110
157
|
}
|
|
111
158
|
|
|
112
|
-
// Handle Date, Error, RegExp, etc. (global built-in types)
|
|
113
|
-
const globalBuiltIns = [
|
|
114
|
-
"Date",
|
|
115
|
-
"Error",
|
|
116
|
-
"RegExp",
|
|
117
|
-
"URL",
|
|
118
|
-
"URLSearchParams",
|
|
119
|
-
"Buffer",
|
|
120
|
-
"Blob",
|
|
121
|
-
"File",
|
|
122
|
-
"FormData",
|
|
123
|
-
"Headers",
|
|
124
|
-
"Request",
|
|
125
|
-
"Response",
|
|
126
|
-
"ReadableStream",
|
|
127
|
-
"WritableStream",
|
|
128
|
-
];
|
|
129
|
-
if (typeName && globalBuiltIns.includes(typeName)) {
|
|
130
|
-
return typeName;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
159
|
// Handle function types
|
|
134
160
|
const callSignatures = type.getCallSignatures();
|
|
135
161
|
if (callSignatures.length > 0) {
|
|
136
162
|
const sig = callSignatures[0]!;
|
|
137
163
|
const params = sig.getParameters().map((param) => {
|
|
138
164
|
const paramType = checker.getTypeOfSymbolAtLocation(param, param.valueDeclaration!);
|
|
139
|
-
const paramTypeStr = resolveTypeToStructure(
|
|
165
|
+
const paramTypeStr = resolveTypeToStructure(
|
|
166
|
+
globalBuiltIns,
|
|
167
|
+
functionName,
|
|
168
|
+
checker,
|
|
169
|
+
paramType,
|
|
170
|
+
nextParentTypes,
|
|
171
|
+
);
|
|
140
172
|
const isOptional = param.flags & ts.SymbolFlags.Optional;
|
|
141
173
|
return `${param.getName()}${isOptional ? "?" : ""}: ${paramTypeStr}`;
|
|
142
174
|
});
|
|
143
175
|
const returnType = resolveTypeToStructure(
|
|
176
|
+
globalBuiltIns,
|
|
144
177
|
functionName,
|
|
145
178
|
checker,
|
|
146
179
|
checker.getReturnTypeOfSignature(sig),
|
|
147
|
-
|
|
180
|
+
nextParentTypes,
|
|
148
181
|
);
|
|
149
182
|
return `(${params.join(", ")}) => ${returnType}`;
|
|
150
183
|
}
|
|
@@ -159,7 +192,13 @@ export const resolveTypeToStructure = (
|
|
|
159
192
|
if (!propDecl) continue;
|
|
160
193
|
|
|
161
194
|
const propType = checker.getTypeOfSymbolAtLocation(prop, propDecl);
|
|
162
|
-
const propTypeStr = resolveTypeToStructure(
|
|
195
|
+
const propTypeStr = resolveTypeToStructure(
|
|
196
|
+
globalBuiltIns,
|
|
197
|
+
functionName,
|
|
198
|
+
checker,
|
|
199
|
+
propType,
|
|
200
|
+
parentTypes,
|
|
201
|
+
);
|
|
163
202
|
const isOptional = prop.flags & ts.SymbolFlags.Optional;
|
|
164
203
|
const propName = prop.getName();
|
|
165
204
|
|
|
@@ -176,12 +215,12 @@ export const resolveTypeToStructure = (
|
|
|
176
215
|
|
|
177
216
|
if (stringIndexType) {
|
|
178
217
|
members.push(
|
|
179
|
-
`[key: string]: ${resolveTypeToStructure(functionName, checker, stringIndexType,
|
|
218
|
+
`[key: string]: ${resolveTypeToStructure(globalBuiltIns, functionName, checker, stringIndexType, nextParentTypes)}`,
|
|
180
219
|
);
|
|
181
220
|
}
|
|
182
221
|
if (numberIndexType) {
|
|
183
222
|
members.push(
|
|
184
|
-
`[key: number]: ${resolveTypeToStructure(functionName, checker, numberIndexType,
|
|
223
|
+
`[key: number]: ${resolveTypeToStructure(globalBuiltIns, functionName, checker, numberIndexType, nextParentTypes)}`,
|
|
185
224
|
);
|
|
186
225
|
}
|
|
187
226
|
|