@teambit/typescript 0.0.965 → 0.0.966

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.
Files changed (204) hide show
  1. package/dist/export-identifier.d.ts +5 -4
  2. package/dist/export-identifier.js +23 -4
  3. package/dist/export-identifier.js.map +1 -1
  4. package/dist/identifier-list.d.ts +7 -0
  5. package/dist/identifier-list.js +21 -0
  6. package/dist/identifier-list.js.map +1 -0
  7. package/dist/identifier.d.ts +9 -0
  8. package/dist/identifier.js +30 -0
  9. package/dist/identifier.js.map +1 -0
  10. package/dist/{preview-1674271762484.js → preview-1674531051110.js} +2 -2
  11. package/dist/schema-extractor-context.d.ts +40 -8
  12. package/dist/schema-extractor-context.js +243 -101
  13. package/dist/schema-extractor-context.js.map +1 -1
  14. package/dist/schema-transformer.d.ts +2 -2
  15. package/dist/schema-transformer.js.map +1 -1
  16. package/dist/transformers/array-type.d.ts +10 -0
  17. package/dist/transformers/array-type.js +38 -0
  18. package/dist/transformers/array-type.js.map +1 -0
  19. package/dist/transformers/binding-element.d.ts +2 -2
  20. package/dist/transformers/binding-element.js +7 -7
  21. package/dist/transformers/binding-element.js.map +1 -1
  22. package/dist/transformers/class-declaration.d.ts +2 -2
  23. package/dist/transformers/class-declaration.js +6 -20
  24. package/dist/transformers/class-declaration.js.map +1 -1
  25. package/dist/transformers/conditional-type.d.ts +10 -0
  26. package/dist/transformers/conditional-type.js +39 -0
  27. package/dist/transformers/conditional-type.js.map +1 -0
  28. package/dist/transformers/constructor.d.ts +10 -0
  29. package/dist/transformers/constructor.js +50 -0
  30. package/dist/transformers/constructor.js.map +1 -0
  31. package/dist/transformers/enum-declaration.d.ts +2 -2
  32. package/dist/transformers/enum-declaration.js +4 -4
  33. package/dist/transformers/enum-declaration.js.map +1 -1
  34. package/dist/transformers/{export-assignment-declaration.d.ts → export-assignment.d.ts} +7 -2
  35. package/dist/transformers/export-assignment.js +41 -0
  36. package/dist/transformers/export-assignment.js.map +1 -0
  37. package/dist/transformers/export-declaration.d.ts +2 -3
  38. package/dist/transformers/export-declaration.js +21 -10
  39. package/dist/transformers/export-declaration.js.map +1 -1
  40. package/dist/transformers/function-like.d.ts +11 -0
  41. package/dist/transformers/function-like.js +82 -0
  42. package/dist/transformers/function-like.js.map +1 -0
  43. package/dist/transformers/get-accessor.d.ts +10 -0
  44. package/dist/transformers/get-accessor.js +48 -0
  45. package/dist/transformers/get-accessor.js.map +1 -0
  46. package/dist/transformers/import-declaration.d.ts +10 -0
  47. package/dist/transformers/import-declaration.js +74 -0
  48. package/dist/transformers/import-declaration.js.map +1 -0
  49. package/dist/transformers/index-signature.d.ts +10 -0
  50. package/dist/transformers/index-signature.js +45 -0
  51. package/dist/transformers/index-signature.js.map +1 -0
  52. package/dist/transformers/index.d.ts +28 -3
  53. package/dist/transformers/index.js +337 -12
  54. package/dist/transformers/index.js.map +1 -1
  55. package/dist/transformers/indexed-access-type.d.ts +10 -0
  56. package/dist/transformers/indexed-access-type.js +37 -0
  57. package/dist/transformers/indexed-access-type.js.map +1 -0
  58. package/dist/transformers/interface-declaration.d.ts +2 -2
  59. package/dist/transformers/interface-declaration.js +6 -20
  60. package/dist/transformers/interface-declaration.js.map +1 -1
  61. package/dist/transformers/intersection-type.d.ts +10 -0
  62. package/dist/transformers/intersection-type.js +48 -0
  63. package/dist/transformers/intersection-type.js.map +1 -0
  64. package/dist/transformers/keyword-type.d.ts +13 -0
  65. package/dist/transformers/keyword-type.js +55 -0
  66. package/dist/transformers/keyword-type.js.map +1 -0
  67. package/dist/transformers/literal-type.d.ts +13 -0
  68. package/dist/transformers/literal-type.js +40 -0
  69. package/dist/transformers/literal-type.js.map +1 -0
  70. package/dist/transformers/named-tuple.d.ts +10 -0
  71. package/dist/transformers/named-tuple.js +38 -0
  72. package/dist/transformers/named-tuple.js.map +1 -0
  73. package/dist/transformers/parameter.d.ts +13 -0
  74. package/dist/transformers/parameter.js +112 -0
  75. package/dist/transformers/parameter.js.map +1 -0
  76. package/dist/transformers/parenthesized-type.d.ts +10 -0
  77. package/dist/transformers/parenthesized-type.js +36 -0
  78. package/dist/transformers/parenthesized-type.js.map +1 -0
  79. package/dist/transformers/property-declaration.d.ts +11 -0
  80. package/dist/transformers/property-declaration.js +57 -0
  81. package/dist/transformers/property-declaration.js.map +1 -0
  82. package/dist/transformers/set-accessor.d.ts +10 -0
  83. package/dist/transformers/set-accessor.js +45 -0
  84. package/dist/transformers/set-accessor.js.map +1 -0
  85. package/dist/transformers/source-file-transformer.d.ts +3 -2
  86. package/dist/transformers/source-file-transformer.js +44 -15
  87. package/dist/transformers/source-file-transformer.js.map +1 -1
  88. package/dist/transformers/template-literal-type-span.d.ts +10 -0
  89. package/dist/transformers/template-literal-type-span.js +37 -0
  90. package/dist/transformers/template-literal-type-span.js.map +1 -0
  91. package/dist/transformers/template-literal-type.d.ts +10 -0
  92. package/dist/transformers/template-literal-type.js +45 -0
  93. package/dist/transformers/template-literal-type.js.map +1 -0
  94. package/dist/transformers/this-type.d.ts +10 -0
  95. package/dist/transformers/this-type.js +35 -0
  96. package/dist/transformers/this-type.js.map +1 -0
  97. package/dist/transformers/tuple-type.d.ts +10 -0
  98. package/dist/transformers/tuple-type.js +47 -0
  99. package/dist/transformers/tuple-type.js.map +1 -0
  100. package/dist/transformers/type-alias.d.ts +2 -2
  101. package/dist/transformers/type-alias.js +5 -12
  102. package/dist/transformers/type-alias.js.map +1 -1
  103. package/dist/transformers/type-literal.d.ts +14 -0
  104. package/dist/transformers/type-literal.js +49 -0
  105. package/dist/transformers/type-literal.js.map +1 -0
  106. package/dist/transformers/type-operator.d.ts +14 -0
  107. package/dist/transformers/type-operator.js +52 -0
  108. package/dist/transformers/type-operator.js.map +1 -0
  109. package/dist/transformers/type-predicate.d.ts +10 -0
  110. package/dist/transformers/type-predicate.js +38 -0
  111. package/dist/transformers/type-predicate.js.map +1 -0
  112. package/dist/transformers/type-query.d.ts +13 -0
  113. package/dist/transformers/type-query.js +42 -0
  114. package/dist/transformers/type-query.js.map +1 -0
  115. package/dist/transformers/type-reference.d.ts +16 -0
  116. package/dist/transformers/type-reference.js +56 -0
  117. package/dist/transformers/type-reference.js.map +1 -0
  118. package/dist/transformers/union-type.d.ts +10 -0
  119. package/dist/transformers/union-type.js +48 -0
  120. package/dist/transformers/union-type.js.map +1 -0
  121. package/dist/transformers/utils/jsdoc-to-doc-schema.js +2 -10
  122. package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
  123. package/dist/transformers/variable-declaration.d.ts +2 -2
  124. package/dist/transformers/variable-declaration.js +11 -11
  125. package/dist/transformers/variable-declaration.js.map +1 -1
  126. package/dist/transformers/variable-statement.d.ts +2 -2
  127. package/dist/transformers/variable-statement.js +5 -5
  128. package/dist/transformers/variable-statement.js.map +1 -1
  129. package/dist/typescript.extractor.d.ts +10 -4
  130. package/dist/typescript.extractor.js +70 -17
  131. package/dist/typescript.extractor.js.map +1 -1
  132. package/dist/typescript.main.runtime.d.ts +4 -2
  133. package/dist/typescript.main.runtime.js +5 -11
  134. package/dist/typescript.main.runtime.js.map +1 -1
  135. package/package-tar/teambit-typescript-0.0.966.tgz +0 -0
  136. package/package.json +17 -17
  137. package/transformers/array-type.ts +21 -0
  138. package/transformers/binding-element.ts +2 -2
  139. package/transformers/class-declaration.ts +4 -6
  140. package/transformers/conditional-type.ts +23 -0
  141. package/transformers/constructor.ts +40 -0
  142. package/transformers/enum-declaration.ts +3 -3
  143. package/transformers/{export-assignment-declaration.ts → export-assignment.ts} +9 -3
  144. package/transformers/export-declaration.ts +35 -8
  145. package/transformers/function-like.ts +65 -0
  146. package/transformers/get-accessor.ts +24 -0
  147. package/transformers/import-declaration.ts +56 -0
  148. package/transformers/index-signature.ts +24 -0
  149. package/transformers/index.ts +28 -3
  150. package/transformers/indexed-access-type.ts +21 -0
  151. package/transformers/interface-declaration.ts +5 -7
  152. package/transformers/intersection-type.ts +25 -0
  153. package/transformers/keyword-type.ts +39 -0
  154. package/transformers/literal-type.ts +23 -0
  155. package/transformers/named-tuple.ts +22 -0
  156. package/transformers/parameter.ts +110 -0
  157. package/transformers/parenthesized-type.ts +20 -0
  158. package/transformers/property-declaration.ts +33 -0
  159. package/transformers/set-accessor.ts +25 -0
  160. package/transformers/source-file-transformer.ts +56 -24
  161. package/transformers/template-literal-type-span.ts +21 -0
  162. package/transformers/template-literal-type.ts +24 -0
  163. package/transformers/this-type.ts +19 -0
  164. package/transformers/tuple-type.ts +24 -0
  165. package/transformers/type-alias.ts +3 -4
  166. package/transformers/type-literal.ts +26 -0
  167. package/transformers/type-operator.ts +37 -0
  168. package/transformers/type-predicate.ts +22 -0
  169. package/transformers/type-query.ts +25 -0
  170. package/transformers/type-reference.ts +33 -0
  171. package/transformers/union-type.ts +25 -0
  172. package/transformers/utils/jsdoc-to-doc-schema.ts +2 -4
  173. package/transformers/variable-declaration.ts +7 -4
  174. package/transformers/variable-statement.ts +3 -3
  175. package/dist/export-list.d.ts +0 -6
  176. package/dist/export-list.js +0 -17
  177. package/dist/export-list.js.map +0 -1
  178. package/dist/transformers/export-assignment-declaration.js +0 -29
  179. package/dist/transformers/export-assignment-declaration.js.map +0 -1
  180. package/dist/transformers/function-declaration.d.ts +0 -11
  181. package/dist/transformers/function-declaration.js +0 -49
  182. package/dist/transformers/function-declaration.js.map +0 -1
  183. package/dist/transformers/utils/class-element-to-schema.d.ts +0 -4
  184. package/dist/transformers/utils/class-element-to-schema.js +0 -95
  185. package/dist/transformers/utils/class-element-to-schema.js.map +0 -1
  186. package/dist/transformers/utils/get-params.d.ts +0 -4
  187. package/dist/transformers/utils/get-params.js +0 -100
  188. package/dist/transformers/utils/get-params.js.map +0 -1
  189. package/dist/transformers/utils/to-function-like-schema.d.ts +0 -4
  190. package/dist/transformers/utils/to-function-like-schema.js +0 -58
  191. package/dist/transformers/utils/to-function-like-schema.js.map +0 -1
  192. package/dist/transformers/utils/type-element-to-schema.d.ts +0 -7
  193. package/dist/transformers/utils/type-element-to-schema.js +0 -106
  194. package/dist/transformers/utils/type-element-to-schema.js.map +0 -1
  195. package/dist/transformers/utils/type-node-to-schema.d.ts +0 -4
  196. package/dist/transformers/utils/type-node-to-schema.js +0 -274
  197. package/dist/transformers/utils/type-node-to-schema.js.map +0 -1
  198. package/package-tar/teambit-typescript-0.0.965.tgz +0 -0
  199. package/transformers/function-declaration.ts +0 -25
  200. package/transformers/utils/class-element-to-schema.ts +0 -64
  201. package/transformers/utils/get-params.ts +0 -92
  202. package/transformers/utils/to-function-like-schema.ts +0 -39
  203. package/transformers/utils/type-element-to-schema.ts +0 -79
  204. package/transformers/utils/type-node-to-schema.ts +0 -294
