14
14
* @typedef {import('estree-jsx').JSXSpreadAttribute } JSXSpreadAttribute
15
15
* @typedef {import('estree-jsx').JSXText } JSXText
16
16
* @typedef {import('./types.js').Handler } Handler
17
+ * @typedef {import('./types.js').Generator } Generator
18
+ * @typedef {import('./types.js').State } State
17
19
*/
18
20
19
21
export const jsx = {
@@ -38,8 +40,10 @@ export const jsx = {
38
40
* `attr="something"`
39
41
* `attr={1}`
40
42
*
41
- * @type { Handler }
43
+ * @this {Generator }
42
44
* @param {JSXAttribute } node
45
+ * @param {State } state
46
+ * @returns {void }
43
47
*/
44
48
function JSXAttribute ( node , state ) {
45
49
this [ node . name . type ] ( node . name , state )
@@ -62,8 +66,10 @@ function JSXAttribute(node, state) {
62
66
/**
63
67
* `</div>`
64
68
*
65
- * @type { Handler }
69
+ * @this {Generator }
66
70
* @param {JSXClosingElement } node
71
+ * @param {State } state
72
+ * @returns {void }
67
73
*/
68
74
function JSXClosingElement ( node , state ) {
69
75
state . write ( '</' )
@@ -74,8 +80,10 @@ function JSXClosingElement(node, state) {
74
80
/**
75
81
* `</>`
76
82
*
77
- * @type { Handler }
83
+ * @this {Generator }
78
84
* @param {JSXClosingFragment } node
85
+ * @param {State } state
86
+ * @returns {void }
79
87
*/
80
88
function JSXClosingFragment ( node , state ) {
81
89
state . write ( '</>' , node )
@@ -85,8 +93,10 @@ function JSXClosingFragment(node, state) {
85
93
* `<div />`
86
94
* `<div></div>`
87
95
*
88
- * @type { Handler }
96
+ * @this {Generator }
89
97
* @param {JSXElement } node
98
+ * @param {State } state
99
+ * @returns {void }
90
100
*/
91
101
function JSXElement ( node , state ) {
92
102
let index = - 1
@@ -115,15 +125,18 @@ function JSXElement(node, state) {
115
125
/**
116
126
* `{}` (always in a `JSXExpressionContainer`, which does the curlies)
117
127
*
118
- * @type {Handler }
128
+ * @this {Generator}
129
+ * @returns {void }
119
130
*/
120
131
function JSXEmptyExpression ( ) { }
121
132
122
133
/**
123
134
* `{expression}`
124
135
*
125
- * @type { Handler }
136
+ * @this {Generator }
126
137
* @param {JSXExpressionContainer } node
138
+ * @param {State } state
139
+ * @returns {void }
127
140
*/
128
141
function JSXExpressionContainer ( node , state ) {
129
142
state . write ( '{' )
@@ -134,8 +147,10 @@ function JSXExpressionContainer(node, state) {
134
147
/**
135
148
* `<></>`
136
149
*
137
- * @type { Handler }
150
+ * @this {Generator }
138
151
* @param {JSXFragment } node
152
+ * @param {State } state
153
+ * @returns {void }
139
154
*/
140
155
function JSXFragment ( node , state ) {
141
156
let index = - 1
@@ -162,8 +177,10 @@ function JSXFragment(node, state) {
162
177
/**
163
178
* `div`
164
179
*
165
- * @type { Handler }
180
+ * @this {Generator }
166
181
* @param {JSXIdentifier } node
182
+ * @param {State } state
183
+ * @returns {void }
167
184
*/
168
185
function JSXIdentifier ( node , state ) {
169
186
state . write ( node . name , node )
@@ -172,8 +189,10 @@ function JSXIdentifier(node, state) {
172
189
/**
173
190
* `member.expression`
174
191
*
175
- * @type { Handler }
192
+ * @this {Generator }
176
193
* @param {JSXMemberExpression } node
194
+ * @param {State } state
195
+ * @returns {void }
177
196
*/
178
197
function JSXMemberExpression ( node , state ) {
179
198
this [ node . object . type ] ( node . object , state )
@@ -184,8 +203,10 @@ function JSXMemberExpression(node, state) {
184
203
/**
185
204
* `ns:name`
186
205
*
187
- * @type { Handler }
206
+ * @this {Generator }
188
207
* @param {JSXNamespacedName } node
208
+ * @param {State } state
209
+ * @returns {void }
189
210
*/
190
211
function JSXNamespacedName ( node , state ) {
191
212
this [ node . namespace . type ] ( node . namespace , state )
@@ -196,8 +217,10 @@ function JSXNamespacedName(node, state) {
196
217
/**
197
218
* `<div>`
198
219
*
199
- * @type { Handler }
220
+ * @this {Generator }
200
221
* @param {JSXOpeningElement } node
222
+ * @param {State } state
223
+ * @returns {void }
201
224
*/
202
225
function JSXOpeningElement ( node , state ) {
203
226
let index = - 1
@@ -218,8 +241,10 @@ function JSXOpeningElement(node, state) {
218
241
/**
219
242
* `<>`
220
243
*
221
- * @type { Handler }
244
+ * @this {Generator }
222
245
* @param {JSXOpeningFragment } node
246
+ * @param {State } state
247
+ * @returns {void }
223
248
*/
224
249
function JSXOpeningFragment ( node , state ) {
225
250
state . write ( '<>' , node )
@@ -228,8 +253,10 @@ function JSXOpeningFragment(node, state) {
228
253
/**
229
254
* `{...argument}`
230
255
*
231
- * @type { Handler }
256
+ * @this {Generator }
232
257
* @param {JSXSpreadAttribute } node
258
+ * @param {State } state
259
+ * @returns {void }
233
260
*/
234
261
function JSXSpreadAttribute ( node , state ) {
235
262
state . write ( '{' )
@@ -241,8 +268,10 @@ function JSXSpreadAttribute(node, state) {
241
268
/**
242
269
* `!`
243
270
*
244
- * @type { Handler }
271
+ * @this {Generator }
245
272
* @param {JSXText } node
273
+ * @param {State } state
274
+ * @returns {void }
246
275
*/
247
276
function JSXText ( node , state ) {
248
277
state . write (
0 commit comments