Matthew Phillips
d1f5611feb
Add additional scoping for head buffering ( #6152 )
...
* Add additional scoping for head buffering
* Add test for direct usage of nested component
* Add special scoping for Astro.scopes.render()
* Generate propagation map during the build
* Move to a maybeHead instruction
* Properly serialize for SSR
* More conservative scoping
* Maybe had should honor result._metadata.hasRenderedHead
* Properly type slots
* Allow template result to be passed
* Add changeset
2023-02-07 10:56:32 -05:00
Matthew Phillips
071e1dee7e
Simplified head injection ( #6034 )
...
* Simplified head injection
* Make renderHead also yield an instruction
* Add changeset
* Add mdx test
2023-01-30 11:55:10 -05:00
HiDeoo
7abb1e9056
Fix MDX heading IDs generation when using a frontmatter reference ( #5978 )
...
* Fix MDX heading IDs generation when using a frontmatter reference
* Hoist safelyGetAstroData() call and add statement null check
2023-01-26 12:52:50 -05:00
Ben Holmes
93e633922c
Add SmartyPants flag ( #5769 )
...
* feat: add smartypants flag
* test: smartypants in markdown and mdx
* docs: Smartypants -> SmartyPants
* chore: changeset
* chore: update changeset with 1.0 -> 2.0 in mind
* chore: bump to minor change
2023-01-06 09:26:02 -05:00
Ben Holmes
e2019be6ff
Change frontmatter injection ordering ( #5687 )
...
* feat: make user frontmatter accessible in md
* test: new frontmatter injection
* refactor: move injection utils to remark pkg
* fix: add dist/internal to remark exports
* feat: update frontmater injection in mdx
* tests: new mdx injection
* chore: changeset
* chore: simplify frontmatter destructuring
* fix: remove old _internal references
* refactor: injectedFrontmatter -> remarkPluginFrontmatter
* docs: add content collections change
* chore: changeset heading levels
2023-01-03 16:31:19 -05:00
Chris Swithinbank
efc4363e0b
Support rendering <Fragment>
in MDX <Content />
component ( #5522 )
2022-12-05 21:56:43 +01:00
Thomas Jaggi
2a1c085b19
[MDX] Support remark-rehype options from Astro Markdown config ( #5427 )
...
* [MDX] Support remark-rehype options from Astro Markdown config
* [MDX] Add remarkRehype to MdxOptions, extend with default markdown config
* [MDX] Add remarkRehype to README
* [MDX] Fix remarkRehype inheritance, add tests
* [MDX] Update remarkRehype docs in README
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* [MDX] Fix remarkRehype docs
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2022-11-22 10:12:25 -05:00
Bjorn Lu
dca762cf73
Preserve code element node meta for rehype syntax highlighters ( #5335 )
2022-11-09 08:32:13 -05:00
Ben Holmes
308e565ad3
[MDX] Support recmaPlugins
config ( #5146 )
...
* feat: support recma plugins
* chore: add `test:match` to MDX
* chore: changeset
* docs: add recmaPlugins to README
2022-10-24 14:27:37 -04:00
Nate Moore
cf2bba1e4a
P5: fix MDX memory leak ( #4939 )
...
* fix(astro): tag jsx vnodes with renderer so errors are properly handled
* chore: fix missing package in test
Co-authored-by: Nate Moore <nate@astro.build>
2022-09-30 17:13:44 -05:00
Bjorn Lu
812658ad2a
Remove shamefully-hoist ( #4842 )
2022-09-28 23:13:33 +08:00
Ben Holmes
58a2dca228
Fix: correctly transform import.meta.env.*
in MDX ( #4858 )
...
* fix: serialize route pattern for Netlify edge
Co-authored-by: Jackie Macharia <jackiewmacharia>
* fix: escape import.meta.env in MDX compiler output
* test: env vars in mdx
* chore: changeset
* deps: estree-util-visit, @types/estree
* feat: inject import.meta.env w/ recma
* feat: pull importMetaEnv from vite + astro configs
* test: `import.meta.env` in JSX
* fix: lockfile
* chore: update changeset
* fix: remove stray stashed commit
2022-09-26 18:23:47 -04:00
Ben Holmes
8f8dff4d33
[MDX] Extend Markdown plugin config, with customization options ( #4504 )
...
* test: new combined remark / rehype suite
* fix: use with-plugins fixture
* chore: remove old mdx plugin tests
* docs: add JS docs
* docs: update README with thorough example
* chore: changeset
* fix: add "extends" error message
* fix: ignore string-based plugins in md
* feat: add warning log for string plugins
* docs: highlight `extendPlugins`
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* nit: highlight "extendPlugins"
* fix: md plugins type check
* chore: "defaults" -> "astroDefaults"
* nit: info log when inheriting markdown plugins
* refactor: one big log on new behavior
* dan: dan nit
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2022-08-30 13:38:35 -04:00
Ben Holmes
d4cd7a59fd
Update Markdown type signature to match behavior ( #4423 )
...
* feat: "file" and "url" top-level layout props
* test: markdown file and url
* test: mdx file and url
* feat: update MarkdownInstance + JSDoc improvements
* chore: changeset
2022-08-25 17:08:43 -04:00
Ben Holmes
adb2079796
Fix MDX style imports when layout is not applied ( #4443 )
...
* fix: add "astro.needsHeadRendering" to MDX
* test: style imports in pages without layout
* chore: changeset
2022-08-23 13:25:35 -04:00
Ben Holmes
f7afdb889f
[MDX] Fix remaining inconsistencies with Markdown ( #4268 )
...
* feat: add "file" and "url" to layout props
* feat: add rawContent and compiledContent errs
* fix: add "file" and "url" to frontmatter
* fix: add separate MDX instance type
* types: add MarkdownLayoutProps and MDXLayoutProps
* refactor: simplify MDXLayoutProps
* test: pass file and url to layout
* test: glob components with .default and Content
* feat: add <Content /> to MDX
* feat: declare MDX type module
* fix: [MD] move file and url to layout props only
* chore: changeset
* chore: bump MDX to "minor" with more details
* refactor: remove "file" + "url" top-level props (save for minor)
* revert: MDInstance type def updates (save for minor)
* fix: MDXInstance "default" + "content" types
* fix: bad test layout
* chore: remove getHeaders fro *.mdx
2022-08-12 18:17:26 -04:00
Nate Moore
24d2f7a6e6
Fix namespaced component usage in MDX ( #4272 )
...
* fix(#4209 ): handle namespaced JSX and MDX
* chore: add changeset
* chore: update lockfile
* fix: throw error when componentExport is unresolved
* chore: bump compiler
* chore: bump compiler
* chore: revert example changes
Co-authored-by: Nate Moore <nate@astro.build>
2022-08-12 17:01:05 -05:00
Ben Holmes
4116128082
[MDX] Pass injected frontmatter to layouts ( #4255 )
...
* fix: move layout generation to remark plugin
* test: frontmatter injection in layout
* chore: changeset
* fix: remove content fallback
2022-08-11 12:36:34 -05:00
Ben Holmes
4c2ca5352d
[MDX] Remove frontmatterOptions
( #4204 )
...
* feat: remove frontmatterOptions config
* test: remove custom frontmatter suite
* deps: remove remark-mdx-frontmatter
* docs: remove `frontmatterOptions` config
* chore: changeset
2022-08-08 17:33:35 -05:00
Ben Holmes
2675b8633c
Frontmatter injection for MD and MDX ( #4176 )
...
* feat: inject vfile data as exports
* feat: add vfile to renderMarkdown output
* feat: add safe astroExports parser to utils
* refactor: expose vite-plugin-utils on astro package
* feat: handle astroExports in mdx
* deps: vfile
* chore: lockfile
* test: astroExports in mdx
* refactor: merge plugin exports into forntmatter
* refactor: astroExports -> astro.frontmatter
* refactor: md astroExports -> astro.frontmatter
* feat: astro.frontmatter vite-plugin-markdown
* chore: remove unused import
* fix: inline safelyGetAstroData in MDX integration
* chore: check that frontmatter export is valid export name
* chore: error log naming
* test: mdx remark frontmatter injection
* fix: inconsistent shiki mod resolution
* fix: add new frontmatter and heading props
* test: remark vdata
* fix: spread astro.data.frontmatter
* test deps: mdast-util-to-string, reading-time
* fix: astro-md test package name
* test: md frontmatter injection
* fix: layouts
* deps: remove vite-plugin-utils export
* fix: package lock
* chore: remove dup import
* chore: changeset
* chore: add comment on safelyGetAstroData source
* deps: move mdast-util-to-string + reading-time to test fixture
* chore: move remark plugins to test fixture
* fix: override plugin frontmatter with user frontmatter
* test: md injected frontmatter overrides
* test: frontmatter injection overrides mdx
2022-08-05 18:55:38 -05:00
Matthew Phillips
8eb3a8c6d9
Add test for mdx + React usage ( #4174 )
...
* Add test for mdx + React usage
* Add a changeset
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
2022-08-05 17:13:30 -04:00
Nate Moore
e569f0a5c7
Handle edge case in jsx-runtime ( #4158 )
...
* fix(#4135 ): handle edge case in jsx-runtime
* test: add mdx test case
* chore: fix utils reference
* test: fix mdx escape test
Co-authored-by: Nate Moore <nate@astro.build>
2022-08-05 10:35:47 -05:00
Fred K. Schott
c7efcf57e0
fix missing newline bug in mdx ( #4145 )
2022-08-04 23:12:07 -07:00
Ben Holmes
2968ba2b6f
[MDX] Add headings
and frontmatter
to layout props ( #4134 )
...
* feat: expose headings on layout props
* test: frontmatter AND content
* test: headings in layouts
* chore: changeset
2022-08-03 17:54:55 -04:00
Matthew Phillips
e33fc9bc46
Load configs with Vite when loading with Proload fails ( #4112 )
...
* 4078 breaking test
* Use Vite for loading the config
* Try it
* Fallback to loading with Vite only when needed
* Remove console.error
* Remove extra console.log
* Add a changeset
* Use middlewareMode
2022-08-02 08:08:28 -04:00
Ben Holmes
40ef43a59b
[MDX] Add getHeadings
+ generate anchor links ( #4095 )
...
* deps: mdx github-slugger
* feat: add getHeadings via rehype plugin
* chore: stray console.log
* test: getHeadings w/ & w/0 JSX expressions
* docs: add generated exports
* refactor: pass headings using vfile.data
* deps: vfile
* test: heading anchor IDs
* docs: add collect-headings to default rehype plugins
* chore: changeset
* deps: estree-util-value-to-estree
* refactor: inject getHeadings export the right way!
* deps: switch to acorn
* refactor: just use acorn
* docs: `getHeadings` info structuring
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* docs: clarify `url` example
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* fix: move slugger inside plugin call
* refactor: cleanup code reassignment
* chore: lint
* deps: mdast-util-mdx, test utils
* refactor: add jsToTreeNode util
* feat: expose utils for lib authors
* test: rehype plugins w/ and w/o extends
* test: fixture
* refactor: remove utils from package exports
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
2022-08-01 17:23:56 -04:00
Ben Holmes
1743fe140e
feat: support layout
in MDX frontmatter ( #4088 )
...
* deps: add gray-matter
* feat: support layout frontmatter property
* test: frontmatter, content prop
* docs: update layout recommendation
* deps: fix lockfile
* chore: changeset
* fix: inherit rollup plugin transform
* fix: avoid parsing frontmatter on custom parsers
* fix: match YAML err handling from md
* docs: absolute url to docs
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* chore: formatting
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2022-07-29 11:22:57 -04:00
Matthew Phillips
6120a71e54
Ensure file and url are always present in MDX for Astro.glob ( #4076 )
2022-07-28 10:58:44 -04:00
Ben Holmes
3b8a744524
[MDX] Add Prism and Shiki support ( #4002 )
...
* deps: add rehype-prism, shiki, rehype-pretty-code
* wip: apply rehype plugins depending on config
* wip: cherry-pick jsx-runtime fix?
* deps: rehype-pretty-code -> shiki-twoslash, add rehype-raw
* wip: add jsx-runtime fix
* feat: get shiki working!
* deps: add @astrojs/prism, prismjs, unist-util-visit
* feat: add prism support
* example: add small syntax highlight demo to with-mdx
* deps: remove rehype-prism
* chore: remove unused async
* chore: add .test.js to all mdx tests
* test: shiki, shikiConfig, prism
* fix: remove "is:raw" from prism output
* docs: add syntax highlighting section
* chore: add changeset
* nit: "Shiki config" -> Shiki config
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Revert "wip: add jsx-runtime fix"
This reverts commit 07f4528f44
.
* docs: link to integration README from example
Co-authored-by: Nate Moore <nate@astro.build>
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2022-07-21 16:43:58 -04:00
Ben Holmes
b2b367c969
[MDX] Support YAML frontmatter ( #3995 )
...
* chore: remove old comment
* deps: add remark-frontmatter
* deps: add remark-mdx-frontmatter
* fix: handle null or undefined frontmatter key
* feat: configure frontmatter plugins with defaults
* test: frontmatter and custom frontmatter name
* docs: add frontmatterOptions config
* docs: add "variables" and "frontmatter" docs
* chore: excessible -> accessible
* chore: changeset
* chore: remove bad mdx comment
2022-07-20 21:34:21 -04:00
Ben Holmes
19433eb4a4
[MDX] Support remark and rehype plugins, with defaults ( #3977 )
...
* feaet: allow remark and rehype plugin config
* deps: add remark-gfm, remark-smartypants
* feat: add gfm and smartypants by default
* test: add GFM and remark plugin tests
* feat: preserve default plugins with "extends"
* docs: add remarkPlugins
* docs: add rehypePlugins
* chore: changeset
* fix: remove skip from mdx tests
* chore: dup hyperlink flavor text
* chore: authGen -> autoGen
* nit: markdown -> Markdown
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* nit: markdown -> Markdown 1
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* nit: markdown -> Markdown 2
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* nit: markdown -> Markdown 3
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
* nit: markdown -> Markdown 4
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
2022-07-20 14:14:23 -04:00
Ben Holmes
61fec63044
[MDX] Include url
in glob result ( #3981 )
...
* deps: add es-module-lexer
* feat: inject url export on mdx files
* fix: apply url transform in prod
* test: page urls with overrides
* fix: revert test skips
* chore: changeset
* fix: add newline before export
2022-07-20 10:56:32 -04:00
Nate Moore
032ad1c047
MDX support ( #3706 )
...
* feat: first pass at MDX support
* fix: move built-in JSX renderer to come first
* chore: remove jsx example
* chore: update lockfile
* chore: cleanup example
* fix: missing deps
* refactor: move component render logic to `renderPage`
* chore: update HMR script
* chore: update MDX example
* refactor: prefer unshit
* refactor: remove TODO comment
* fix: remove duplicate identifier
* refactor: cleanup mdx entrypoint
* fix: better html handling
* fix: add tsconfig to mdx package
* chore: update lockfile
* fix: do not sort plugins unless mdx is enabled
* chore: update compiler
* fix(hmr): maybe render head for non-Astro pages
* fix: set initial pageExtensions
* refactor: cleanup addPageExtension
* refactor: remove addPageExtensions from types
* refactor: expose HookParameters type
* fix: only default to astro for MDX
* test: pick up jsx support in test fixtures
* refactor: simplify mdx entrypoint
* test: add basic MDX tests
* test(e2e): add mdx + framework tests
* chore: update lockfile
* test(e2e): fix preact mdx e2e test
* fix(mdx): disable .md support
* test(e2e): fix vue-component test missing mdx
* test(e2e): fix solid component needing import
* fix: allow `client:only="solid"` as an alias to `solid-js`
* chore: move to with-mdx example
* chore: update MDX readme
* chore: update example readme
* chore: bump astro version
* chore: update lockfile
* Update mod.d.ts
* feat: support `export const components` in MDX pages
* chore: update mdx example
* fix: update jsx-runtime with better slot support
* refactor: remove object style support
* chore: cleanup package exports
* chore: add todo comment
* refactor: improve isPage function, move to utils
* refactor: dry up manual HMR updates
* chore: add dev tests for MDX
* chore: prefer set to array
* chore: add changesets
* fix(hmr): flip public/private route
Co-authored-by: Nate Moore <nate@astro.build>
2022-06-30 13:09:09 -05:00