Skip to content

Commit dea54b2

Browse files
committed
Update @types/mdast, mdast utilities
1 parent 4cde52a commit dea54b2

File tree

4 files changed

+92
-75
lines changed

4 files changed

+92
-75
lines changed

index.d.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,19 @@ export interface MdxTextExpressionHast extends HastLiteral {
110110
// Add nodes to mdast content.
111111
declare module 'mdast' {
112112
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
113-
interface StaticPhrasingContentMap {
113+
interface RootContentMap {
114+
/**
115+
* MDX expression node, occurring in text (phrasing).
116+
*/
117+
mdxTextExpression: MdxTextExpression
118+
/**
119+
* MDX expression node, occurring in flow (block).
120+
*/
121+
mdxFlowExpression: MdxFlowExpression
122+
}
123+
124+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
125+
interface PhrasingContentMap {
114126
/**
115127
* MDX expression node, occurring in text (phrasing).
116128
*/

lib/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ function exitMdxExpression(token) {
7373
const value = this.resume()
7474
const estree = token.estree
7575
const node = /** @type {MdxFlowExpression | MdxTextExpression} */ (
76-
this.exit(token)
76+
this.stack[this.stack.length - 1]
7777
)
78+
this.exit(token)
7879
node.value = value
7980

8081
if (estree) {

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,23 @@
3838
],
3939
"dependencies": {
4040
"@types/estree-jsx": "^1.0.0",
41-
"@types/hast": "^2.0.0",
42-
"@types/mdast": "^3.0.0",
43-
"mdast-util-from-markdown": "^1.0.0",
44-
"mdast-util-to-markdown": "^1.0.0"
41+
"@types/hast": "^3.0.0",
42+
"@types/mdast": "^4.0.0",
43+
"mdast-util-from-markdown": "^2.0.0",
44+
"mdast-util-to-markdown": "^2.0.0"
4545
},
4646
"devDependencies": {
4747
"@types/acorn": "^4.0.0",
4848
"@types/node": "^20.0.0",
4949
"acorn": "^8.0.0",
50-
"c8": "^7.0.0",
51-
"micromark-extension-mdx-expression": "^1.0.0",
50+
"c8": "^8.0.0",
51+
"micromark-extension-mdx-expression": "^2.0.0",
5252
"prettier": "^2.0.0",
5353
"remark-cli": "^11.0.0",
5454
"remark-preset-wooorm": "^9.0.0",
5555
"type-coverage": "^2.0.0",
5656
"typescript": "^5.0.0",
57-
"unist-util-remove-position": "^4.0.0",
57+
"unist-util-remove-position": "^5.0.0",
5858
"xo": "^0.54.0"
5959
},
6060
"scripts": {

test.js

Lines changed: 70 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -67,41 +67,44 @@ test('mdxExpressionFromMarkdown', () => {
6767
'should support a flow expression (agnostic)'
6868
)
6969

70+
let tree = fromMarkdown('{\t \n}', {
71+
extensions: [mdxExpression()],
72+
mdastExtensions: [mdxExpressionFromMarkdown]
73+
})
74+
75+
removePosition(tree, {force: true})
76+
7077
assert.deepEqual(
71-
removePosition(
72-
fromMarkdown('{\t \n}', {
73-
extensions: [mdxExpression()],
74-
mdastExtensions: [mdxExpressionFromMarkdown]
75-
}),
76-
true
77-
),
78+
tree,
7879
{type: 'root', children: [{type: 'mdxFlowExpression', value: '\t \n'}]},
7980
'should support an empty flow expression (agnostic)'
8081
)
8182

83+
tree = fromMarkdown('{ a { b } c }', {
84+
extensions: [mdxExpression()],
85+
mdastExtensions: [mdxExpressionFromMarkdown]
86+
})
87+
88+
removePosition(tree, {force: true})
89+
8290
assert.deepEqual(
83-
removePosition(
84-
fromMarkdown('{ a { b } c }', {
85-
extensions: [mdxExpression()],
86-
mdastExtensions: [mdxExpressionFromMarkdown]
87-
}),
88-
true
89-
),
91+
tree,
9092
{
9193
type: 'root',
9294
children: [{type: 'mdxFlowExpression', value: ' a { b } c '}]
9395
},
9496
'should support an balanced braces in a flow expression (agnostic)'
9597
)
9698

99+
tree = fromMarkdown('{ a /* { */ }', {
100+
extensions: [mdxExpression({acorn})],
101+
mdastExtensions: [mdxExpressionFromMarkdown]
102+
})
103+
104+
removePosition(tree, {force: true})
105+
97106
assert.deepEqual(
98-
removePosition(
99-
fromMarkdown('{ a /* { */ }', {
100-
extensions: [mdxExpression({acorn})],
101-
mdastExtensions: [mdxExpressionFromMarkdown]
102-
}),
103-
true
104-
),
107+
tree,
105108
{
106109
type: 'root',
107110
children: [{type: 'mdxFlowExpression', value: ' a /* { */ '}]
@@ -159,14 +162,15 @@ test('mdxExpressionFromMarkdown', () => {
159162
'should support a text expression (agnostic)'
160163
)
161164

165+
tree = fromMarkdown('a {\t \n} c', {
166+
extensions: [mdxExpression()],
167+
mdastExtensions: [mdxExpressionFromMarkdown]
168+
})
169+
170+
removePosition(tree, {force: true})
171+
162172
assert.deepEqual(
163-
removePosition(
164-
fromMarkdown('a {\t \n} c', {
165-
extensions: [mdxExpression()],
166-
mdastExtensions: [mdxExpressionFromMarkdown]
167-
}),
168-
true
169-
),
173+
tree,
170174
{
171175
type: 'root',
172176
children: [
@@ -183,14 +187,15 @@ test('mdxExpressionFromMarkdown', () => {
183187
'should support an empty text expression (agnostic)'
184188
)
185189

190+
tree = fromMarkdown('{ a { b } c }.', {
191+
extensions: [mdxExpression()],
192+
mdastExtensions: [mdxExpressionFromMarkdown]
193+
})
194+
195+
removePosition(tree, {force: true})
196+
186197
assert.deepEqual(
187-
removePosition(
188-
fromMarkdown('{ a { b } c }.', {
189-
extensions: [mdxExpression()],
190-
mdastExtensions: [mdxExpressionFromMarkdown]
191-
}),
192-
true
193-
),
198+
tree,
194199
{
195200
type: 'root',
196201
children: [
@@ -206,14 +211,15 @@ test('mdxExpressionFromMarkdown', () => {
206211
'should support an balanced braces in a flow expression (agnostic)'
207212
)
208213

214+
tree = fromMarkdown('{ a /* { */ }.', {
215+
extensions: [mdxExpression({acorn})],
216+
mdastExtensions: [mdxExpressionFromMarkdown]
217+
})
218+
219+
removePosition(tree, {force: true})
220+
209221
assert.deepEqual(
210-
removePosition(
211-
fromMarkdown('{ a /* { */ }.', {
212-
extensions: [mdxExpression({acorn})],
213-
mdastExtensions: [mdxExpressionFromMarkdown]
214-
}),
215-
true
216-
),
222+
tree,
217223
{
218224
type: 'root',
219225
children: [
@@ -229,19 +235,18 @@ test('mdxExpressionFromMarkdown', () => {
229235
'should support a commented-out unbalanced brace in a flow expression (gnostic)'
230236
)
231237

238+
tree = fromMarkdown('{a}.', {
239+
extensions: [mdxExpression({acorn, addResult: true})],
240+
mdastExtensions: [mdxExpressionFromMarkdown]
241+
})
242+
243+
removePosition(tree, {force: true})
244+
245+
// Cheap clone to remove non-JSON values.
246+
tree = JSON.parse(JSON.stringify(tree))
247+
232248
assert.deepEqual(
233-
// Cheap clone to remove non-JSON values.
234-
JSON.parse(
235-
JSON.stringify(
236-
removePosition(
237-
fromMarkdown('{a}.', {
238-
extensions: [mdxExpression({acorn, addResult: true})],
239-
mdastExtensions: [mdxExpressionFromMarkdown]
240-
}),
241-
true
242-
)
243-
)
244-
),
249+
tree,
245250
{
246251
type: 'root',
247252
children: [
@@ -297,19 +302,18 @@ test('mdxExpressionFromMarkdown', () => {
297302
'should add a `data.estree` if `addResult` was used in the syntax extension'
298303
)
299304

305+
tree = fromMarkdown('A {/*b*/ c // d\n} e {/* f */}.', {
306+
extensions: [mdxExpression({acorn, addResult: true})],
307+
mdastExtensions: [mdxExpressionFromMarkdown]
308+
})
309+
310+
removePosition(tree, {force: true})
311+
312+
// Cheap clone to remove non-JSON values.
313+
tree = JSON.parse(JSON.stringify(tree))
314+
300315
assert.deepEqual(
301-
// Cheap clone to remove non-JSON values.
302-
JSON.parse(
303-
JSON.stringify(
304-
removePosition(
305-
fromMarkdown('A {/*b*/ c // d\n} e {/* f */}.', {
306-
extensions: [mdxExpression({acorn, addResult: true})],
307-
mdastExtensions: [mdxExpressionFromMarkdown]
308-
}),
309-
true
310-
)
311-
)
312-
),
316+
tree,
313317
{
314318
type: 'root',
315319
children: [

0 commit comments

Comments
 (0)