Skip to content

Commit 787974d

Browse files
committed
Refactor code-style
1 parent 9ba0f34 commit 787974d

File tree

12 files changed

+1222
-995
lines changed

12 files changed

+1222
-995
lines changed

lib/handlers/comment.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
/**
22
* @typedef {import('estree').Comment} Comment
3-
* @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer
3+
*
44
* @typedef {import('estree-jsx').JSXEmptyExpression} JsxEmptyExpression
5+
* @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer
6+
*
57
* @typedef {import('hast').Comment} HastComment
8+
*
69
* @typedef {import('../state.js').State} State
710
*/
811

lib/handlers/element.js

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
/**
22
* @typedef {import('estree').Property} Property
3+
*
4+
* @typedef {import('estree-jsx').JSXAttribute} JsxAttribute
35
* @typedef {import('estree-jsx').JSXElement} JsxElement
46
* @typedef {import('estree-jsx').JSXSpreadAttribute} JsxSpreadAttribute
5-
* @typedef {import('estree-jsx').JSXAttribute} JsxAttribute
7+
*
68
* @typedef {import('hast').Element} HastElement
9+
*
710
* @typedef {import('../state.js').State} State
811
*/
912

@@ -12,13 +15,9 @@
1215
*/
1316

1417
import {stringify as commas} from 'comma-separated-tokens'
15-
import {svg, find, hastToReact} from 'property-information'
18+
import {name as identifierName} from 'estree-util-is-identifier-name'
19+
import {find, hastToReact, svg} from 'property-information'
1620
import {stringify as spaces} from 'space-separated-tokens'
17-
import {
18-
start as identifierStart,
19-
cont as identifierCont,
20-
name as identifierName
21-
} from 'estree-util-is-identifier-name'
2221
import styleToObject from 'style-to-object'
2322

