ts-json-schema-generator 2.4.1-next.0 → 2.5.0--canary.76e1a68.0
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/README.md +22 -21
- package/dist/factory/generator.js +1 -1
- package/dist/factory/generator.js.map +1 -1
- package/dist/factory/parser.js +11 -2
- package/dist/factory/parser.js.map +1 -1
- package/dist/package.json +23 -22
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.d.ts +2 -1
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.js +22 -10
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.js.map +1 -1
- package/dist/src/Config.d.ts +5 -2
- package/dist/src/Config.js +1 -0
- package/dist/src/Config.js.map +1 -1
- package/dist/src/NodeParser/IdentifierNodeParser.d.ts +11 -0
- package/dist/src/NodeParser/IdentifierNodeParser.js +33 -0
- package/dist/src/NodeParser/IdentifierNodeParser.js.map +1 -0
- package/dist/src/NodeParser/MappedTypeNodeParser.js +4 -1
- package/dist/src/NodeParser/MappedTypeNodeParser.js.map +1 -1
- package/dist/src/NodeParser/NewExpressionParser.d.ts +13 -0
- package/dist/src/NodeParser/NewExpressionParser.js +41 -0
- package/dist/src/NodeParser/NewExpressionParser.js.map +1 -0
- package/dist/src/NodeParser/SpreadElementNodeParser.d.ts +10 -0
- package/dist/src/NodeParser/SpreadElementNodeParser.js +21 -0
- package/dist/src/NodeParser/SpreadElementNodeParser.js.map +1 -0
- package/dist/src/NodeParser/TypeOperatorNodeParser.d.ts +1 -1
- package/dist/src/NodeParser/TypeOperatorNodeParser.js +2 -1
- package/dist/src/NodeParser/TypeOperatorNodeParser.js.map +1 -1
- package/dist/src/NodeParser/TypeReferenceNodeParser.js +1 -1
- package/dist/src/NodeParser/TypeReferenceNodeParser.js.map +1 -1
- package/dist/src/SchemaGenerator.d.ts +2 -2
- package/dist/src/SchemaGenerator.js +17 -7
- package/dist/src/SchemaGenerator.js.map +1 -1
- package/dist/src/TypeFormatter/LiteralUnionTypeFormatter.js +10 -5
- package/dist/src/TypeFormatter/LiteralUnionTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/PrimitiveUnionTypeFormatter.js +6 -2
- package/dist/src/TypeFormatter/PrimitiveUnionTypeFormatter.js.map +1 -1
- package/dist/src/Utils/castArray.d.ts +1 -0
- package/dist/src/Utils/castArray.js +10 -0
- package/dist/src/Utils/castArray.js.map +1 -0
- package/dist/src/Utils/derefType.d.ts +1 -0
- package/dist/src/Utils/derefType.js +13 -0
- package/dist/src/Utils/derefType.js.map +1 -1
- package/dist/src/Utils/getFullDescription.d.ts +2 -0
- package/dist/src/Utils/getFullDescription.js +33 -0
- package/dist/src/Utils/getFullDescription.js.map +1 -0
- package/dist/ts-json-schema-generator.js +7 -3
- package/dist/ts-json-schema-generator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/factory/generator.ts +1 -1
- package/factory/parser.ts +17 -2
- package/package.json +23 -22
- package/src/AnnotationsReader/ExtendedAnnotationsReader.ts +25 -10
- package/src/Config.ts +124 -2
- package/src/NodeParser/IdentifierNodeParser.ts +38 -0
- package/src/NodeParser/MappedTypeNodeParser.ts +6 -2
- package/src/NodeParser/NewExpressionParser.ts +46 -0
- package/src/NodeParser/SpreadElementNodeParser.ts +25 -0
- package/src/NodeParser/TypeOperatorNodeParser.ts +2 -2
- package/src/NodeParser/TypeReferenceNodeParser.ts +1 -1
- package/src/SchemaGenerator.ts +26 -9
- package/src/TypeFormatter/LiteralUnionTypeFormatter.ts +12 -6
- package/src/TypeFormatter/PrimitiveUnionTypeFormatter.ts +9 -2
- package/src/Utils/castArray.ts +7 -0
- package/src/Utils/derefType.ts +19 -0
- package/src/Utils/getFullDescription.ts +39 -0
- package/ts-json-schema-generator.ts +12 -3
package/README.md
CHANGED
|
@@ -8,9 +8,9 @@ Extended version of [https://github.com/xiag-ag/typescript-to-json-schema](https
|
|
|
8
8
|
|
|
9
9
|
Inspired by [`YousefED/typescript-json-schema`](https://github.com/YousefED/typescript-json-schema). Here's the differences list:
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
11
|
+
- this implementation avoids the use of `typeChecker.getTypeAtLocation()` (so probably it keeps correct type aliases)
|
|
12
|
+
- processing AST and formatting JSON schema have been split into two independent steps
|
|
13
|
+
- not exported types, interfaces, enums are not exposed in the `definitions` section in the JSON schema
|
|
14
14
|
|
|
15
15
|
## Contributors
|
|
16
16
|
|
|
@@ -47,6 +47,7 @@ By default, the command-line generator will use the `tsconfig.json` file in the
|
|
|
47
47
|
-e, --expose <expose> Type exposing (choices: "all", "none", "export", default: "export")
|
|
48
48
|
-j, --jsDoc <extended> Read JsDoc annotations (choices: "none", "basic", "extended", default: "extended")
|
|
49
49
|
--markdown-description Generate `markdownDescription` in addition to `description`.
|
|
50
|
+
--full-description Include the full raw JSDoc comment as `fullDescription` in the schema.
|
|
50
51
|
--functions <functions> How to handle functions. `fail` will throw an error. `comment` will add a comment. `hide` will treat the function like a NeverType or HiddenType.
|
|
51
52
|
(choices: "fail", "comment", "hide", default: "comment")
|
|
52
53
|
--minify Minify generated schema (default: false)
|
|
@@ -221,20 +222,20 @@ fs.writeFile(outputPath, schemaString, (err) => {
|
|
|
221
222
|
|
|
222
223
|
## Current state
|
|
223
224
|
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
-
|
|
225
|
+
- `interface` types
|
|
226
|
+
- `enum` types
|
|
227
|
+
- `union`, `tuple`, `type[]` types
|
|
228
|
+
- `Date`, `RegExp`, `URL` types
|
|
229
|
+
- `string`, `boolean`, `number` types
|
|
230
|
+
- `"value"`, `123`, `true`, `false`, `null`, `undefined` literals
|
|
231
|
+
- type aliases
|
|
232
|
+
- generics
|
|
233
|
+
- `typeof`
|
|
234
|
+
- `keyof`
|
|
235
|
+
- conditional types
|
|
236
|
+
- functions
|
|
237
|
+
- `Promise<T>` unwraps to `T`
|
|
238
|
+
- Overrides (like `@format`)
|
|
238
239
|
|
|
239
240
|
## Run locally
|
|
240
241
|
|
|
@@ -252,7 +253,7 @@ And connect via the debugger protocol.
|
|
|
252
253
|
|
|
253
254
|
Publishing is handled by a 2-branch [pre-release process](https://intuit.github.io/auto/docs/generated/shipit#next-branch-default), configured in `publish-auto.yml`. All changes should be based off the default `next` branch, and are published automatically.
|
|
254
255
|
|
|
255
|
-
-
|
|
256
|
-
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
256
|
+
- PRs made into the default branch are auto-deployed to the `next` pre-release tag on NPM. The result can be installed with `npm install ts-json-schema-generator@next`
|
|
257
|
+
- When merging into `next`, please use the `squash and merge` strategy.
|
|
258
|
+
- To release a new stable version, open a PR from `next` into `stable` using this [compare link](https://github.com/vega/ts-json-schema-generator/compare/stable...next).
|
|
259
|
+
- When merging from `next` into `stable`, please use the `create a merge commit` strategy.
|
|
@@ -8,7 +8,7 @@ const parser_js_1 = require("./parser.js");
|
|
|
8
8
|
const program_js_1 = require("./program.js");
|
|
9
9
|
function createGenerator(config) {
|
|
10
10
|
const completedConfig = { ...Config_js_1.DEFAULT_CONFIG, ...config };
|
|
11
|
-
const program = (0, program_js_1.createProgram)(completedConfig);
|
|
11
|
+
const program = config.tsProgram || (0, program_js_1.createProgram)(completedConfig);
|
|
12
12
|
const parser = (0, parser_js_1.createParser)(program, completedConfig);
|
|
13
13
|
const formatter = (0, formatter_js_1.createFormatter)(completedConfig);
|
|
14
14
|
return new SchemaGenerator_js_1.SchemaGenerator(program, parser, formatter, completedConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../factory/generator.ts"],"names":[],"mappings":";;AAOA,0CAOC;AAbD,gDAAkD;AAClD,kEAA4D;AAC5D,iDAAiD;AACjD,2CAA2C;AAC3C,6CAA6C;AAE7C,SAAgB,eAAe,CAAC,MAAc;IAC1C,MAAM,eAAe,GAAG,EAAE,GAAG,0BAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,IAAA,0BAAa,EAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../factory/generator.ts"],"names":[],"mappings":";;AAOA,0CAOC;AAbD,gDAAkD;AAClD,kEAA4D;AAC5D,iDAAiD;AACjD,2CAA2C;AAC3C,6CAA6C;AAE7C,SAAgB,eAAe,CAAC,MAAc;IAC1C,MAAM,eAAe,GAAG,EAAE,GAAG,0BAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,IAAA,0BAAa,EAAC,eAAe,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAA,8BAAe,EAAC,eAAe,CAAC,CAAC;IAEnD,OAAO,IAAI,oCAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC5E,CAAC"}
|
package/dist/factory/parser.js
CHANGED
|
@@ -15,6 +15,7 @@ const BooleanLiteralNodeParser_js_1 = require("../src/NodeParser/BooleanLiteralN
|
|
|
15
15
|
const BooleanTypeNodeParser_js_1 = require("../src/NodeParser/BooleanTypeNodeParser.js");
|
|
16
16
|
const CallExpressionParser_js_1 = require("../src/NodeParser/CallExpressionParser.js");
|
|
17
17
|
const ConditionalTypeNodeParser_js_1 = require("../src/NodeParser/ConditionalTypeNodeParser.js");
|
|
18
|
+
const NewExpressionParser_js_1 = require("../src/NodeParser/NewExpressionParser.js");
|
|
18
19
|
const ConstructorNodeParser_js_1 = require("../src/NodeParser/ConstructorNodeParser.js");
|
|
19
20
|
const EnumNodeParser_js_1 = require("../src/NodeParser/EnumNodeParser.js");
|
|
20
21
|
const ExpressionWithTypeArgumentsNodeParser_js_1 = require("../src/NodeParser/ExpressionWithTypeArgumentsNodeParser.js");
|
|
@@ -57,6 +58,9 @@ const VoidTypeNodeParser_js_1 = require("../src/NodeParser/VoidTypeNodeParser.js
|
|
|
57
58
|
const TopRefNodeParser_js_1 = require("../src/TopRefNodeParser.js");
|
|
58
59
|
const SatisfiesNodeParser_js_1 = require("../src/NodeParser/SatisfiesNodeParser.js");
|
|
59
60
|
const PromiseNodeParser_js_1 = require("../src/NodeParser/PromiseNodeParser.js");
|
|
61
|
+
const SpreadElementNodeParser_js_1 = require("../src/NodeParser/SpreadElementNodeParser.js");
|
|
62
|
+
const IdentifierNodeParser_js_1 = require("../src/NodeParser/IdentifierNodeParser.js");
|
|
63
|
+
const castArray_js_1 = require("../src/Utils/castArray.js");
|
|
60
64
|
function createParser(program, config, augmentor) {
|
|
61
65
|
const typeChecker = program.getTypeChecker();
|
|
62
66
|
const chainNodeParser = new ChainNodeParser_js_1.ChainNodeParser(typeChecker, []);
|
|
@@ -64,12 +68,14 @@ function createParser(program, config, augmentor) {
|
|
|
64
68
|
return new ExposeNodeParser_js_1.ExposeNodeParser(typeChecker, nodeParser, config.expose, config.jsDoc);
|
|
65
69
|
}
|
|
66
70
|
function withTopRef(nodeParser) {
|
|
67
|
-
|
|
71
|
+
const typeArr = (0, castArray_js_1.castArray)(config.type);
|
|
72
|
+
const topRefFullName = typeArr && typeArr.length === 1 ? typeArr[0] : undefined;
|
|
73
|
+
return new TopRefNodeParser_js_1.TopRefNodeParser(chainNodeParser, topRefFullName, config.topRef);
|
|
68
74
|
}
|
|
69
75
|
function withJsDoc(nodeParser) {
|
|
70
76
|
const extraTags = new Set(config.extraTags);
|
|
71
77
|
if (config.jsDoc === "extended") {
|
|
72
|
-
return new AnnotatedNodeParser_js_1.AnnotatedNodeParser(nodeParser, new ExtendedAnnotationsReader_js_1.ExtendedAnnotationsReader(typeChecker, extraTags, config.markdownDescription));
|
|
78
|
+
return new AnnotatedNodeParser_js_1.AnnotatedNodeParser(nodeParser, new ExtendedAnnotationsReader_js_1.ExtendedAnnotationsReader(typeChecker, extraTags, config.markdownDescription, config.fullDescription));
|
|
73
79
|
}
|
|
74
80
|
else if (config.jsDoc === "basic") {
|
|
75
81
|
return new AnnotatedNodeParser_js_1.AnnotatedNodeParser(nodeParser, new BasicAnnotationsReader_js_1.BasicAnnotationsReader(extraTags));
|
|
@@ -125,7 +131,10 @@ function createParser(program, config, augmentor) {
|
|
|
125
131
|
.addNodeParser(new NamedTupleMemberNodeParser_js_1.NamedTupleMemberNodeParser(chainNodeParser))
|
|
126
132
|
.addNodeParser(new OptionalTypeNodeParser_js_1.OptionalTypeNodeParser(chainNodeParser))
|
|
127
133
|
.addNodeParser(new RestTypeNodeParser_js_1.RestTypeNodeParser(chainNodeParser))
|
|
134
|
+
.addNodeParser(new IdentifierNodeParser_js_1.IdentifierNodeParser(chainNodeParser, typeChecker))
|
|
135
|
+
.addNodeParser(new SpreadElementNodeParser_js_1.SpreadElementNodeParser(chainNodeParser))
|
|
128
136
|
.addNodeParser(new CallExpressionParser_js_1.CallExpressionParser(typeChecker, chainNodeParser))
|
|
137
|
+
.addNodeParser(new NewExpressionParser_js_1.NewExpressionParser(typeChecker, chainNodeParser))
|
|
129
138
|
.addNodeParser(new PropertyAccessExpressionParser_js_1.PropertyAccessExpressionParser(typeChecker, chainNodeParser))
|
|
130
139
|
.addNodeParser(withCircular(withExpose(withJsDoc(new TypeAliasNodeParser_js_1.TypeAliasNodeParser(typeChecker, chainNodeParser)))))
|
|
131
140
|
.addNodeParser(withExpose(withJsDoc(new EnumNodeParser_js_1.EnumNodeParser(typeChecker))))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../factory/parser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../factory/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-json-schema-generator",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0--canary.76e1a68.0",
|
|
4
4
|
"description": "Generate JSON schema from your Typescript sources",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ts",
|
|
@@ -57,43 +57,44 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@types/json-schema": "^7.0.15",
|
|
60
|
-
"commander": "^
|
|
61
|
-
"glob": "^
|
|
60
|
+
"commander": "^14.0.0",
|
|
61
|
+
"glob": "^13.0.0",
|
|
62
62
|
"json5": "^2.2.3",
|
|
63
63
|
"normalize-path": "^3.0.0",
|
|
64
64
|
"safe-stable-stringify": "^2.5.0",
|
|
65
65
|
"tslib": "^2.8.1",
|
|
66
|
-
"typescript": "^5.8.
|
|
66
|
+
"typescript": "^5.8.3",
|
|
67
|
+
"@typescript/vfs": "1.6.2"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
70
|
"@auto-it/conventional-commits": "^11.3.0",
|
|
70
71
|
"@auto-it/first-time-contributor": "^11.3.0",
|
|
71
|
-
"@babel/core": "^7.
|
|
72
|
-
"@babel/preset-env": "^7.
|
|
73
|
-
"@babel/preset-typescript": "^7.27.
|
|
74
|
-
"@eslint/js": "^9.
|
|
72
|
+
"@babel/core": "^7.28.0",
|
|
73
|
+
"@babel/preset-env": "^7.28.0",
|
|
74
|
+
"@babel/preset-typescript": "^7.27.1",
|
|
75
|
+
"@eslint/js": "^9.30.1",
|
|
75
76
|
"@types/eslint": "^9.6.1",
|
|
76
|
-
"@types/
|
|
77
|
-
"@types/
|
|
78
|
-
"@types/node": "^22.13.14",
|
|
77
|
+
"@types/jest": "^30.0.0",
|
|
78
|
+
"@types/node": "^24.0.10",
|
|
79
79
|
"@types/normalize-path": "^3.0.2",
|
|
80
80
|
"ajv": "^8.17.1",
|
|
81
81
|
"ajv-formats": "^3.0.1",
|
|
82
82
|
"auto": "^11.3.0",
|
|
83
|
-
"chai": "^
|
|
84
|
-
"cross-env": "^
|
|
85
|
-
"eslint": "9.
|
|
86
|
-
"eslint-config-prettier": "^10.1.
|
|
87
|
-
"eslint-plugin-prettier": "^5.
|
|
88
|
-
"
|
|
83
|
+
"chai": "^6.0.1",
|
|
84
|
+
"cross-env": "^10.0.0",
|
|
85
|
+
"eslint": "9.39.1",
|
|
86
|
+
"eslint-config-prettier": "^10.1.5",
|
|
87
|
+
"eslint-plugin-prettier": "^5.5.1",
|
|
88
|
+
"globals": "^16.3.0",
|
|
89
|
+
"jest": "^30.0.4",
|
|
89
90
|
"jest-junit": "^16.0.0",
|
|
90
|
-
"prettier": "^3.
|
|
91
|
-
"tsx": "^4.
|
|
92
|
-
"typescript-eslint": "^8.
|
|
91
|
+
"prettier": "^3.6.2",
|
|
92
|
+
"tsx": "^4.20.3",
|
|
93
|
+
"typescript-eslint": "^8.35.1",
|
|
93
94
|
"vega": "^6.1.2",
|
|
94
|
-
"vega-lite": "^6.
|
|
95
|
+
"vega-lite": "^6.2.0"
|
|
95
96
|
},
|
|
96
|
-
"packageManager": "npm@11.2
|
|
97
|
+
"packageManager": "npm@11.4.2",
|
|
97
98
|
"engines": {
|
|
98
99
|
"node": ">=18.0.0"
|
|
99
100
|
}
|
|
@@ -4,7 +4,8 @@ import { BasicAnnotationsReader } from "./BasicAnnotationsReader.js";
|
|
|
4
4
|
export declare class ExtendedAnnotationsReader extends BasicAnnotationsReader {
|
|
5
5
|
private typeChecker;
|
|
6
6
|
private markdownDescription?;
|
|
7
|
-
|
|
7
|
+
private fullDescription?;
|
|
8
|
+
constructor(typeChecker: ts.TypeChecker, extraTags?: Set<string>, markdownDescription?: boolean | undefined, fullDescription?: boolean | undefined);
|
|
8
9
|
getAnnotations(node: ts.Node): Annotations | undefined;
|
|
9
10
|
isNullable(node: ts.Node): boolean;
|
|
10
11
|
private getDescriptionAnnotation;
|
|
@@ -4,14 +4,17 @@ exports.ExtendedAnnotationsReader = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const json5_1 = tslib_1.__importDefault(require("json5"));
|
|
6
6
|
const symbolAtNode_js_1 = require("../Utils/symbolAtNode.js");
|
|
7
|
+
const getFullDescription_js_1 = require("../Utils/getFullDescription.js");
|
|
7
8
|
const BasicAnnotationsReader_js_1 = require("./BasicAnnotationsReader.js");
|
|
8
9
|
class ExtendedAnnotationsReader extends BasicAnnotationsReader_js_1.BasicAnnotationsReader {
|
|
9
10
|
typeChecker;
|
|
10
11
|
markdownDescription;
|
|
11
|
-
|
|
12
|
+
fullDescription;
|
|
13
|
+
constructor(typeChecker, extraTags, markdownDescription, fullDescription) {
|
|
12
14
|
super(extraTags);
|
|
13
15
|
this.typeChecker = typeChecker;
|
|
14
16
|
this.markdownDescription = markdownDescription;
|
|
17
|
+
this.fullDescription = fullDescription;
|
|
15
18
|
}
|
|
16
19
|
getAnnotations(node) {
|
|
17
20
|
const annotations = {
|
|
@@ -39,17 +42,26 @@ class ExtendedAnnotationsReader extends BasicAnnotationsReader_js_1.BasicAnnotat
|
|
|
39
42
|
if (!symbol) {
|
|
40
43
|
return undefined;
|
|
41
44
|
}
|
|
45
|
+
const annotations = {};
|
|
42
46
|
const comments = symbol.getDocumentationComment(this.typeChecker);
|
|
43
|
-
if (
|
|
44
|
-
|
|
47
|
+
if (comments && comments.length) {
|
|
48
|
+
const markdownDescription = comments
|
|
49
|
+
.map((comment) => comment.text)
|
|
50
|
+
.join(" ")
|
|
51
|
+
.replace(/\r/g, "")
|
|
52
|
+
.trim();
|
|
53
|
+
annotations.description = markdownDescription.replace(/(?<=[^\n])\n(?=[^\n*-])/g, " ").trim();
|
|
54
|
+
if (this.markdownDescription) {
|
|
55
|
+
annotations.markdownDescription = markdownDescription;
|
|
56
|
+
}
|
|
45
57
|
}
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return
|
|
58
|
+
if (this.fullDescription) {
|
|
59
|
+
const fullDescription = (0, getFullDescription_js_1.getFullDescription)(node)?.trim();
|
|
60
|
+
if (fullDescription) {
|
|
61
|
+
annotations.fullDescription = fullDescription;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Object.keys(annotations).length ? annotations : undefined;
|
|
53
65
|
}
|
|
54
66
|
getTypeAnnotation(node) {
|
|
55
67
|
const symbol = (0, symbolAtNode_js_1.symbolAtNode)(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtendedAnnotationsReader.js","sourceRoot":"","sources":["../../../src/AnnotationsReader/ExtendedAnnotationsReader.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAG1B,8DAAwD;AACxD,2EAAqE;AAErE,MAAa,yBAA0B,SAAQ,kDAAsB;IAErD;IAEA;
|
|
1
|
+
{"version":3,"file":"ExtendedAnnotationsReader.js","sourceRoot":"","sources":["../../../src/AnnotationsReader/ExtendedAnnotationsReader.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type ts from "typescript";
|
|
1
2
|
export interface Config {
|
|
2
3
|
path?: string;
|
|
3
|
-
type?: string;
|
|
4
|
+
type?: string | string[];
|
|
4
5
|
minify?: boolean;
|
|
5
6
|
schemaId?: string;
|
|
6
7
|
tsconfig?: string;
|
|
@@ -8,6 +9,7 @@ export interface Config {
|
|
|
8
9
|
topRef?: boolean;
|
|
9
10
|
jsDoc?: "none" | "extended" | "basic";
|
|
10
11
|
markdownDescription?: boolean;
|
|
12
|
+
fullDescription?: boolean;
|
|
11
13
|
sortProps?: boolean;
|
|
12
14
|
strictTuples?: boolean;
|
|
13
15
|
skipTypeCheck?: boolean;
|
|
@@ -16,7 +18,8 @@ export interface Config {
|
|
|
16
18
|
additionalProperties?: boolean;
|
|
17
19
|
discriminatorType?: "json-schema" | "open-api";
|
|
18
20
|
functions?: FunctionOptions;
|
|
21
|
+
tsProgram?: ts.Program;
|
|
19
22
|
}
|
|
20
23
|
export type CompletedConfig = Config & typeof DEFAULT_CONFIG;
|
|
21
24
|
export type FunctionOptions = "fail" | "comment" | "hide";
|
|
22
|
-
export declare const DEFAULT_CONFIG: Omit<Required<Config>, "path" | "type" | "schemaId" | "tsconfig">;
|
|
25
|
+
export declare const DEFAULT_CONFIG: Omit<Required<Config>, "path" | "type" | "schemaId" | "tsconfig" | "tsProgram">;
|
package/dist/src/Config.js
CHANGED
package/dist/src/Config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;AAiJa,QAAA,cAAc,GAAoF;IAC3G,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,UAAU;IACjB,mBAAmB,EAAE,KAAK;IAC1B,eAAe,EAAE,KAAK;IACtB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,EAAE;IACb,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,aAAa;IAChC,SAAS,EAAE,SAAS;CACvB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { Context, NodeParser } from "../NodeParser.js";
|
|
3
|
+
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
4
|
+
import type { BaseType } from "../Type/BaseType.js";
|
|
5
|
+
export declare class IdentifierNodeParser implements SubNodeParser {
|
|
6
|
+
private readonly childNodeParser;
|
|
7
|
+
private readonly checker;
|
|
8
|
+
constructor(childNodeParser: NodeParser, checker: ts.TypeChecker);
|
|
9
|
+
supportsNode(node: ts.Identifier): boolean;
|
|
10
|
+
createType(node: ts.Identifier, context: Context): BaseType;
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdentifierNodeParser = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
|
+
const Errors_js_1 = require("../Error/Errors.js");
|
|
7
|
+
class IdentifierNodeParser {
|
|
8
|
+
childNodeParser;
|
|
9
|
+
checker;
|
|
10
|
+
constructor(childNodeParser, checker) {
|
|
11
|
+
this.childNodeParser = childNodeParser;
|
|
12
|
+
this.checker = checker;
|
|
13
|
+
}
|
|
14
|
+
supportsNode(node) {
|
|
15
|
+
return node.kind === typescript_1.default.SyntaxKind.Identifier;
|
|
16
|
+
}
|
|
17
|
+
createType(node, context) {
|
|
18
|
+
const symbol = this.checker.getSymbolAtLocation(node);
|
|
19
|
+
if (!symbol) {
|
|
20
|
+
throw new Errors_js_1.UnknownNodeError(node);
|
|
21
|
+
}
|
|
22
|
+
const decl = symbol.valueDeclaration;
|
|
23
|
+
if (decl &&
|
|
24
|
+
typescript_1.default.isVariableDeclaration(decl) &&
|
|
25
|
+
decl.initializer &&
|
|
26
|
+
typescript_1.default.getCombinedNodeFlags(decl) & typescript_1.default.NodeFlags.Const) {
|
|
27
|
+
return this.childNodeParser.createType(decl.initializer, context);
|
|
28
|
+
}
|
|
29
|
+
throw new Errors_js_1.UnknownNodeError(node);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.IdentifierNodeParser = IdentifierNodeParser;
|
|
33
|
+
//# sourceMappingURL=IdentifierNodeParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdentifierNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IdentifierNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAI5B,kDAAsD;AAKtD,MAAa,oBAAoB;IAER;IACA;IAFrB,YACqB,eAA2B,EAC3B,OAAuB;QADvB,oBAAe,GAAf,eAAe,CAAY;QAC3B,YAAO,GAAP,OAAO,CAAgB;IACzC,CAAC;IAEJ,YAAY,CAAC,IAAmB;QAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,IAAmB,EAAE,OAAgB;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrC,IACI,IAAI;YACJ,oBAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,WAAW;YAChB,oBAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,oBAAE,CAAC,SAAS,CAAC,KAAK,EACpD,CAAC;YACC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;CACJ;AA5BD,oDA4BC"}
|
|
@@ -48,7 +48,7 @@ class MappedTypeNodeParser {
|
|
|
48
48
|
const type = this.childNodeParser.createType(node.type, this.createSubContext(node, keyListType, context));
|
|
49
49
|
return type instanceof NeverType_js_1.NeverType ? new NeverType_js_1.NeverType() : new ArrayType_js_1.ArrayType(type);
|
|
50
50
|
}
|
|
51
|
-
const type = this.childNodeParser.createType(node.type, context);
|
|
51
|
+
const type = this.childNodeParser.createType(node.type, this.createSubContext(node, keyListType, context));
|
|
52
52
|
const resultType = new ObjectType_js_1.ObjectType(id, [], [], type);
|
|
53
53
|
if (resultType) {
|
|
54
54
|
let annotations;
|
|
@@ -110,6 +110,9 @@ class MappedTypeNodeParser {
|
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
getAdditionalProperties(node, keyListType, context) {
|
|
113
|
+
if ((0, derefType_js_1.isDeepLiteralUnion)(keyListType)) {
|
|
114
|
+
return this.additionalProperties;
|
|
115
|
+
}
|
|
113
116
|
const key = keyListType.getTypes().filter((type) => !((0, derefType_js_1.derefType)(type) instanceof LiteralType_js_1.LiteralType))[0];
|
|
114
117
|
if (key) {
|
|
115
118
|
return (this.childNodeParser.createType(node.type, this.createSubContext(node, key, context)) ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappedTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/MappedTypeNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAC5B,kDAA4D;AAE5D,oDAA2C;AAE3C,+DAAyD;AACzD,uDAAiD;AAEjD,iEAA2D;AAE3D,qDAA+C;AAC/C,2DAAqD;AACrD,uDAAiD;AACjD,yDAAmD;AACnD,yDAAmE;AACnE,yDAAmD;AACnD,yDAAmD;AACnD,uDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"MappedTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/MappedTypeNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { NodeParser } from "../NodeParser.js";
|
|
3
|
+
import { Context } from "../NodeParser.js";
|
|
4
|
+
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
5
|
+
import type { BaseType } from "../Type/BaseType.js";
|
|
6
|
+
export declare class NewExpressionParser implements SubNodeParser {
|
|
7
|
+
protected typeChecker: ts.TypeChecker;
|
|
8
|
+
protected childNodeParser: NodeParser;
|
|
9
|
+
constructor(typeChecker: ts.TypeChecker, childNodeParser: NodeParser);
|
|
10
|
+
supportsNode(node: ts.NewExpression): boolean;
|
|
11
|
+
createType(node: ts.NewExpression, context: Context): BaseType;
|
|
12
|
+
protected createSubContext(node: ts.NewExpression, parentContext: Context): Context;
|
|
13
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NewExpressionParser = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
|
+
const NodeParser_js_1 = require("../NodeParser.js");
|
|
7
|
+
const Errors_js_1 = require("../Error/Errors.js");
|
|
8
|
+
class NewExpressionParser {
|
|
9
|
+
typeChecker;
|
|
10
|
+
childNodeParser;
|
|
11
|
+
constructor(typeChecker, childNodeParser) {
|
|
12
|
+
this.typeChecker = typeChecker;
|
|
13
|
+
this.childNodeParser = childNodeParser;
|
|
14
|
+
}
|
|
15
|
+
supportsNode(node) {
|
|
16
|
+
return node.kind === typescript_1.default.SyntaxKind.NewExpression;
|
|
17
|
+
}
|
|
18
|
+
createType(node, context) {
|
|
19
|
+
const type = this.typeChecker.getTypeAtLocation(node);
|
|
20
|
+
const symbol = type.symbol || type.aliasSymbol;
|
|
21
|
+
const decl = this.typeChecker.typeToTypeNode(type, node, typescript_1.default.NodeBuilderFlags.IgnoreErrors) ||
|
|
22
|
+
symbol?.valueDeclaration ||
|
|
23
|
+
symbol?.declarations?.[0];
|
|
24
|
+
if (!decl) {
|
|
25
|
+
throw new Errors_js_1.UnknownNodeError(node);
|
|
26
|
+
}
|
|
27
|
+
return this.childNodeParser.createType(decl, this.createSubContext(node, context));
|
|
28
|
+
}
|
|
29
|
+
createSubContext(node, parentContext) {
|
|
30
|
+
const subContext = new NodeParser_js_1.Context(node);
|
|
31
|
+
if (node.arguments) {
|
|
32
|
+
for (const arg of node.arguments) {
|
|
33
|
+
const type = this.childNodeParser.createType(arg, parentContext);
|
|
34
|
+
subContext.pushArgument(type);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return subContext;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.NewExpressionParser = NewExpressionParser;
|
|
41
|
+
//# sourceMappingURL=NewExpressionParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewExpressionParser.js","sourceRoot":"","sources":["../../../src/NodeParser/NewExpressionParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAE5B,oDAA2C;AAG3C,kDAAsD;AAEtD,MAAa,mBAAmB;IAEd;IACA;IAFd,YACc,WAA2B,EAC3B,eAA2B;QAD3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;IACtC,CAAC;IAEG,YAAY,CAAC,IAAsB;QACtC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC;IACrD,CAAC;IAEM,UAAU,CAAC,IAAsB,EAAE,OAAgB;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC;QAE/C,MAAM,IAAI,GACN,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAC7E,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IAES,gBAAgB,CAAC,IAAsB,EAAE,aAAsB;QACrE,MAAM,UAAU,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBACjE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAtCD,kDAsCC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { Context, NodeParser } from "../NodeParser.js";
|
|
3
|
+
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
4
|
+
import { RestType } from "../Type/RestType.js";
|
|
5
|
+
export declare class SpreadElementNodeParser implements SubNodeParser {
|
|
6
|
+
private readonly childNodeParser;
|
|
7
|
+
constructor(childNodeParser: NodeParser);
|
|
8
|
+
supportsNode(node: ts.SpreadElement): boolean;
|
|
9
|
+
createType(node: ts.SpreadElement, context: Context): RestType;
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpreadElementNodeParser = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
|
+
const RestType_js_1 = require("../Type/RestType.js");
|
|
7
|
+
class SpreadElementNodeParser {
|
|
8
|
+
childNodeParser;
|
|
9
|
+
constructor(childNodeParser) {
|
|
10
|
+
this.childNodeParser = childNodeParser;
|
|
11
|
+
}
|
|
12
|
+
supportsNode(node) {
|
|
13
|
+
return node.kind === typescript_1.default.SyntaxKind.SpreadElement;
|
|
14
|
+
}
|
|
15
|
+
createType(node, context) {
|
|
16
|
+
const inner = this.childNodeParser.createType(node.expression, context);
|
|
17
|
+
return new RestType_js_1.RestType(inner);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.SpreadElementNodeParser = SpreadElementNodeParser;
|
|
21
|
+
//# sourceMappingURL=SpreadElementNodeParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpreadElementNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/SpreadElementNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAM5B,qDAA+C;AAM/C,MAAa,uBAAuB;IACH;IAA7B,YAA6B,eAA2B;QAA3B,oBAAe,GAAf,eAAe,CAAY;IAAG,CAAC;IAE5D,YAAY,CAAC,IAAsB;QAC/B,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,IAAsB,EAAE,OAAgB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAsC,CAAC;QAE7G,OAAO,IAAI,sBAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;CACJ;AAZD,0DAYC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import type { Context, NodeParser } from "../NodeParser.js";
|
|
3
3
|
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
4
|
-
import
|
|
4
|
+
import { BaseType } from "../Type/BaseType.js";
|
|
5
5
|
export declare class TypeOperatorNodeParser implements SubNodeParser {
|
|
6
6
|
protected childNodeParser: NodeParser;
|
|
7
7
|
constructor(childNodeParser: NodeParser);
|
|
@@ -4,6 +4,7 @@ exports.TypeOperatorNodeParser = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
6
|
const ArrayType_js_1 = require("../Type/ArrayType.js");
|
|
7
|
+
const BaseType_js_1 = require("../Type/BaseType.js");
|
|
7
8
|
const NumberType_js_1 = require("../Type/NumberType.js");
|
|
8
9
|
const ObjectType_js_1 = require("../Type/ObjectType.js");
|
|
9
10
|
const StringType_js_1 = require("../Type/StringType.js");
|
|
@@ -28,7 +29,7 @@ class TypeOperatorNodeParser {
|
|
|
28
29
|
return new NumberType_js_1.NumberType();
|
|
29
30
|
}
|
|
30
31
|
const keys = (0, typeKeys_js_1.getTypeKeys)(type);
|
|
31
|
-
if (derefed instanceof ObjectType_js_1.ObjectType && derefed.getAdditionalProperties()) {
|
|
32
|
+
if (derefed instanceof ObjectType_js_1.ObjectType && derefed.getAdditionalProperties() instanceof BaseType_js_1.BaseType) {
|
|
32
33
|
return new UnionType_js_1.UnionType([...keys, new StringType_js_1.StringType()]);
|
|
33
34
|
}
|
|
34
35
|
if (keys.length === 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeOperatorNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/TypeOperatorNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAG5B,uDAAiD;
|
|
1
|
+
{"version":3,"file":"TypeOperatorNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/TypeOperatorNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAG5B,uDAAiD;AACjD,qDAA+C;AAC/C,yDAAmD;AACnD,yDAAmD;AACnD,yDAAmD;AACnD,uDAAiD;AACjD,wDAAkD;AAClD,sDAAmD;AAEnD,MAAa,sBAAsB;IACF;IAA7B,YAA6B,eAA2B;QAA3B,oBAAe,GAAf,eAAe,CAAY;IAAG,CAAC;IAErD,YAAY,CAAC,IAAyB;QACzC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,YAAY,CAAC;IACpD,CAAC;IAEM,UAAU,CAAC,IAAyB,EAAE,OAAgB;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAA,wBAAS,EAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAE,CAAC,UAAU,CAAC,eAAe,IAAI,OAAO,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,YAAY,wBAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,0BAAU,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,YAAY,0BAAU,IAAI,OAAO,CAAC,uBAAuB,EAAE,YAAY,sBAAQ,EAAE,CAAC;YACzF,OAAO,IAAI,wBAAS,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,0BAAU,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,wBAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACJ;AA5BD,wDA4BC"}
|
|
@@ -42,7 +42,7 @@ class TypeReferenceNodeParser {
|
|
|
42
42
|
if (!node.typeArguments || node.typeArguments.length === 0) {
|
|
43
43
|
return new AnyType_js_1.AnyType();
|
|
44
44
|
}
|
|
45
|
-
return this.childNodeParser.createType(node.typeArguments[0],
|
|
45
|
+
return this.childNodeParser.createType(node.typeArguments[0], context);
|
|
46
46
|
}
|
|
47
47
|
if (typeSymbol.name === "Array" || typeSymbol.name === "ReadonlyArray") {
|
|
48
48
|
const type = this.createSubContext(node, context).getArguments()[0];
|