Skip to content

Commit

Permalink
Update @types/mdast, mdast utilities
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed Jul 11, 2023
1 parent 4cde52a commit dea54b2
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 75 deletions.
14 changes: 13 additions & 1 deletion index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,19 @@ export interface MdxTextExpressionHast extends HastLiteral {
// Add nodes to mdast content.
declare module 'mdast' {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface StaticPhrasingContentMap {
interface RootContentMap {
/**
* MDX expression node, occurring in text (phrasing).
*/
mdxTextExpression: MdxTextExpression
/**
* MDX expression node, occurring in flow (block).
*/
mdxFlowExpression: MdxFlowExpression
}

// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface PhrasingContentMap {
/**
* MDX expression node, occurring in text (phrasing).
*/
Expand Down
3 changes: 2 additions & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,9 @@ function exitMdxExpression(token) {
const value = this.resume()
const estree = token.estree
const node = /** @type {MdxFlowExpression | MdxTextExpression} */ (
this.exit(token)
this.stack[this.stack.length - 1]
)
this.exit(token)
node.value = value

if (estree) {
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,23 +38,23 @@
],
"dependencies": {
"@types/estree-jsx": "^1.0.0",
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
"mdast-util-from-markdown": "^1.0.0",
"mdast-util-to-markdown": "^1.0.0"
"@types/hast": "^3.0.0",
"@types/mdast": "^4.0.0",
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-to-markdown": "^2.0.0"
},
"devDependencies": {
"@types/acorn": "^4.0.0",
"@types/node": "^20.0.0",
"acorn": "^8.0.0",
"c8": "^7.0.0",
"micromark-extension-mdx-expression": "^1.0.0",
"c8": "^8.0.0",
"micromark-extension-mdx-expression": "^2.0.0",
"prettier": "^2.0.0",
"remark-cli": "^11.0.0",
"remark-preset-wooorm": "^9.0.0",
"type-coverage": "^2.0.0",
"typescript": "^5.0.0",
"unist-util-remove-position": "^4.0.0",
"unist-util-remove-position": "^5.0.0",
"xo": "^0.54.0"
},
"scripts": {
Expand Down
136 changes: 70 additions & 66 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,41 +67,44 @@ test('mdxExpressionFromMarkdown', () => {
'should support a flow expression (agnostic)'
)

let tree = fromMarkdown('{\t \n}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('{\t \n}', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{type: 'root', children: [{type: 'mdxFlowExpression', value: '\t \n'}]},
'should support an empty flow expression (agnostic)'
)

tree = fromMarkdown('{ a { b } c }', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('{ a { b } c }', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{
type: 'root',
children: [{type: 'mdxFlowExpression', value: ' a { b } c '}]
},
'should support an balanced braces in a flow expression (agnostic)'
)

tree = fromMarkdown('{ a /* { */ }', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('{ a /* { */ }', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{
type: 'root',
children: [{type: 'mdxFlowExpression', value: ' a /* { */ '}]
Expand Down Expand Up @@ -159,14 +162,15 @@ test('mdxExpressionFromMarkdown', () => {
'should support a text expression (agnostic)'
)

tree = fromMarkdown('a {\t \n} c', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('a {\t \n} c', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{
type: 'root',
children: [
Expand All @@ -183,14 +187,15 @@ test('mdxExpressionFromMarkdown', () => {
'should support an empty text expression (agnostic)'
)

tree = fromMarkdown('{ a { b } c }.', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('{ a { b } c }.', {
extensions: [mdxExpression()],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{
type: 'root',
children: [
Expand All @@ -206,14 +211,15 @@ test('mdxExpressionFromMarkdown', () => {
'should support an balanced braces in a flow expression (agnostic)'
)

tree = fromMarkdown('{ a /* { */ }.', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

assert.deepEqual(
removePosition(
fromMarkdown('{ a /* { */ }.', {
extensions: [mdxExpression({acorn})],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
),
tree,
{
type: 'root',
children: [
Expand All @@ -229,19 +235,18 @@ test('mdxExpressionFromMarkdown', () => {
'should support a commented-out unbalanced brace in a flow expression (gnostic)'
)

tree = fromMarkdown('{a}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

// Cheap clone to remove non-JSON values.
tree = JSON.parse(JSON.stringify(tree))

assert.deepEqual(
// Cheap clone to remove non-JSON values.
JSON.parse(
JSON.stringify(
removePosition(
fromMarkdown('{a}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
)
)
),
tree,
{
type: 'root',
children: [
Expand Down Expand Up @@ -297,19 +302,18 @@ test('mdxExpressionFromMarkdown', () => {
'should add a `data.estree` if `addResult` was used in the syntax extension'
)

tree = fromMarkdown('A {/*b*/ c // d\n} e {/* f */}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
})

removePosition(tree, {force: true})

// Cheap clone to remove non-JSON values.
tree = JSON.parse(JSON.stringify(tree))

assert.deepEqual(
// Cheap clone to remove non-JSON values.
JSON.parse(
JSON.stringify(
removePosition(
fromMarkdown('A {/*b*/ c // d\n} e {/* f */}.', {
extensions: [mdxExpression({acorn, addResult: true})],
mdastExtensions: [mdxExpressionFromMarkdown]
}),
true
)
)
),
tree,
{
type: 'root',
children: [
Expand Down

0 comments on commit dea54b2

Please sign in to comment.