2423
const own = {}.hasOwnProperty
@@ -63,10 +62,10 @@ export function element(node, state) {
6362
// Ignore nullish and `NaN` values.
6463
// Ignore `false` and falsey known booleans.
6564
if (
66-
value === undefined ||
6765
value === null ||
68-
(typeof value === 'number' && Number.isNaN(value)) ||
66+
value === undefined ||
6967
value === false ||
68+
(typeof value === 'number' && Number.isNaN(value)) ||
7069
(!value && info.boolean)
7170
) {
7271
continue
@@ -125,7 +124,7 @@ export function element(node, state) {
125124
attributeValue = {type: 'Literal', value: String(value)}
126125
}
127126

128-
if (jsxIdentifierName(prop)) {
127+
if (identifierName(prop, {jsx: true})) {
129128
attributes.push({
130129
type: 'JSXAttribute',
131130
name: {type: 'JSXIdentifier', name: prop},
@@ -197,6 +196,7 @@ function parseStyle(value, tagName) {
197196
try {
198197
styleToObject(value, iterator)
199198
} catch (error) {
199+
// To do: use `cause`.
200200
const exception = /** @type {Error} */ (error)
201201
exception.message =
202202
tagName + '[style]' + exception.message.slice('undefined'.length)
@@ -212,7 +212,7 @@ function parseStyle(value, tagName) {
212212
* Key.
213213
* @param {string} value
214214
* Value.
215-
* @returns {void}
215+
* @returns {undefined}
216216
* Nothing.
217217
*/
218218
function iterator(name, value) {
@@ -277,32 +277,3 @@ function toCamel(_, $1) {
277277
function toDash($0) {
278278
return '-' + $0.toLowerCase()
279279
}
280-
281-
/**
282-
* Checks if the given string is a valid identifier name.
283-
*
284-
* Allows dashes, so it’s actually JSX identifier names.
285-
*
286-
* @param {string} name
287-
* Whatever.
288-
* @returns {boolean}
289-
* Whether `name` is a valid JSX identifier.
290-
*/
291-
function jsxIdentifierName(name) {
292-
let index = -1
293-
294-
while (++index < name.length) {
295-
if (!(index ? cont : identifierStart)(name.charCodeAt(index))) return false
296-
}
297-
298-
// `false` if `name` is empty.
299-
return index > 0
300-
301-
/**
302-
* @param {number} code
303-
* @returns {boolean}
304-
*/
305-
function cont(code) {
306-
return identifierCont(code) || code === 45 /* `-` */
307-
}
308-
}

lib/handlers/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@ import {element} from './element.js'
33
import {mdxExpression} from './mdx-expression.js'
44
import {mdxJsxElement} from './mdx-jsx-element.js'
55
import {mdxjsEsm} from './mdxjs-esm.js'
6-
import {text} from './text.js'
76
import {root} from './root.js'
7+
import {text} from './text.js'
88

99
export const handlers = {
1010
comment,
1111
doctype: ignore,
1212
element,
1313
mdxFlowExpression: mdxExpression,
14-
mdxTextExpression: mdxExpression,
1514
mdxJsxFlowElement: mdxJsxElement,
1615
mdxJsxTextElement: mdxJsxElement,
16+
mdxTextExpression: mdxExpression,
1717
mdxjsEsm,
18-
text,
19-
root
18+
root,
19+
text
2020
}
2121

2222
/**
2323
* Handle a node that is ignored.
2424
*
25-
* @returns {void}
25+
* @returns {undefined}
2626
* Nothing.
2727
*/
2828
function ignore() {}

lib/handlers/mdx-expression.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
/**
2-
* @typedef {import('mdast-util-mdx-expression').MdxFlowExpressionHast} MdxFlowExpression
3-
* @typedef {import('mdast-util-mdx-expression').MdxFlowExpressionHast} MdxTextExpression
42
* @typedef {import('estree').Expression} Expression
3+
*
54
* @typedef {import('estree-jsx').JSXEmptyExpression} JsxEmptyExpression
65
* @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer
6+
*
7+
* @typedef {import('mdast-util-mdx-expression').MdxFlowExpressionHast} MdxFlowExpression
8+
* @typedef {import('mdast-util-mdx-expression').MdxTextExpressionHast} MdxTextExpression
9+
*
710
* @typedef {import('../state.js').State} State
811
*/
912

lib/handlers/mdx-jsx-element.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
/**
2-
* @typedef {import('mdast-util-mdx-jsx').MdxJsxFlowElementHast} MdxJsxFlowElement
3-
* @typedef {import('mdast-util-mdx-jsx').MdxJsxTextElementHast} MdxJsxTextElement
42
* @typedef {import('estree').Expression} Expression
3+
*
4+
* @typedef {import('estree-jsx').JSXAttribute} JsxAttribute
55
* @typedef {import('estree-jsx').JSXElement} JsxElement
66
* @typedef {import('estree-jsx').JSXFragment} JsxFragment
7-
* @typedef {import('estree-jsx').JSXAttribute} JsxAttribute
87
* @typedef {import('estree-jsx').JSXSpreadAttribute} JsxSpreadAttribute
8+
*
9+
* @typedef {import('mdast-util-mdx-jsx').MdxJsxFlowElementHast} MdxJsxFlowElement
10+
* @typedef {import('mdast-util-mdx-jsx').MdxJsxTextElementHast} MdxJsxTextElement
11+
*
912
* @typedef {import('../state.js').State} State
1013
*/
1114

@@ -49,7 +52,7 @@ export function mdxJsxElement(node, state) {
4952
let attributeValue
5053

5154
if (attr.type === 'mdxJsxAttribute') {
52-
if (value === undefined || value === null) {
55+
if (value === null || value === undefined) {
5356
attributeValue = null
5457
// Empty.
5558
}

lib/handlers/mdxjs-esm.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/**
22
* @typedef {import('mdast-util-mdxjs-esm').MdxjsEsmHast} MdxjsEsm
3+
*
34
* @typedef {import('../state.js').State} State
45
*/
56

@@ -12,7 +13,7 @@ import {attachComments} from 'estree-util-attach-comments'
1213
* hast node to transform.
1314
* @param {State} state
1415
* Info passed around about the current state.
15-
* @returns {void}
16+
* @returns {undefined}
1617
* Nothing.
1718
*/
1819
export function mdxjsEsm(node, state) {

lib/handlers/root.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
/**
2-
* @typedef {import('hast').Root} HastRoot
32
* @typedef {import('estree-jsx').JSXFragment} JsxFragment
4-
* @typedef {JsxFragment['children'][number]} JsxChild
3+
*
4+
* @typedef {import('hast').Root} HastRoot
5+
*
56
* @typedef {import('../state.js').State} State
67
*/
78

9+
/**
10+
* @typedef {JsxFragment['children'][number]} JsxChild
11+
*/
12+
813
import {whitespace} from 'hast-util-whitespace'
914

1015
/**

lib/handlers/text.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
/**
2-
* @typedef {import('hast').Text} HastText
32
* @typedef {import('estree').Literal} Literal
3+
*
44
* @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer
5+
*
6+
* @typedef {import('hast').Text} HastText
7+
*
58
* @typedef {import('../state.js').State} State
69
*/
710

@@ -15,7 +18,7 @@
1518
* hast node to transform.
1619
* @param {State} state
1720
* Info passed around about the current state.
18-
* @returns {JsxExpressionContainer | void}
21+
* @returns {JsxExpressionContainer | undefined}
1922
* JSX expression.
2023
*/
2124
export function text(node, state) {

lib/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
*/
88

99
/**
10-
* @typedef {import('hast').Nodes} HastNodes
11-
*
1210
* @typedef {import('estree').ExpressionStatement} ExpressionStatement
1311
* @typedef {import('estree').Program} Program
1412
*
13+
* @typedef {import('hast').Nodes} HastNodes
14+
*
1515
* @typedef {import('./state.js').Options} Options
1616
*/
1717

@@ -49,7 +49,7 @@ import {createState} from './state.js'
4949
* @param {HastNodes} tree
5050
* hast tree.
5151
* @param {Options | null | undefined} [options]
52-
* Configuration.
52+
* Configuration (optional).
5353
* @returns {Program}
5454
* estree program node.
5555
*
@@ -84,7 +84,7 @@ export function toEstree(tree, options) {
8484
}
8585

8686
/** @type {ExpressionStatement} */
87-
// @ts-expect-error Types are wrong (`expression` *can* be JSX).
87+
// @ts-expect-error: `estree` types don’t allow JSX.
8888
const statement = {type: 'ExpressionStatement', expression: result}
8989
state.patch(tree, statement)
9090
body.push(statement)

0 commit comments

Comments
 (0)