@@ -1,294 +0,0 @@
1
- import {
2
- TypeNode,
3
- SyntaxKind,
4
- KeywordTypeNode,
5
- FunctionTypeNode,
6
- TypeQueryNode,
7
- TypeReferenceNode,
8
- ArrayTypeNode,
9
- TypeOperatorNode,
10
- TupleTypeNode,
11
- IntersectionTypeNode,
12
- UnionTypeNode,
13
- TypeLiteralNode,
14
- ParenthesizedTypeNode,
15
- TypePredicateNode,
16
- isIdentifier,
17
- IndexedAccessTypeNode,
18
- TemplateLiteralTypeNode,
19
- TemplateLiteralTypeSpan,
20
- ThisTypeNode,
21
- ConditionalTypeNode,
22
- NamedTupleMember,
23
- } from 'typescript';
24
- import {
25
- SchemaNode,
26
- TypeRefSchema,
27
- TypeIntersectionSchema,
28
- TypeUnionSchema,
29
- TypeLiteralSchema,
30
- TypeQuerySchema,
31
- LiteralTypeSchema,
32
- KeywordTypeSchema,
33
- TypeArraySchema,
34
- TypeOperatorSchema,
35
- TupleTypeSchema,
36
- FunctionLikeSchema,
37
- ParenthesizedTypeSchema,
38
- TypePredicateSchema,
39
- IndexedAccessSchema,
40
- TemplateLiteralTypeSpanSchema,
41
- TemplateLiteralTypeSchema,
42
- ThisTypeSchema,
43
- Modifier,
44
- ConditionalTypeSchema,
45
- NamedTupleSchema,
46
- UnImplementedSchema,
47
- } from '@teambit/semantics.entities.semantic-schema';
48
- import pMapSeries from 'p-map-series';
49
- import { SchemaExtractorContext } from '../../schema-extractor-context';
50
- import { getParams } from './get-params';
51
- import { typeElementToSchema } from './type-element-to-schema';
52
-
53
- // eslint-disable-next-line complexity
54
- export async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {
55
- const location = context.getLocation(node);
56
- if (isKeywordType(node)) {
57
- return new KeywordTypeSchema(location, node.getText());
58
- }
59
- switch (node.kind) {
60
- case SyntaxKind.IntersectionType:
61
- return intersectionType(node as IntersectionTypeNode, context);
62
- case SyntaxKind.UnionType:
63
- return unionType(node as UnionTypeNode, context);
64
- case SyntaxKind.TypeReference:
65
- return typeReference(node as TypeReferenceNode, context);
66
- case SyntaxKind.TypeLiteral:
67
- return typeLiteral(node as TypeLiteralNode, context);
68
- case SyntaxKind.LiteralType: // e.g. string/boolean
69
- return new LiteralTypeSchema(location, node.getText());
70
- case SyntaxKind.FunctionType:
71
- return functionType(node as FunctionTypeNode, context);
72
- case SyntaxKind.TypeQuery:
73
- return typeQuery(node as TypeQueryNode, context);
74
- case SyntaxKind.ArrayType:
75
- return arrayType(node as ArrayTypeNode, context);
76
- case SyntaxKind.TypeOperator:
77
- return typeOperator(node as TypeOperatorNode, context);
78
- case SyntaxKind.TupleType:
79
- return tupleType(node as TupleTypeNode, context);
80
- case SyntaxKind.ParenthesizedType:
81
- return parenthesizedType(node as ParenthesizedTypeNode, context);
82
- case SyntaxKind.TypePredicate:
83
- return typePredicate(node as TypePredicateNode, context);
84
- case SyntaxKind.IndexedAccessType:
85
- return indexedAccessType(node as IndexedAccessTypeNode, context);
86
- case SyntaxKind.TemplateLiteralTypeSpan:
87
- return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);
88
- case SyntaxKind.TemplateLiteralType:
89
- return templateLiteralType(node as TemplateLiteralTypeNode, context);
90
- case SyntaxKind.ThisType:
91
- return thisType(node as ThisTypeNode, context);
92
- case SyntaxKind.ConditionalType:
93
- return conditionalType(node as ConditionalTypeNode, context);
94
- case SyntaxKind.NamedTupleMember:
95
- return namedTupleType(node as NamedTupleMember, context);
96
- case SyntaxKind.ConstructorType:
97
- case SyntaxKind.OptionalType:
98
- case SyntaxKind.RestType:
99
- case SyntaxKind.InferType:
100
- case SyntaxKind.MappedType:
101
- case SyntaxKind.ImportType:
102
- case SyntaxKind.ExpressionWithTypeArguments:
103
- case SyntaxKind.JSDocTypeExpression:
104
- case SyntaxKind.JSDocAllType:
105
- case SyntaxKind.JSDocUnknownType:
106
- case SyntaxKind.JSDocNonNullableType:
107
- case SyntaxKind.JSDocNullableType:
108
- case SyntaxKind.JSDocOptionalType:
109
- case SyntaxKind.JSDocFunctionType:
110
- case SyntaxKind.JSDocVariadicType:
111
- case SyntaxKind.JSDocNamepathType:
112
- case SyntaxKind.JSDocSignature:
113
- case SyntaxKind.JSDocTypeLiteral:
114
- return unimplementedSchema(node, context);
115
- default:
116
- return unimplementedSchema(node, context);
117
- }
118
- }
119
-
120
- function unimplementedSchema(node: TypeNode, context: SchemaExtractorContext) {
121
- return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);
122
- }
123
- /**
124
- * whether it's kind of `ts.KeywordTypeSyntaxKind`
125
- */
126
- function isKeywordType(node: TypeNode): node is KeywordTypeNode {
127
- switch (node.kind) {
128
- case SyntaxKind.AnyKeyword:
129
- case SyntaxKind.BigIntKeyword:
130
- case SyntaxKind.BooleanKeyword:
131
- case SyntaxKind.IntrinsicKeyword:
132
- case SyntaxKind.NeverKeyword:
133
- case SyntaxKind.NumberKeyword:
134
- case SyntaxKind.ObjectKeyword:
135
- case SyntaxKind.StringKeyword:
136
- case SyntaxKind.SymbolKeyword:
137
- case SyntaxKind.UndefinedKeyword:
138
- case SyntaxKind.UnknownKeyword:
139
- case SyntaxKind.VoidKeyword:
140
- return true;
141
- default:
142
- return false;
143
- }
144
- }
145
-
146
- async function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {
147
- const types = await pMapSeries(node.types, async (type) => {
148
- const typeSchema = await typeNodeToSchema(type, context);
149
- return typeSchema;
150
- });
151
- const location = context.getLocation(node);
152
- return new TypeIntersectionSchema(location, types);
153
- }
154
-
155
- async function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {
156
- const types = await pMapSeries(node.types, async (type) => {
157
- const typeSchema = await typeNodeToSchema(type, context);
158
- return typeSchema;
159
- });
160
- const location = context.getLocation(node);
161
- return new TypeUnionSchema(location, types);
162
- }
163
-
164
- /**
165
- * not to be confused with "LiteralType", which is string/boolean/null.
166
- * this "TypeLiteral" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.
167
- */
168
- async function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {
169
- const members = await pMapSeries(node.members, (member) => typeElementToSchema(member, context));
170
- const location = context.getLocation(node);
171
- return new TypeLiteralSchema(location, members);
172
- }
173
-
174
- /**
175
- * In the following example, `AriaButtonProps` is a type reference
176
- * ```ts
177
- * import type { AriaButtonProps } from '@react-types/button';
178
- * export type ButtonProps = AriaButtonProps & { a: string };
179
- * ```
180
- */
181
- async function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {
182
- const name = node.typeName.getText();
183
- const type = await context.resolveType(node, name, false);
184
- if (node.typeArguments && type instanceof TypeRefSchema) {
185
- const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));
186
- type.typeArgs = args;
187
- }
188
- return type;
189
- }
190
-
191
- async function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {
192
- const name = node.name?.getText() || '';
193
- const params = await getParams(node.parameters, context);
194
- const returnType = await typeNodeToSchema(node.type, context);
195
- const location = context.getLocation(node);
196
- const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
197
- const doc = await context.jsDocToDocSchema(node);
198
- return new FunctionLikeSchema(location, name, params, returnType, '', modifiers as Modifier[], doc);
199
- }
200
-
201
- /**
202
- * e.g. `typeof Foo`
203
- */
204
- async function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {
205
- const displaySig = await context.getQuickInfoDisplayString(node.exprName);
206
- const type = await context.resolveType(node.exprName, node.exprName.getText(), false);
207
- const location = context.getLocation(node);
208
- return new TypeQuerySchema(location, type, displaySig);
209
- }
210
-
211
- async function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {
212
- const type = await typeNodeToSchema(node.elementType, context);
213
- const location = context.getLocation(node);
214
- return new TypeArraySchema(location, type);
215
- }
216
-
217
- /**
218
- * e.g. keyof typeof Foo
219
- */
220
- async function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {
221
- const operatorName = getOperatorName(node.operator);
222
- const type = await typeNodeToSchema(node.type, context);
223
- return new TypeOperatorSchema(context.getLocation(node), operatorName, type);
224
- }
225
-
226
- function getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {
227
- switch (operator) {
228
- case SyntaxKind.KeyOfKeyword:
229
- return 'keyof';
230
- case SyntaxKind.UniqueKeyword:
231
- return 'unique';
232
- case SyntaxKind.ReadonlyKeyword:
233
- return 'readonly';
234
- default:
235
- throw new Error(`getOperatorName: unable to find operator name for ${operator}`);
236
- }
237
- }
238
-
239
- async function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {
240
- const elements = await pMapSeries(node.elements, async (elem) => {
241
- const typeSchema = await typeNodeToSchema(elem, context);
242
- return typeSchema;
243
- });
244
- return new TupleTypeSchema(context.getLocation(node), elements);
245
- }
246
-
247
- async function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {
248
- const type = await typeNodeToSchema(node.type, context);
249
- return new ParenthesizedTypeSchema(context.getLocation(node), type);
250
- }
251
-
252
- async function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {
253
- const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';
254
- const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;
255
- const hasAssertsModifier = Boolean(node.assertsModifier);
256
- return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);
257
- }
258
-
259
- async function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {
260
- const objectType = await typeNodeToSchema(node.objectType, context);
261
- const indexType = await typeNodeToSchema(node.indexType, context);
262
- return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);
263
- }
264
-
265
- async function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {
266
- const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));
267
- const head = node.head.text;
268
- return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);
269
- }
270
-
271
- async function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {
272
- const type = await typeNodeToSchema(node.type, context);
273
- const literal = node.literal.text;
274
- return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);
275
- }
276
-
277
- async function thisType(node: ThisTypeNode, context: SchemaExtractorContext) {
278
- return new ThisTypeSchema(context.getLocation(node));
279
- }
280
-
281
- async function conditionalType(node: ConditionalTypeNode, context: SchemaExtractorContext) {
282
- const checkType = await typeNodeToSchema(node.checkType, context);
283
- const extendsType = await typeNodeToSchema(node.extendsType, context);
284
- const trueType = await typeNodeToSchema(node.trueType, context);
285
- const falseType = await typeNodeToSchema(node.falseType, context);
286
- return new ConditionalTypeSchema(context.getLocation(node), checkType, extendsType, trueType, falseType);
287
- }
288
-
289
- async function namedTupleType(node: NamedTupleMember, context: SchemaExtractorContext) {
290
- const name = node.name.getText();
291
- const location = context.getLocation(node);
292
- const type = await typeNodeToSchema(node.type, context);
293
- return new NamedTupleSchema(location, type, name);
294
- }