@astrojs/mdx 1.0.0-beta.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -19
- package/dist/index.d.ts +4 -2
- package/dist/index.js +83 -35
- package/dist/plugins.d.ts +4 -5
- package/dist/plugins.js +36 -80
- package/dist/rehype-collect-headings.d.ts +1 -1
- package/dist/rehype-meta-string.js +2 -3
- package/dist/rehype-optimize-static.d.ts +11 -0
- package/dist/rehype-optimize-static.js +62 -0
- package/dist/remark-images-to-component.d.ts +2 -0
- package/dist/remark-images-to-component.js +83 -0
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +23 -15
- package/package.json +39 -30
- package/template/content-module-types.d.ts +9 -0
- package/.turbo/turbo-build.log +0 -5
- package/CHANGELOG.md +0 -469
- package/src/index.ts +0 -201
- package/src/plugins.ts +0 -246
- package/src/rehype-collect-headings.ts +0 -11
- package/src/rehype-meta-string.ts +0 -17
- package/src/remark-prism.ts +0 -18
- package/src/remark-shiki.ts +0 -95
- package/src/utils.ts +0 -102
- package/test/fixtures/mdx-astro-markdown-remarkRehype/src/pages/index.mdx +0 -5
- package/test/fixtures/mdx-component/src/components/Test.mdx +0 -3
- package/test/fixtures/mdx-component/src/components/WithFragment.mdx +0 -3
- package/test/fixtures/mdx-component/src/pages/glob.astro +0 -20
- package/test/fixtures/mdx-component/src/pages/index.astro +0 -5
- package/test/fixtures/mdx-component/src/pages/w-fragment.astro +0 -5
- package/test/fixtures/mdx-escape/src/components/Em.astro +0 -7
- package/test/fixtures/mdx-escape/src/components/P.astro +0 -1
- package/test/fixtures/mdx-escape/src/components/Title.astro +0 -1
- package/test/fixtures/mdx-escape/src/pages/html-tag.mdx +0 -5
- package/test/fixtures/mdx-escape/src/pages/index.mdx +0 -13
- package/test/fixtures/mdx-frontmatter/src/layouts/Base.astro +0 -38
- package/test/fixtures/mdx-frontmatter/src/pages/glob.json.js +0 -9
- package/test/fixtures/mdx-frontmatter/src/pages/index.mdx +0 -10
- package/test/fixtures/mdx-frontmatter/src/pages/with-headings.mdx +0 -7
- package/test/fixtures/mdx-frontmatter-injection/astro.config.mjs +0 -12
- package/test/fixtures/mdx-frontmatter-injection/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-frontmatter-injection/package.json +0 -12
- package/test/fixtures/mdx-frontmatter-injection/src/layouts/Base.astro +0 -17
- package/test/fixtures/mdx-frontmatter-injection/src/markdown-plugins.mjs +0 -27
- package/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js +0 -6
- package/test/fixtures/mdx-frontmatter-injection/src/pages/page-1.mdx +0 -8
- package/test/fixtures/mdx-frontmatter-injection/src/pages/page-2.mdx +0 -24
- package/test/fixtures/mdx-get-headings/src/pages/pages.json.js +0 -11
- package/test/fixtures/mdx-get-headings/src/pages/test-with-jsx-expressions.mdx +0 -8
- package/test/fixtures/mdx-get-headings/src/pages/test.mdx +0 -9
- package/test/fixtures/mdx-get-static-paths/src/content/1.mdx +0 -5
- package/test/fixtures/mdx-get-static-paths/src/pages/[slug].astro +0 -34
- package/test/fixtures/mdx-infinite-loop/astro.config.ts +0 -6
- package/test/fixtures/mdx-infinite-loop/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-infinite-loop/package.json +0 -10
- package/test/fixtures/mdx-infinite-loop/src/components/Test.js +0 -3
- package/test/fixtures/mdx-infinite-loop/src/pages/doc.mdx +0 -6
- package/test/fixtures/mdx-infinite-loop/src/pages/index.astro +0 -5
- package/test/fixtures/mdx-namespace/astro.config.mjs +0 -6
- package/test/fixtures/mdx-namespace/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-namespace/package.json +0 -10
- package/test/fixtures/mdx-namespace/src/components/Component.jsx +0 -6
- package/test/fixtures/mdx-namespace/src/pages/object.mdx +0 -3
- package/test/fixtures/mdx-namespace/src/pages/star.mdx +0 -3
- package/test/fixtures/mdx-page/astro.config.ts +0 -5
- package/test/fixtures/mdx-page/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-page/package.json +0 -9
- package/test/fixtures/mdx-page/src/pages/index.mdx +0 -3
- package/test/fixtures/mdx-page/src/styles.css +0 -3
- package/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx +0 -25
- package/test/fixtures/mdx-plus-react/astro.config.mjs +0 -6
- package/test/fixtures/mdx-plus-react/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-plus-react/package.json +0 -10
- package/test/fixtures/mdx-plus-react/src/components/Component.jsx +0 -5
- package/test/fixtures/mdx-plus-react/src/pages/index.astro +0 -11
- package/test/fixtures/mdx-slots/src/components/Slotted.astro +0 -4
- package/test/fixtures/mdx-slots/src/components/Test.mdx +0 -15
- package/test/fixtures/mdx-slots/src/pages/glob.astro +0 -11
- package/test/fixtures/mdx-slots/src/pages/index.astro +0 -5
- package/test/fixtures/mdx-syntax-hightlighting/src/pages/index.mdx +0 -9
- package/test/fixtures/mdx-url-export/src/pages/pages.json.js +0 -9
- package/test/fixtures/mdx-url-export/src/pages/test-1.mdx +0 -1
- package/test/fixtures/mdx-url-export/src/pages/test-2.mdx +0 -1
- package/test/fixtures/mdx-url-export/src/pages/with-url-override.mdx +0 -3
- package/test/fixtures/mdx-vite-env-vars/astro.config.mjs +0 -9
- package/test/fixtures/mdx-vite-env-vars/node_modules/.bin/astro +0 -17
- package/test/fixtures/mdx-vite-env-vars/package.json +0 -7
- package/test/fixtures/mdx-vite-env-vars/src/pages/frontmatter.json.js +0 -7
- package/test/fixtures/mdx-vite-env-vars/src/pages/vite-env-vars.mdx +0 -38
- package/test/mdx-astro-markdown-remarkRehype.test.js +0 -85
- package/test/mdx-component.test.js +0 -191
- package/test/mdx-escape.test.js +0 -32
- package/test/mdx-frontmatter-injection.test.js +0 -53
- package/test/mdx-frontmatter.test.js +0 -77
- package/test/mdx-get-headings.test.js +0 -151
- package/test/mdx-get-static-paths.test.js +0 -32
- package/test/mdx-infinite-loop.test.js +0 -30
- package/test/mdx-namespace.test.js +0 -83
- package/test/mdx-page.test.js +0 -64
- package/test/mdx-plugins.test.js +0 -250
- package/test/mdx-plus-react.test.js +0 -25
- package/test/mdx-slots.js +0 -124
- package/test/mdx-syntax-highlighting.test.js +0 -145
- package/test/mdx-url-export.test.js +0 -28
- package/test/mdx-vite-env-vars.test.js +0 -54
- package/tsconfig.json +0 -10
package/CHANGELOG.md
DELETED
|
@@ -1,469 +0,0 @@
|
|
|
1
|
-
# @astrojs/mdx
|
|
2
|
-
|
|
3
|
-
## 1.0.0-beta.2
|
|
4
|
-
|
|
5
|
-
### Major Changes
|
|
6
|
-
|
|
7
|
-
- [#5825](https://github.com/withastro/astro/pull/5825) [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Baseline the experimental `contentCollections` flag. You're free to remove this from your astro config!
|
|
8
|
-
|
|
9
|
-
```diff
|
|
10
|
-
import { defineConfig } from 'astro/config';
|
|
11
|
-
|
|
12
|
-
export default defineConfig({
|
|
13
|
-
- experimental: { contentCollections: true }
|
|
14
|
-
})
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### Minor Changes
|
|
18
|
-
|
|
19
|
-
- [#5782](https://github.com/withastro/astro/pull/5782) [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
|
|
20
|
-
|
|
21
|
-
### Patch Changes
|
|
22
|
-
|
|
23
|
-
- [#5837](https://github.com/withastro/astro/pull/5837) [`12f65a4d5`](https://github.com/withastro/astro/commit/12f65a4d55e3fd2993c2f67b18794dd536280c69) Thanks [@giuseppelt](https://github.com/giuseppelt)! - fix shiki css class replace logic
|
|
24
|
-
|
|
25
|
-
- Updated dependencies [[`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`12f65a4d5`](https://github.com/withastro/astro/commit/12f65a4d55e3fd2993c2f67b18794dd536280c69), [`16107b6a1`](https://github.com/withastro/astro/commit/16107b6a10514ef1b563e585ec9add4b14f42b94), [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f), [`7572f7402`](https://github.com/withastro/astro/commit/7572f7402238da37de748be58d678fedaf863b53)]:
|
|
26
|
-
- @astrojs/prism@2.0.0-beta.0
|
|
27
|
-
- @astrojs/markdown-remark@2.0.0-beta.2
|
|
28
|
-
|
|
29
|
-
## 0.15.0-beta.1
|
|
30
|
-
|
|
31
|
-
### Minor Changes
|
|
32
|
-
|
|
33
|
-
- [#5769](https://github.com/withastro/astro/pull/5769) [`93e633922`](https://github.com/withastro/astro/commit/93e633922c2e449df3bb2357b3683af1d3c0e07b) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Introduce a `smartypants` flag to opt-out of Astro's default SmartyPants plugin.
|
|
34
|
-
|
|
35
|
-
```js
|
|
36
|
-
{
|
|
37
|
-
markdown: {
|
|
38
|
-
smartypants: false,
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
#### Migration
|
|
44
|
-
|
|
45
|
-
You may have disabled Astro's built-in plugins (GitHub-Flavored Markdown and Smartypants) with the `extendDefaultPlugins` option. This has now been split into 2 flags to disable each plugin individually:
|
|
46
|
-
|
|
47
|
-
- `markdown.gfm` to disable GitHub-Flavored Markdown
|
|
48
|
-
- `markdown.smartypants` to disable SmartyPants
|
|
49
|
-
|
|
50
|
-
```diff
|
|
51
|
-
// astro.config.mjs
|
|
52
|
-
import { defineConfig } from 'astro/config';
|
|
53
|
-
|
|
54
|
-
export default defineConfig({
|
|
55
|
-
markdown: {
|
|
56
|
-
- extendDefaultPlugins: false,
|
|
57
|
-
+ smartypants: false,
|
|
58
|
-
+ gfm: false,
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Patch Changes
|
|
64
|
-
|
|
65
|
-
- [#5741](https://github.com/withastro/astro/pull/5741) [`000d3e694`](https://github.com/withastro/astro/commit/000d3e6940839c2aebba1984e6fb3b133cec6749) Thanks [@delucis](https://github.com/delucis)! - Fix broken links in README
|
|
66
|
-
|
|
67
|
-
- Updated dependencies [[`93e633922`](https://github.com/withastro/astro/commit/93e633922c2e449df3bb2357b3683af1d3c0e07b)]:
|
|
68
|
-
- @astrojs/markdown-remark@2.0.0-beta.1
|
|
69
|
-
|
|
70
|
-
## 0.15.0-beta.0
|
|
71
|
-
|
|
72
|
-
### Minor Changes
|
|
73
|
-
|
|
74
|
-
- [#5687](https://github.com/withastro/astro/pull/5687) [`e2019be6f`](https://github.com/withastro/astro/commit/e2019be6ffa46fa33d92cfd346f9ecbe51bb7144) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Give remark and rehype plugins access to user frontmatter via frontmatter injection. This means `data.astro.frontmatter` is now the _complete_ Markdown or MDX document's frontmatter, rather than an empty object.
|
|
75
|
-
|
|
76
|
-
This allows plugin authors to modify existing frontmatter, or compute new properties based on other properties. For example, say you want to compute a full image URL based on an `imageSrc` slug in your document frontmatter:
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
export function remarkInjectSocialImagePlugin() {
|
|
80
|
-
return function (tree, file) {
|
|
81
|
-
const { frontmatter } = file.data.astro;
|
|
82
|
-
frontmatter.socialImageSrc = new URL(frontmatter.imageSrc, 'https://my-blog.com/').pathname;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
#### Content Collections - new `remarkPluginFrontmatter` property
|
|
88
|
-
|
|
89
|
-
We have changed _inject_ frontmatter to _modify_ frontmatter in our docs to improve discoverability. This is based on support forum feedback, where "injection" is rarely the term used.
|
|
90
|
-
|
|
91
|
-
To reflect this, the `injectedFrontmatter` property has been renamed to `remarkPluginFrontmatter`. This should clarify this plugin is still separate from the `data` export Content Collections expose today.
|
|
92
|
-
|
|
93
|
-
#### Migration instructions
|
|
94
|
-
|
|
95
|
-
Plugin authors should now **check for user frontmatter when applying defaults.**
|
|
96
|
-
|
|
97
|
-
For example, say a remark plugin wants to apply a default `title` if none is present. Add a conditional to check if the property is present, and update if none exists:
|
|
98
|
-
|
|
99
|
-
```diff
|
|
100
|
-
export function remarkInjectTitlePlugin() {
|
|
101
|
-
return function (tree, file) {
|
|
102
|
-
const { frontmatter } = file.data.astro;
|
|
103
|
-
+ if (!frontmatter.title) {
|
|
104
|
-
frontmatter.title = 'Default title';
|
|
105
|
-
+ }
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
This differs from previous behavior, where a Markdown file's frontmatter would _always_ override frontmatter injected via remark or reype.
|
|
111
|
-
|
|
112
|
-
- [#5684](https://github.com/withastro/astro/pull/5684) [`a9c292026`](https://github.com/withastro/astro/commit/a9c2920264e36cc5dc05f4adc1912187979edb0d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Refine Markdown and MDX configuration options for ease-of-use.
|
|
113
|
-
|
|
114
|
-
#### Markdown
|
|
115
|
-
|
|
116
|
-
- **Remove `remark-smartypants`** from Astro's default Markdown plugins.
|
|
117
|
-
- **Replace the `extendDefaultPlugins` option** with a simplified `gfm` boolean. This is enabled by default, and can be disabled to remove GitHub-Flavored Markdown.
|
|
118
|
-
- Ensure GitHub-Flavored Markdown is applied whether or not custom `remarkPlugins` or `rehypePlugins` are configured. If you want to apply custom plugins _and_ remove GFM, manually set `gfm: false` in your config.
|
|
119
|
-
|
|
120
|
-
#### MDX
|
|
121
|
-
|
|
122
|
-
- Support _all_ Markdown configuration options (except `drafts`) from your MDX integration config. This includes `syntaxHighlighting` and `shikiConfig` options to further customize the MDX renderer.
|
|
123
|
-
- Simplify `extendDefaults` to an `extendMarkdownConfig` option. MDX options will default to their equivalent in your Markdown config. By setting `extendMarkdownConfig` to false, you can "eject" to set your own syntax highlighting, plugins, and more.
|
|
124
|
-
|
|
125
|
-
#### Migration
|
|
126
|
-
|
|
127
|
-
To preserve your existing Markdown and MDX setup, you may need some configuration changes:
|
|
128
|
-
|
|
129
|
-
##### Smartypants manual installation
|
|
130
|
-
|
|
131
|
-
[Smartypants](https://github.com/silvenon/remark-smartypants) has been removed from Astro's default setup. If you rely on this plugin, [install `remark-smartypants`](https://github.com/silvenon/remark-smartypants#installing) and apply to your `astro.config.*`:
|
|
132
|
-
|
|
133
|
-
```diff
|
|
134
|
-
// astro.config.mjs
|
|
135
|
-
import { defineConfig } from 'astro/config';
|
|
136
|
-
+ import smartypants from 'remark-smartypants';
|
|
137
|
-
|
|
138
|
-
export default defineConfig({
|
|
139
|
-
markdown: {
|
|
140
|
-
+ remarkPlugins: [smartypants],
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
##### Migrate `extendDefaultPlugins` to `gfm`
|
|
146
|
-
|
|
147
|
-
You may have disabled Astro's built-in plugins (GitHub-Flavored Markdown and Smartypants) with the `extendDefaultPlugins` option. Since Smartypants has been removed, this has been renamed to `gfm`.
|
|
148
|
-
|
|
149
|
-
```diff
|
|
150
|
-
// astro.config.mjs
|
|
151
|
-
import { defineConfig } from 'astro/config';
|
|
152
|
-
|
|
153
|
-
export default defineConfig({
|
|
154
|
-
markdown: {
|
|
155
|
-
- extendDefaultPlugins: false,
|
|
156
|
-
+ gfm: false,
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Additionally, applying remark and rehype plugins **no longer disables** `gfm`. You will need to opt-out manually by setting `gfm` to `false`.
|
|
162
|
-
|
|
163
|
-
##### Migrate MDX's `extendPlugins` to `extendMarkdownConfig`
|
|
164
|
-
|
|
165
|
-
You may have used the `extendPlugins` option to manage plugin defaults in MDX. This has been replaced by 2 flags:
|
|
166
|
-
|
|
167
|
-
- `extendMarkdownConfig` (`true` by default) to toggle Markdown config inheritance. This replaces the `extendPlugins: 'markdown'` option.
|
|
168
|
-
- `gfm` (`true` by default) to toggle GitHub-Flavored Markdown in MDX. This replaces the `extendPlugins: 'defaults'` option.
|
|
169
|
-
|
|
170
|
-
### Patch Changes
|
|
171
|
-
|
|
172
|
-
- Updated dependencies [[`e2019be6f`](https://github.com/withastro/astro/commit/e2019be6ffa46fa33d92cfd346f9ecbe51bb7144), [`a9c292026`](https://github.com/withastro/astro/commit/a9c2920264e36cc5dc05f4adc1912187979edb0d)]:
|
|
173
|
-
- @astrojs/markdown-remark@2.0.0-beta.0
|
|
174
|
-
|
|
175
|
-
## 0.14.0
|
|
176
|
-
|
|
177
|
-
### Minor Changes
|
|
178
|
-
|
|
179
|
-
- [#5654](https://github.com/withastro/astro/pull/5654) [`2c65b433b`](https://github.com/withastro/astro/commit/2c65b433bf840a1bb93b0a1947df5949e33512ff) Thanks [@delucis](https://github.com/delucis)! - Run heading ID injection after user plugins
|
|
180
|
-
|
|
181
|
-
⚠️ BREAKING CHANGE ⚠️
|
|
182
|
-
|
|
183
|
-
If you are using a rehype plugin that depends on heading IDs injected by Astro, the IDs will no longer be available when your plugin runs by default.
|
|
184
|
-
|
|
185
|
-
To inject IDs before your plugins run, import and add the `rehypeHeadingIds` plugin to your `rehypePlugins` config:
|
|
186
|
-
|
|
187
|
-
```diff
|
|
188
|
-
// astro.config.mjs
|
|
189
|
-
+ import { rehypeHeadingIds } from '@astrojs/markdown-remark';
|
|
190
|
-
import mdx from '@astrojs/mdx';
|
|
191
|
-
|
|
192
|
-
export default {
|
|
193
|
-
integrations: [mdx()],
|
|
194
|
-
markdown: {
|
|
195
|
-
rehypePlugins: [
|
|
196
|
-
+ rehypeHeadingIds,
|
|
197
|
-
otherPluginThatReliesOnHeadingIDs,
|
|
198
|
-
],
|
|
199
|
-
},
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Patch Changes
|
|
204
|
-
|
|
205
|
-
- [#5667](https://github.com/withastro/astro/pull/5667) [`a5ba4af79`](https://github.com/withastro/astro/commit/a5ba4af79930145f4edf66d45cd40ddad045cc86) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Chore: remove verbose "Now interiting Markdown plugins..." logs
|
|
206
|
-
|
|
207
|
-
- [#5648](https://github.com/withastro/astro/pull/5648) [`853081d1c`](https://github.com/withastro/astro/commit/853081d1c857d8ad8a9634c37ed8fd123d32d241) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Prevent relative image paths in `src/content/`
|
|
208
|
-
|
|
209
|
-
- Updated dependencies [[`853081d1c`](https://github.com/withastro/astro/commit/853081d1c857d8ad8a9634c37ed8fd123d32d241), [`2c65b433b`](https://github.com/withastro/astro/commit/2c65b433bf840a1bb93b0a1947df5949e33512ff)]:
|
|
210
|
-
- @astrojs/markdown-remark@1.2.0
|
|
211
|
-
|
|
212
|
-
## 0.13.0
|
|
213
|
-
|
|
214
|
-
### Minor Changes
|
|
215
|
-
|
|
216
|
-
- [#5291](https://github.com/withastro/astro/pull/5291) [`5ec0f6ed5`](https://github.com/withastro/astro/commit/5ec0f6ed55b0a14a9663a90a03428345baf126bd) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Introduce Content Collections experimental API
|
|
217
|
-
- Organize your Markdown and MDX content into easy-to-manage collections.
|
|
218
|
-
- Add type safety to your frontmatter with schemas.
|
|
219
|
-
- Generate landing pages, static routes, and SSR endpoints from your content using the collection query APIs.
|
|
220
|
-
|
|
221
|
-
## 0.12.2
|
|
222
|
-
|
|
223
|
-
### Patch Changes
|
|
224
|
-
|
|
225
|
-
- [#5586](https://github.com/withastro/astro/pull/5586) [`f4ff69a3c`](https://github.com/withastro/astro/commit/f4ff69a3cd874c8804c6d01c7cbbaed8a8e90be7) Thanks [@delucis](https://github.com/delucis)! - Fix link in MDX integration README
|
|
226
|
-
|
|
227
|
-
- [#5570](https://github.com/withastro/astro/pull/5570) [`3f811eb68`](https://github.com/withastro/astro/commit/3f811eb682d55bd1f908f9b4bc3b795d2859d713) Thanks [@sarah11918](https://github.com/sarah11918)! - Revise README
|
|
228
|
-
|
|
229
|
-
## 0.12.1
|
|
230
|
-
|
|
231
|
-
### Patch Changes
|
|
232
|
-
|
|
233
|
-
- [#5522](https://github.com/withastro/astro/pull/5522) [`efc4363e0`](https://github.com/withastro/astro/commit/efc4363e0baf7f92900e20af339811bb3df42b0e) Thanks [@delucis](https://github.com/delucis)! - Support use of `<Fragment>` in MDX files rendered with `<Content />` component
|
|
234
|
-
|
|
235
|
-
## 0.12.0
|
|
236
|
-
|
|
237
|
-
### Minor Changes
|
|
238
|
-
|
|
239
|
-
- [#5427](https://github.com/withastro/astro/pull/5427) [`2a1c085b1`](https://github.com/withastro/astro/commit/2a1c085b199f24e34424ec8c19041c03602c53c5) Thanks [@backflip](https://github.com/backflip)! - Uses remark-rehype options from astro.config.mjs
|
|
240
|
-
|
|
241
|
-
### Patch Changes
|
|
242
|
-
|
|
243
|
-
- [#5448](https://github.com/withastro/astro/pull/5448) [`ef2ffc7ae`](https://github.com/withastro/astro/commit/ef2ffc7ae9ff554860238ecd2fb3bf6d82b5801b) Thanks [@delucis](https://github.com/delucis)! - Fix broken link in README
|
|
244
|
-
|
|
245
|
-
## 0.11.6
|
|
246
|
-
|
|
247
|
-
### Patch Changes
|
|
248
|
-
|
|
249
|
-
- [#5335](https://github.com/withastro/astro/pull/5335) [`dca762cf7`](https://github.com/withastro/astro/commit/dca762cf734a657d8f126fd6958892b6163a4f67) Thanks [@bluwy](https://github.com/bluwy)! - Preserve code element node `data.meta` in `properties.metastring` for rehype syntax highlighters, like `rehype-pretty-code``
|
|
250
|
-
|
|
251
|
-
## 0.11.5
|
|
252
|
-
|
|
253
|
-
### Patch Changes
|
|
254
|
-
|
|
255
|
-
- [#5146](https://github.com/withastro/astro/pull/5146) [`308e565ad`](https://github.com/withastro/astro/commit/308e565ad39957e3353d72ca5d3bbce1a1b45008) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Support recmaPlugins config option
|
|
256
|
-
|
|
257
|
-
## 0.11.4
|
|
258
|
-
|
|
259
|
-
### Patch Changes
|
|
260
|
-
|
|
261
|
-
- [#4953](https://github.com/withastro/astro/pull/4953) [`a59731995`](https://github.com/withastro/astro/commit/a59731995b93ae69c21dc3adc5c8b482b466d12e) Thanks [@bluwy](https://github.com/bluwy)! - Log markdown hints with console.info
|
|
262
|
-
|
|
263
|
-
## 0.11.3
|
|
264
|
-
|
|
265
|
-
### Patch Changes
|
|
266
|
-
|
|
267
|
-
- [#4842](https://github.com/withastro/astro/pull/4842) [`812658ad2`](https://github.com/withastro/astro/commit/812658ad2ab3732a99e35c4fd903e302e723db46) Thanks [@bluwy](https://github.com/bluwy)! - Add missing dependencies, support strict dependency installation (e.g. pnpm)
|
|
268
|
-
|
|
269
|
-
## 0.11.2
|
|
270
|
-
|
|
271
|
-
### Patch Changes
|
|
272
|
-
|
|
273
|
-
- [#4700](https://github.com/withastro/astro/pull/4700) [`e5f71142e`](https://github.com/withastro/astro/commit/e5f71142eb62bd72456e889dad5774347c3753f2) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Document MDXLayoutProps utility type
|
|
274
|
-
|
|
275
|
-
- [#4858](https://github.com/withastro/astro/pull/4858) [`58a2dca22`](https://github.com/withastro/astro/commit/58a2dca2286cb14f6211cf51267c02447e78433a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Correctly parse import.meta.env in MDX files
|
|
276
|
-
|
|
277
|
-
## 0.11.1
|
|
278
|
-
|
|
279
|
-
### Patch Changes
|
|
280
|
-
|
|
281
|
-
- [#4588](https://github.com/withastro/astro/pull/4588) [`db38f61b2`](https://github.com/withastro/astro/commit/db38f61b2b2dc55f03b28797d19b163b1940f1c8) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix: Add GFM and Smartypants to MDX by default
|
|
282
|
-
|
|
283
|
-
## 0.11.0
|
|
284
|
-
|
|
285
|
-
### Minor Changes
|
|
286
|
-
|
|
287
|
-
- [#4504](https://github.com/withastro/astro/pull/4504) [`8f8dff4d3`](https://github.com/withastro/astro/commit/8f8dff4d339a3a12ee155d81a97132032ef3b622) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Introduce new `extendPlugins` configuration option. This defaults to inheriting all remark and rehype plugins from your `markdown` config, with options to use either Astro's defaults or no inheritance at all.
|
|
288
|
-
|
|
289
|
-
## 0.10.3
|
|
290
|
-
|
|
291
|
-
### Patch Changes
|
|
292
|
-
|
|
293
|
-
- [#4519](https://github.com/withastro/astro/pull/4519) [`a2e8e76c3`](https://github.com/withastro/astro/commit/a2e8e76c303e8d6f39c24c122905a10f06907997) Thanks [@JuanM04](https://github.com/JuanM04)! - Upgraded Shiki to v0.11.1
|
|
294
|
-
|
|
295
|
-
- [#4530](https://github.com/withastro/astro/pull/4530) [`8504cd79b`](https://github.com/withastro/astro/commit/8504cd79b708e0d3bf1a2bb4ff9b86936bdd692b) Thanks [@kylebutts](https://github.com/kylebutts)! - Add custom components to README
|
|
296
|
-
|
|
297
|
-
## 0.10.2
|
|
298
|
-
|
|
299
|
-
### Patch Changes
|
|
300
|
-
|
|
301
|
-
- [#4423](https://github.com/withastro/astro/pull/4423) [`d4cd7a59f`](https://github.com/withastro/astro/commit/d4cd7a59fd38d411c442a818cfaab40f74106628) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Update Markdown type signature to match new markdown plugin,and update top-level layout props for better alignment
|
|
302
|
-
|
|
303
|
-
## 0.10.2-next.0
|
|
304
|
-
|
|
305
|
-
### Patch Changes
|
|
306
|
-
|
|
307
|
-
- [#4423](https://github.com/withastro/astro/pull/4423) [`d4cd7a59f`](https://github.com/withastro/astro/commit/d4cd7a59fd38d411c442a818cfaab40f74106628) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Update Markdown type signature to match new markdown plugin,and update top-level layout props for better alignment
|
|
308
|
-
|
|
309
|
-
## 0.10.1
|
|
310
|
-
|
|
311
|
-
### Patch Changes
|
|
312
|
-
|
|
313
|
-
- [#4443](https://github.com/withastro/astro/pull/4443) [`adb207979`](https://github.com/withastro/astro/commit/adb20797962c280d4d38f335f577fd52a1b48d4b) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix MDX style imports when layout is not applied
|
|
314
|
-
|
|
315
|
-
* [#4428](https://github.com/withastro/astro/pull/4428) [`a2414bf59`](https://github.com/withastro/astro/commit/a2414bf59e2e2cd633aece68e724401c4ad281b9) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix dev server reload performance when globbing from an MDX layout
|
|
316
|
-
|
|
317
|
-
## 0.10.0
|
|
318
|
-
|
|
319
|
-
### Minor Changes
|
|
320
|
-
|
|
321
|
-
- [#4292](https://github.com/withastro/astro/pull/4292) [`f1a52c18a`](https://github.com/withastro/astro/commit/f1a52c18afe66e6d310743ae6884be76f69be265) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Switch from Shiki Twoslash to Astro's Shiki Markdown highlighter
|
|
322
|
-
|
|
323
|
-
## 0.9.0
|
|
324
|
-
|
|
325
|
-
### Minor Changes
|
|
326
|
-
|
|
327
|
-
- [#4268](https://github.com/withastro/astro/pull/4268) [`f7afdb889`](https://github.com/withastro/astro/commit/f7afdb889fe4e97177958c8ec92f80c5f6e5cb51) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Align MD with MDX on layout props and "glob" import results:
|
|
328
|
-
- Add `Content` to MDX
|
|
329
|
-
- Add `file` and `url` to MDX frontmatter (layout import only)
|
|
330
|
-
- Update glob types to reflect differences (lack of `rawContent` and `compiledContent`)
|
|
331
|
-
|
|
332
|
-
### Patch Changes
|
|
333
|
-
|
|
334
|
-
- [#4272](https://github.com/withastro/astro/pull/4272) [`24d2f7a6e`](https://github.com/withastro/astro/commit/24d2f7a6e6700c10c863f826f37bb653d70e3a83) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Properly handle hydration for namespaced components
|
|
335
|
-
|
|
336
|
-
## 0.8.3
|
|
337
|
-
|
|
338
|
-
### Patch Changes
|
|
339
|
-
|
|
340
|
-
- [#4248](https://github.com/withastro/astro/pull/4248) [`869d00935`](https://github.com/withastro/astro/commit/869d0093596b709cfcc1a1a95ee631b48d6d1c26) Thanks [@svemat01](https://github.com/svemat01)! - Load builtin rehype plugins before user plugins instead of after
|
|
341
|
-
|
|
342
|
-
* [#4255](https://github.com/withastro/astro/pull/4255) [`411612808`](https://github.com/withastro/astro/commit/4116128082121ee276d51cb245bf8095be4728a1) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Pass injected frontmatter from remark and rehype plugins to layouts
|
|
343
|
-
|
|
344
|
-
* Updated dependencies [[`1f0dd31d9`](https://github.com/withastro/astro/commit/1f0dd31d9239b5e3dca99c88d021e7a9a3e2054d)]:
|
|
345
|
-
- @astrojs/prism@1.0.1
|
|
346
|
-
|
|
347
|
-
## 0.8.2
|
|
348
|
-
|
|
349
|
-
### Patch Changes
|
|
350
|
-
|
|
351
|
-
- [#4237](https://github.com/withastro/astro/pull/4237) [`9d5ab5508`](https://github.com/withastro/astro/commit/9d5ab55086964fbede17da3d78c209c6d8d13711) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Update "Astro.props.content" -> "Astro.props.frontmatter" in README
|
|
352
|
-
|
|
353
|
-
## 0.8.1
|
|
354
|
-
|
|
355
|
-
### Patch Changes
|
|
356
|
-
|
|
357
|
-
- Updated dependencies [[`04ad44563`](https://github.com/withastro/astro/commit/04ad445632c67bdd60c1704e1e0dcbcaa27b9308)]:
|
|
358
|
-
- @astrojs/prism@1.0.0
|
|
359
|
-
|
|
360
|
-
## 0.8.0
|
|
361
|
-
|
|
362
|
-
### Minor Changes
|
|
363
|
-
|
|
364
|
-
- [#4204](https://github.com/withastro/astro/pull/4204) [`4c2ca5352`](https://github.com/withastro/astro/commit/4c2ca5352d0c4119ed2a9e5e0b78ce71eb1b414a) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Remove `frontmatterOptions` from MDX config
|
|
365
|
-
|
|
366
|
-
### Patch Changes
|
|
367
|
-
|
|
368
|
-
- [#4205](https://github.com/withastro/astro/pull/4205) [`6c9736cbc`](https://github.com/withastro/astro/commit/6c9736cbc90162f1de3ebccd7cfe98332749b639) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Add frontmatter injection instructions to README
|
|
369
|
-
|
|
370
|
-
## 0.7.0
|
|
371
|
-
|
|
372
|
-
### Minor Changes
|
|
373
|
-
|
|
374
|
-
- [#4176](https://github.com/withastro/astro/pull/4176) [`2675b8633`](https://github.com/withastro/astro/commit/2675b8633c5d5c45b237ec87940d5eaf1bfb1b4b) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Support frontmatter injection for MD and MDX using remark and rehype plugins
|
|
375
|
-
|
|
376
|
-
### Patch Changes
|
|
377
|
-
|
|
378
|
-
- [#4181](https://github.com/withastro/astro/pull/4181) [`77cede720`](https://github.com/withastro/astro/commit/77cede720b09bce34f29c3d2d8b505311ce876b1) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Make collect-headings rehype plugin non-overridable
|
|
379
|
-
|
|
380
|
-
* [#4174](https://github.com/withastro/astro/pull/4174) [`8eb3a8c6d`](https://github.com/withastro/astro/commit/8eb3a8c6d9554707963c3a3bc36ed8b68d3cf0fb) Thanks [@matthewp](https://github.com/matthewp)! - Allows using React with automatic imports alongside MDX
|
|
381
|
-
|
|
382
|
-
- [#4145](https://github.com/withastro/astro/pull/4145) [`c7efcf57e`](https://github.com/withastro/astro/commit/c7efcf57e00a0fcde3bc9f813e3cc59902bd484c) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Fix a missing newline bug when `layout` was set.
|
|
383
|
-
|
|
384
|
-
## 0.6.0
|
|
385
|
-
|
|
386
|
-
### Minor Changes
|
|
387
|
-
|
|
388
|
-
- [#4134](https://github.com/withastro/astro/pull/4134) [`2968ba2b6`](https://github.com/withastro/astro/commit/2968ba2b6f00775b6e9872681b390cb466fdbfa2) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Add `headings` and `frontmatter` properties to layout props
|
|
389
|
-
|
|
390
|
-
## 0.5.0
|
|
391
|
-
|
|
392
|
-
### Minor Changes
|
|
393
|
-
|
|
394
|
-
- [#4095](https://github.com/withastro/astro/pull/4095) [`40ef43a59`](https://github.com/withastro/astro/commit/40ef43a59b08a1a8fbcd9f4a53745a9636a4fbb9) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Add IDs to MDX headings and expose via getHeadings() export
|
|
395
|
-
|
|
396
|
-
* [#4114](https://github.com/withastro/astro/pull/4114) [`64432bcb8`](https://github.com/withastro/astro/commit/64432bcb873efd0e4297c00fc9583a1fe516dfe7) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Refactor `@astrojs/mdx` and `@astrojs/markdown-remark` to use `@astrojs/prism` instead of duplicating the code
|
|
397
|
-
|
|
398
|
-
### Patch Changes
|
|
399
|
-
|
|
400
|
-
- [#4112](https://github.com/withastro/astro/pull/4112) [`e33fc9bc4`](https://github.com/withastro/astro/commit/e33fc9bc46ff0a30013deb6dc76e545e70cc3a3e) Thanks [@matthewp](https://github.com/matthewp)! - Fix MDX working with a ts config file
|
|
401
|
-
|
|
402
|
-
* [#4049](https://github.com/withastro/astro/pull/4049) [`b60cc0538`](https://github.com/withastro/astro/commit/b60cc0538bc5c68dd411117780d20d892530789d) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improve `injectScript` handling for non-Astro pages
|
|
403
|
-
|
|
404
|
-
* Updated dependencies [[`64432bcb8`](https://github.com/withastro/astro/commit/64432bcb873efd0e4297c00fc9583a1fe516dfe7)]:
|
|
405
|
-
- @astrojs/prism@0.7.0
|
|
406
|
-
|
|
407
|
-
## 0.4.0
|
|
408
|
-
|
|
409
|
-
### Minor Changes
|
|
410
|
-
|
|
411
|
-
- [#4088](https://github.com/withastro/astro/pull/4088) [`1743fe140`](https://github.com/withastro/astro/commit/1743fe140eb58d60e26cbd11a066bb60de046e0c) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Support "layout" frontmatter property
|
|
412
|
-
|
|
413
|
-
## 0.3.1
|
|
414
|
-
|
|
415
|
-
### Patch Changes
|
|
416
|
-
|
|
417
|
-
- [#4076](https://github.com/withastro/astro/pull/4076) [`6120a71e5`](https://github.com/withastro/astro/commit/6120a71e5425ad55a17ddac800d64a3f50273bce) Thanks [@matthewp](https://github.com/matthewp)! - Ensure file and url are always present in MDX for Astro.glob
|
|
418
|
-
|
|
419
|
-
## 0.3.0
|
|
420
|
-
|
|
421
|
-
### Minor Changes
|
|
422
|
-
|
|
423
|
-
- [#3977](https://github.com/withastro/astro/pull/3977) [`19433eb4a`](https://github.com/withastro/astro/commit/19433eb4a4441522f68492ca914ad2ab4f061343) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Add remarkPlugins and rehypePlugins to config, with the same default plugins as our standard Markdown parser
|
|
424
|
-
|
|
425
|
-
* [#4002](https://github.com/withastro/astro/pull/4002) [`3b8a74452`](https://github.com/withastro/astro/commit/3b8a7445247221100462ba035f6778b43ea180e7) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Support Prism and Shiki syntax highlighting based on project config
|
|
426
|
-
|
|
427
|
-
- [#3995](https://github.com/withastro/astro/pull/3995) [`b2b367c96`](https://github.com/withastro/astro/commit/b2b367c969493aaf21c974064beb241d05228066) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Support YAML frontmatter in MDX files
|
|
428
|
-
|
|
429
|
-
### Patch Changes
|
|
430
|
-
|
|
431
|
-
- [#4050](https://github.com/withastro/astro/pull/4050) [`9ab66c4ba`](https://github.com/withastro/astro/commit/9ab66c4ba9bf2250990114c76b792f26d0694365) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Add support for injected "page-ssr" scripts
|
|
432
|
-
|
|
433
|
-
* [#3981](https://github.com/withastro/astro/pull/3981) [`61fec6304`](https://github.com/withastro/astro/commit/61fec63044e1585348e8405bee6fdf4dec635efa) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Include page url in MDX glob result
|
|
434
|
-
|
|
435
|
-
## 0.2.1
|
|
436
|
-
|
|
437
|
-
### Patch Changes
|
|
438
|
-
|
|
439
|
-
- [#3937](https://github.com/withastro/astro/pull/3937) [`31f9c0bf0`](https://github.com/withastro/astro/commit/31f9c0bf029ffa4b470e620f2c32e1370643e81e) Thanks [@delucis](https://github.com/delucis)! - Roll back supported Node engines
|
|
440
|
-
|
|
441
|
-
## 0.2.0
|
|
442
|
-
|
|
443
|
-
### Minor Changes
|
|
444
|
-
|
|
445
|
-
- [#3914](https://github.com/withastro/astro/pull/3914) [`b48767985`](https://github.com/withastro/astro/commit/b48767985359bd359df8071324952ea5f2bc0d86) Thanks [@ran-dall](https://github.com/ran-dall)! - Rollback supported `node@16` version. Minimum versions are now `node@14.20.0` or `node@16.14.0`.
|
|
446
|
-
|
|
447
|
-
## 0.1.1
|
|
448
|
-
|
|
449
|
-
### Patch Changes
|
|
450
|
-
|
|
451
|
-
- [#3885](https://github.com/withastro/astro/pull/3885) [`bf5d1cc1e`](https://github.com/withastro/astro/commit/bf5d1cc1e71da38a14658c615e9481f2145cc6e7) Thanks [@delucis](https://github.com/delucis)! - Integration README fixes
|
|
452
|
-
|
|
453
|
-
## 0.1.0
|
|
454
|
-
|
|
455
|
-
### Minor Changes
|
|
456
|
-
|
|
457
|
-
- [#3871](https://github.com/withastro/astro/pull/3871) [`1cc5b7890`](https://github.com/withastro/astro/commit/1cc5b78905633608e5b07ad291f916f54e67feb1) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Update supported `node` versions. Minimum versions are now `node@14.20.0` or `node@16.16.0`.
|
|
458
|
-
|
|
459
|
-
## 0.0.3
|
|
460
|
-
|
|
461
|
-
### Patch Changes
|
|
462
|
-
|
|
463
|
-
- [#3854](https://github.com/withastro/astro/pull/3854) [`b012ee55`](https://github.com/withastro/astro/commit/b012ee55b107dea0730286263b27d83e530fad5d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - [astro add] Support adapters and third party packages
|
|
464
|
-
|
|
465
|
-
## 0.0.2
|
|
466
|
-
|
|
467
|
-
### Patch Changes
|
|
468
|
-
|
|
469
|
-
- [#3706](https://github.com/withastro/astro/pull/3706) [`032ad1c0`](https://github.com/withastro/astro/commit/032ad1c047a62dd663067cc562537d16f2872aa7) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Initial release! 🎉
|
package/src/index.ts
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { markdownConfigDefaults } from '@astrojs/markdown-remark';
|
|
2
|
-
import { toRemarkInitializeAstroData } from '@astrojs/markdown-remark/dist/internal.js';
|
|
3
|
-
import { compile as mdxCompile } from '@mdx-js/mdx';
|
|
4
|
-
import { PluggableList } from '@mdx-js/mdx/lib/core.js';
|
|
5
|
-
import mdxPlugin, { Options as MdxRollupPluginOptions } from '@mdx-js/rollup';
|
|
6
|
-
import type { AstroIntegration } from 'astro';
|
|
7
|
-
import { parse as parseESM } from 'es-module-lexer';
|
|
8
|
-
import fs from 'node:fs/promises';
|
|
9
|
-
import type { Options as RemarkRehypeOptions } from 'remark-rehype';
|
|
10
|
-
import { VFile } from 'vfile';
|
|
11
|
-
import type { Plugin as VitePlugin } from 'vite';
|
|
12
|
-
import { getRehypePlugins, getRemarkPlugins, recmaInjectImportMetaEnvPlugin } from './plugins.js';
|
|
13
|
-
import { getFileInfo, parseFrontmatter } from './utils.js';
|
|
14
|
-
|
|
15
|
-
const RAW_CONTENT_ERROR =
|
|
16
|
-
'MDX does not support rawContent()! If you need to read the Markdown contents to calculate values (ex. reading time), we suggest injecting frontmatter via remark plugins. Learn more on our docs: https://docs.astro.build/en/guides/integrations-guide/mdx/#inject-frontmatter-via-remark-or-rehype-plugins';
|
|
17
|
-
|
|
18
|
-
const COMPILED_CONTENT_ERROR =
|
|
19
|
-
'MDX does not support compiledContent()! If you need to read the HTML contents to calculate values (ex. reading time), we suggest injecting frontmatter via rehype plugins. Learn more on our docs: https://docs.astro.build/en/guides/integrations-guide/mdx/#inject-frontmatter-via-remark-or-rehype-plugins';
|
|
20
|
-
|
|
21
|
-
export type MdxOptions = Omit<typeof markdownConfigDefaults, 'remarkPlugins' | 'rehypePlugins'> & {
|
|
22
|
-
extendMarkdownConfig: boolean;
|
|
23
|
-
recmaPlugins: PluggableList;
|
|
24
|
-
// Markdown allows strings as remark and rehype plugins.
|
|
25
|
-
// This is not supported by the MDX compiler, so override types here.
|
|
26
|
-
remarkPlugins: PluggableList;
|
|
27
|
-
rehypePlugins: PluggableList;
|
|
28
|
-
remarkRehype: RemarkRehypeOptions;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export default function mdx(partialMdxOptions: Partial<MdxOptions> = {}): AstroIntegration {
|
|
32
|
-
return {
|
|
33
|
-
name: '@astrojs/mdx',
|
|
34
|
-
hooks: {
|
|
35
|
-
'astro:config:setup': async ({ updateConfig, config, addPageExtension, command }: any) => {
|
|
36
|
-
addPageExtension('.mdx');
|
|
37
|
-
|
|
38
|
-
const extendMarkdownConfig =
|
|
39
|
-
partialMdxOptions.extendMarkdownConfig ?? defaultOptions.extendMarkdownConfig;
|
|
40
|
-
|
|
41
|
-
const mdxOptions = applyDefaultOptions({
|
|
42
|
-
options: partialMdxOptions,
|
|
43
|
-
defaults: extendMarkdownConfig ? config.markdown : defaultOptions,
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
const mdxPluginOpts: MdxRollupPluginOptions = {
|
|
47
|
-
remarkPlugins: await getRemarkPlugins(mdxOptions, config),
|
|
48
|
-
rehypePlugins: getRehypePlugins(mdxOptions),
|
|
49
|
-
recmaPlugins: mdxOptions.recmaPlugins,
|
|
50
|
-
remarkRehypeOptions: mdxOptions.remarkRehype,
|
|
51
|
-
jsx: true,
|
|
52
|
-
jsxImportSource: 'astro',
|
|
53
|
-
// Note: disable `.md` (and other alternative extensions for markdown files like `.markdown`) support
|
|
54
|
-
format: 'mdx',
|
|
55
|
-
mdExtensions: [],
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
let importMetaEnv: Record<string, any> = {
|
|
59
|
-
SITE: config.site,
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
updateConfig({
|
|
63
|
-
vite: {
|
|
64
|
-
plugins: [
|
|
65
|
-
{
|
|
66
|
-
enforce: 'pre',
|
|
67
|
-
...mdxPlugin(mdxPluginOpts),
|
|
68
|
-
configResolved(resolved) {
|
|
69
|
-
importMetaEnv = { ...importMetaEnv, ...resolved.env };
|
|
70
|
-
},
|
|
71
|
-
// Override transform to alter code before MDX compilation
|
|
72
|
-
// ex. inject layouts
|
|
73
|
-
async transform(_, id) {
|
|
74
|
-
if (!id.endsWith('mdx')) return;
|
|
75
|
-
|
|
76
|
-
// Read code from file manually to prevent Vite from parsing `import.meta.env` expressions
|
|
77
|
-
const { fileId } = getFileInfo(id, config);
|
|
78
|
-
const code = await fs.readFile(fileId, 'utf-8');
|
|
79
|
-
|
|
80
|
-
const { data: frontmatter, content: pageContent } = parseFrontmatter(code, id);
|
|
81
|
-
const compiled = await mdxCompile(new VFile({ value: pageContent, path: id }), {
|
|
82
|
-
...mdxPluginOpts,
|
|
83
|
-
remarkPlugins: [
|
|
84
|
-
// Ensure `data.astro` is available to all remark plugins
|
|
85
|
-
toRemarkInitializeAstroData({ userFrontmatter: frontmatter }),
|
|
86
|
-
...(mdxPluginOpts.remarkPlugins ?? []),
|
|
87
|
-
],
|
|
88
|
-
recmaPlugins: [
|
|
89
|
-
...(mdxPluginOpts.recmaPlugins ?? []),
|
|
90
|
-
() => recmaInjectImportMetaEnvPlugin({ importMetaEnv }),
|
|
91
|
-
],
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
code: escapeViteEnvReferences(String(compiled.value)),
|
|
96
|
-
map: compiled.map,
|
|
97
|
-
};
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
name: '@astrojs/mdx-postprocess',
|
|
102
|
-
// These transforms must happen *after* JSX runtime transformations
|
|
103
|
-
transform(code, id) {
|
|
104
|
-
if (!id.endsWith('.mdx')) return;
|
|
105
|
-
|
|
106
|
-
const [moduleImports, moduleExports] = parseESM(code);
|
|
107
|
-
|
|
108
|
-
// Fragment import should already be injected, but check just to be safe.
|
|
109
|
-
const importsFromJSXRuntime = moduleImports
|
|
110
|
-
.filter(({ n }) => n === 'astro/jsx-runtime')
|
|
111
|
-
.map(({ ss, se }) => code.substring(ss, se));
|
|
112
|
-
const hasFragmentImport = importsFromJSXRuntime.some((statement) =>
|
|
113
|
-
/[\s,{](Fragment,|Fragment\s*})/.test(statement)
|
|
114
|
-
);
|
|
115
|
-
if (!hasFragmentImport) {
|
|
116
|
-
code = 'import { Fragment } from "astro/jsx-runtime"\n' + code;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const { fileUrl, fileId } = getFileInfo(id, config);
|
|
120
|
-
if (!moduleExports.includes('url')) {
|
|
121
|
-
code += `\nexport const url = ${JSON.stringify(fileUrl)};`;
|
|
122
|
-
}
|
|
123
|
-
if (!moduleExports.includes('file')) {
|
|
124
|
-
code += `\nexport const file = ${JSON.stringify(fileId)};`;
|
|
125
|
-
}
|
|
126
|
-
if (!moduleExports.includes('rawContent')) {
|
|
127
|
-
code += `\nexport function rawContent() { throw new Error(${JSON.stringify(
|
|
128
|
-
RAW_CONTENT_ERROR
|
|
129
|
-
)}) };`;
|
|
130
|
-
}
|
|
131
|
-
if (!moduleExports.includes('compiledContent')) {
|
|
132
|
-
code += `\nexport function compiledContent() { throw new Error(${JSON.stringify(
|
|
133
|
-
COMPILED_CONTENT_ERROR
|
|
134
|
-
)}) };`;
|
|
135
|
-
}
|
|
136
|
-
if (!moduleExports.includes('Content')) {
|
|
137
|
-
// Make `Content` the default export so we can wrap `MDXContent` and pass in `Fragment`
|
|
138
|
-
code = code.replace('export default MDXContent;', '');
|
|
139
|
-
code += `\nexport const Content = (props = {}) => MDXContent({
|
|
140
|
-
...props,
|
|
141
|
-
components: { Fragment, ...props.components },
|
|
142
|
-
});
|
|
143
|
-
export default Content;`;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Ensures styles and scripts are injected into a `<head>`
|
|
147
|
-
// When a layout is not applied
|
|
148
|
-
code += `\nContent[Symbol.for('astro.needsHeadRendering')] = !Boolean(frontmatter.layout);`;
|
|
149
|
-
|
|
150
|
-
if (command === 'dev') {
|
|
151
|
-
// TODO: decline HMR updates until we have a stable approach
|
|
152
|
-
code += `\nif (import.meta.hot) {
|
|
153
|
-
import.meta.hot.decline();
|
|
154
|
-
}`;
|
|
155
|
-
}
|
|
156
|
-
return escapeViteEnvReferences(code);
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
] as VitePlugin[],
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const defaultOptions: MdxOptions = {
|
|
168
|
-
...markdownConfigDefaults,
|
|
169
|
-
extendMarkdownConfig: true,
|
|
170
|
-
recmaPlugins: [],
|
|
171
|
-
remarkPlugins: [],
|
|
172
|
-
rehypePlugins: [],
|
|
173
|
-
remarkRehype: {},
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
function applyDefaultOptions({
|
|
177
|
-
options,
|
|
178
|
-
defaults,
|
|
179
|
-
}: {
|
|
180
|
-
options: Partial<MdxOptions>;
|
|
181
|
-
defaults: MdxOptions;
|
|
182
|
-
}): MdxOptions {
|
|
183
|
-
return {
|
|
184
|
-
syntaxHighlight: options.syntaxHighlight ?? defaults.syntaxHighlight,
|
|
185
|
-
extendMarkdownConfig: options.extendMarkdownConfig ?? defaults.extendMarkdownConfig,
|
|
186
|
-
recmaPlugins: options.recmaPlugins ?? defaults.recmaPlugins,
|
|
187
|
-
remarkRehype: options.remarkRehype ?? defaults.remarkRehype,
|
|
188
|
-
gfm: options.gfm ?? defaults.gfm,
|
|
189
|
-
smartypants: options.smartypants ?? defaults.smartypants,
|
|
190
|
-
remarkPlugins: options.remarkPlugins ?? defaults.remarkPlugins,
|
|
191
|
-
rehypePlugins: options.rehypePlugins ?? defaults.rehypePlugins,
|
|
192
|
-
shikiConfig: options.shikiConfig ?? defaults.shikiConfig,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Converts the first dot in `import.meta.env` to its Unicode escape sequence,
|
|
197
|
-
// which prevents Vite from replacing strings like `import.meta.env.SITE`
|
|
198
|
-
// in our JS representation of loaded Markdown files
|
|
199
|
-
function escapeViteEnvReferences(code: string) {
|
|
200
|
-
return code.replace(/import\.meta\.env/g, 'import\\u002Emeta.env');
|
|
201
|
-
}
|