Skip to content

Commit cd24c39

Browse files
authored
feat: Support .mdx extension hook (#85)
1 parent 7989161 commit cd24c39

File tree

4 files changed

+37
-1
lines changed

4 files changed

+37
-1
lines changed

Diff for: index.js

+4
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ var extensions = {
179179
'sucrase/register/jsx',
180180
],
181181
'.litcoffee': 'coffeescript/register',
182+
// The mdx loader hooks both `.md` and `.mdx` when it is imported
183+
// but we only install the hook if `.mdx` is the first file
184+
'.mdx': '@mdx-js/register',
182185
'.mjs': mjsStub,
183186
'.node': null,
184187
'.sucrase.js': {
@@ -347,6 +350,7 @@ var jsVariantExtensions = [
347350
'.esm.js',
348351
'.jsx',
349352
'.litcoffee',
353+
'.mdx',
350354
'.mjs',
351355
'.sucrase.js',
352356
'.sucrase.jsx',

Diff for: test/fixtures/mdx/0/package.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"dependencies": {
3+
"@mdx-js/register": "^2.1.1",
4+
"react": "^18.0.0"
5+
}
6+
}

Diff for: test/fixtures/mdx/0/test.mdx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export const Thing = () => {
2+
var trueKey = true;
3+
var falseKey = false;
4+
var subKey = { subProp: 1 };
5+
// Test harmony object short notation
6+
return { data: { trueKey, falseKey, subKey } };
7+
}
8+
9+
<Thing />

Diff for: test/index.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ function cleanup() {
4949
}
5050

5151
// These modules need newer node features
52-
var minVersions = {};
52+
var minVersions = {
53+
'@mdx-js/register': { major: 12 }
54+
};
5355

5456
var maxVersions = {};
5557

@@ -181,6 +183,21 @@ describe('interpret.extensions', function () {
181183
expect(require(fixture)).toEqual(expected);
182184
break;
183185

186+
case '.mdx':
187+
expected = {
188+
data: {
189+
trueKey: true,
190+
falseKey: false,
191+
subKey: {
192+
subProp: 1,
193+
},
194+
},
195+
};
196+
var component = require(fixture);
197+
// React internals :shrug:
198+
expect(component().type()).toEqual(expected);
199+
break;
200+
184201
case '.toml':
185202
expected = Object.create(null);
186203
expected.data = Object.create(null);

0 commit comments

Comments
 (0)