1
1
/**
2
- * @typedef {import('estree').Comment } Comment
3
- * @typedef {import('estree').Directive } Directive
4
- * @typedef {import('estree').ModuleDeclaration } ModuleDeclaration
5
- * @typedef {import('estree').Node } EstreeNode
6
- * @typedef {import('estree').Statement } Statement
7
- *
8
- * @typedef {import('estree-jsx').JSXAttribute } JsxAttribute
9
- * @typedef {import('estree-jsx').JSXElement } JsxElement
10
- * @typedef {import('estree-jsx').JSXIdentifier } JsxIdentifier
11
- * @typedef {import('estree-jsx').JSXMemberExpression } JsxMemberExpression
12
- * @typedef {import('estree-jsx').JSXNamespacedName } JsxNamespacedName
13
- *
14
- * @typedef {import('mdast-util-mdx-jsx').MdxJsxAttribute } MdxJsxAttribute
15
- * @typedef {import('mdast-util-mdx-jsx').MdxJsxAttributeValueExpression } MdxJsxAttributeValueExpression
16
- * @typedef {import('mdast-util-mdx-jsx').MdxJsxExpressionAttribute } MdxJsxExpressionAttribute
17
- *
18
- * @typedef {import('hast').Nodes } HastNodes
19
- * @typedef {import('hast').Parents } HastParents
20
- *
21
- * @typedef {import('property-information').Schema } Schema
22
- */
23
-
24
- /**
25
- * @typedef {JsxElement['openingElement']['name'] } JsxElementName
26
- * @typedef {JsxAttribute['name'] } JsxAttributeName
27
- * @typedef {JsxElement['children'][number] } JsxChild
2
+ * @import {
3
+ * JSXElement as JsxElement,
4
+ * JSXExpressionContainer as JsxExpressionContainer,
5
+ * JSXFragment as JsxFragment,
6
+ * JSXIdentifier as JsxIdentifier,
7
+ * JSXMemberExpression as JsxMemberExpression,
8
+ * JSXNamespacedName as JsxNamespacedName,
9
+ * JSXSpreadChild as JsxSpreadChild,
10
+ * JSXText as JsxText,
11
+ * } from 'estree-jsx'
12
+ * @import {Comment, Directive, ModuleDeclaration, Node as EstreeNode, Statement} from 'estree'
13
+ * @import {MdxJsxAttribute, MdxJsxAttributeValueExpression, MdxJsxExpressionAttribute} from 'mdast-util-mdx-jsx'
14
+ * @import {Nodes as HastNodes, Parents as HastParents} from 'hast'
15
+ * @import {Schema} from 'property-information'
28
16
*/
29
17
30
18
/**
40
28
* Expected hast node.
41
29
* @param {State } state
42
30
* Info passed around about the current state.
43
- * @returns {JsxChild | null | undefined }
31
+ * @returns {JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText | null | undefined }
44
32
* estree node.
45
33
*
46
34
* @typedef Options
78
66
*
79
67
* @typedef State
80
68
* Info passed around about the current state.
81
- * @property {(parent: HastParents) => Array<JsxChild > } all
69
+ * @property {(parent: HastParents) => Array<JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText > } all
82
70
* Transform children of a hast parent to estree.
83
71
* @property {Array<Comment> } comments
84
72
* List of estree comments.
85
- * @property {(name: string) => JsxAttributeName } createJsxAttributeName
73
+ * @property {(name: string) => JsxIdentifier | JsxNamespacedName } createJsxAttributeName
86
74
* Create a JSX attribute name.
87
- * @property {(name: string) => JsxElementName } createJsxElementName
75
+ * @property {(name: string) => JsxIdentifier | JsxMemberExpression | JsxNamespacedName } createJsxElementName
88
76
* Create a JSX element name.
89
77
* @property {ElementAttributeNameCase } elementAttributeNameCase
90
78
* Casing to use for attribute names.
91
79
* @property {Array<Directive | ModuleDeclaration | Statement> } esm
92
80
* List of top-level estree nodes.
93
- * @property {(node: any) => JsxChild | null | undefined } handle
81
+ * @property {(node: any) => JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText | null | undefined } handle
94
82
* Transform a hast node to estree.
95
83
* @property {(from: HastNodes | MdxJsxAttribute | MdxJsxAttributeValueExpression | MdxJsxExpressionAttribute, to: Comment | EstreeNode) => undefined } inherit
96
84
* Take positional info and data from `from` (use `patch` if you don’t want data).
@@ -164,7 +152,7 @@ export function createState(options) {
164
152
/**
165
153
* @this {State}
166
154
* @param {any } node
167
- * @returns {JsxChild | null | undefined }
155
+ * @returns {JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText | null | undefined }
168
156
*/
169
157
function handle ( node ) {
170
158
return one ( node , this )
@@ -202,13 +190,13 @@ function unknown(node) {
202
190
* Info passed around about the current state.
203
191
* @param {HastParents } parent
204
192
* hast node whose children to transform.
205
- * @returns {Array<JsxChild > }
193
+ * @returns {Array<JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText > }
206
194
* estree nodes.
207
195
*/
208
196
function all ( parent ) {
209
197
const children = parent . children || [ ]
210
198
let index = - 1
211
- /** @type {Array<JsxChild > } */
199
+ /** @type {Array<JsxElement | JsxExpressionContainer | JsxFragment | JsxSpreadChild | JsxText > } */
212
200
const results = [ ]
213
201
const ignoreLineBreak =
214
202
this . schema . space === 'html' &&
@@ -302,7 +290,7 @@ function patch(from, to) {
302
290
* Create a JSX attribute name.
303
291
*
304
292
* @param {string } name
305
- * @returns {JsxAttributeName }
293
+ * @returns {JsxIdentifier | JsxNamespacedName }
306
294
*/
307
295
function createJsxAttributeName ( name ) {
308
296
const node = createJsxNameFromString ( name )
@@ -320,7 +308,7 @@ function createJsxAttributeName(name) {
320
308
* Create a JSX element name.
321
309
*
322
310
* @param {string } name
323
- * @returns {JsxElementName }
311
+ * @returns {JsxIdentifier | JsxMemberExpression | JsxNamespacedName }
324
312
*/
325
313
function createJsxElementName ( name ) {
326
314
return createJsxNameFromString ( name )
0 commit comments