summaryrefslogtreecommitdiff
path: root/packages/integrations/mdx/src/plugins.ts
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2022-12-16 14:19:53 -0500
committerGravatar GitHub <noreply@github.com> 2022-12-16 14:19:53 -0500
commit5ec0f6ed55b0a14a9663a90a03428345baf126bd (patch)
treed8d8a27888d43b78c84592f9a1a7d266b5968349 /packages/integrations/mdx/src/plugins.ts
parent6f5746746a0bfcfe27e063489cad6a678804288f (diff)
downloadastro-5ec0f6ed55b0a14a9663a90a03428345baf126bd.tar.gz
astro-5ec0f6ed55b0a14a9663a90a03428345baf126bd.tar.zst
astro-5ec0f6ed55b0a14a9663a90a03428345baf126bd.zip
Content Collections (#5291)
* feat: port content plugin as-is * feat: add `fetchContent` to `.astro` * refactor: move more logic to content-internals * refactor: move internals -> content dir * feat: nested dir support * feat: add with-content playground * edit: update README * fix: serialize route pattern for Netlify edge Co-authored-by: Jackie Macharia <jackiewmacharia> * wip: add ?astro-asset-ssr flag * wip: exclude astro-ssr-asset styles from build * revert: SSR asset flag babel changes * feat: only load CSS when mdx is rendered! * fix(vercel): Include all files inside `dist/` instead of only `entry.mjs` (#5175) * chore: only-allow pnpm (#5131) * [MDX] Support `recmaPlugins` config (#5146) * feat: support recma plugins * chore: add `test:match` to MDX * chore: changeset * docs: add recmaPlugins to README * removes default content-visibility styles from image components (#5180) * wip: check renderContent works * nit: injectDelayedAssetPlugin doesn't need enforce * feat: render content with generated entries * feat: renderContent style injection POC * wip: scrappy renderContent binding * deps: parse-imports * feat: only bind renderContent when imported * feat: new-and-improved render-content * fix: update example to use render-content * refactor: extract normalizeFilename helper * feat: move renderContent to `.astro` * feat: add `getStaticPaths` demo 👀 * chore: remove console log * refactor: internals -> internal * fix: style bleed on dynamic routes * chore: remove console log * refactor: move rendercontentmap inside same file * fix: style bleed in dev! * feat: clean up example * refactor: curry generateContent * nit: add datetime demo * refactor: rename and move content plugins * feat: granular content updates in development * chore: console.log * refactor: move write logic, fix edge cases * fix: use z.any() when ~schema is missing * refactor: clean up logging * fix: add delayed asset flag to render map * fix: use new server loader * chore: import type * fix: split delayed assets to separate chunks * chore: bad merge changesets * feat: rework content map to Vite globs * fix: formatted errors * fix: get `renderContent` working with new APIs * refactor: rename to getCollection, getEntry, renderEntry * feat: streamline type alias! * fix: check schema import is an import * refactor: change ~schema -> index with defineCollection * feat: auto apply env.d.ts reference * feat: expose `headings` on `renderEntry` * refactor: expose zod from astro/zod * feat: add Collection util type * refactor: generated types in src/content/ * edit: remove env.d.ts change from with-content * feat: collectionToPaths utility * refactor: migrate `examples/blog` * refactor: simplify [...slug] * fix: invalid date * fix: renderEntry * feat: migrate examples/docs to content! * refactor: union -> enum * fix: remove duplicate header * chore: changeset * Revert "fix: serialize route pattern for Netlify edge" This reverts commit ac46a0d3238af1e6f8c3b8f235163385be1ff732. * fix: lint * fix: include zod in package files * chore: push type gen for astro check * feat: move to single defineCollections file * feat: move examples to new collections model * chore: type check valid collection names * fix: ignore collections path in err logs * refactor: content/index -> content/config * refactor: defineCollections -> defineCollection * fix: update docs to defineCollection * chore: update with-content to new `astro:content` setup * fix: renderEntry styles * fix: bad Collection type * fix: blog types generated * feat: expose injectedFrontmatter on renderEntry * chore: `import type` * chore: add MDX to changeset * fix: template package file * fix: unneeded log on content config change * chore: add `injectedFrontmatter` to generated types * fix: escape import.meta.env in `body` * fix: escape import.meta.env in frontmatter * chore: unused import * fix: use URL for config pathname * feat: allow zod async transforms * deps: devalue * feat: custom slugs + better type checking * fix: update types on config added or removed * chore: add error msg for MDX preview release * refactor: restore old normalizeFilename * fix: add loadContentConfig error classes back * Add initial tests for renderEntry * add fixture tests * Use head propagation APIs in renderEntry * chore: new type gen * fix: sort content keys before writing * fix: avoid writing '.' collection with warning * chore: docs types generated * fix: generated types only once in build * fix: use relative path to config for git * chore: update generated types * fix: glob pattern on valid exts * feat: warn on possible collection typos * chore: better error on bad lazy import * fix: clear gray-matter cache for rawData * fix: wait for config file while generating * test: get collection and get entry basic * test: multiple collections and entries * test: add publishedDate test on entry * tests: getStaticPaths integration * test: ssr endpoint integration * chore: consistent test names * refactor: simplify generates... test * chore: tests lockfile * feat: add `experimental` flag * chore: revert blog and docs examples * chore: add experimental flag to with-content * refactor: reuse contentFileExts * refactor: make contentCollectionCss required * chore: remove parse-imports dependency * chore: remove unresolved idea redundancy * chore: update changeset to minor v * chore: clean up with-content pass 1 * refactor: de-monolith vite-plugin-content * chore: remove maximum jank warning (it's acceptable jank) * refactor: extract types-generator to separate file * refactor: onEvent -> handleEvent * edit: change content log to "types generated" * fix: more experimental checks in prod build * refactor: 2 jsToTreeNode calls -> 1 * feat: change with-content example to blog example * fix: Content component type * Fix use of renderEntry within a slot * fix: warn for non-underscore _ files, refine logs * chore: Content type in tests * fix: types no updating with config changes * fix: remove `result: SSRResult` type * chore: entry var shadowing * fix: bad experimental flag call * wip: skip render entry tests * fix: path resolution for .relative on windows * chore: remove dead code * wip: log entryPath into * fix: use URL for entry * refactor: getEntryInfo normalization * refactor: move debounce to queueEvent only * fix: resolve loader on config error * fix: pathToFileURL -> new URL * fix: dangerous pathname comparison * refactor: move rawEvent -> event mapping to queueEvent * fix: bad type * wip: remove mkdir call * wip: log content paths * fix: more bad paths * wip: more logs * fix: correct glob path * fix: normalize virtual mod path * fix: content server file paths * chore: remove render entry test skip * wip: skip renderEntry tests (windows issues?) * chore: remove console log * feat: renderEntry -> render * chore: add `--experimental-content-collections` * refactor: only skip renderEntry tests on windows * refactor: index.ts barrel export * fix: cli type error * fix: proper test skip on windows * refactor: remove collectionToPaths :( * refactor: use AstroError for frontmatter error * nit: its schema, .* * fix: bad isWindows import * fix: await mod -> mod = await Co-authored-by: Juan Martín Seery <me@juanm04.com> Co-authored-by: 花果山大圣 <316783812@qq.com> Co-authored-by: Tony Sullivan <tony.f.sullivan@outlook.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev> Co-authored-by: bholmesdev <bholmesdev@gmail.com>
Diffstat (limited to 'packages/integrations/mdx/src/plugins.ts')
-rw-r--r--packages/integrations/mdx/src/plugins.ts12
1 files changed, 8 insertions, 4 deletions
diff --git a/packages/integrations/mdx/src/plugins.ts b/packages/integrations/mdx/src/plugins.ts
index 70c5b1545..0ae148746 100644
--- a/packages/integrations/mdx/src/plugins.ts
+++ b/packages/integrations/mdx/src/plugins.ts
@@ -51,14 +51,18 @@ export function remarkInitializeAstroData() {
};
}
-const EXPORT_NAME = 'frontmatter';
-
export function rehypeApplyFrontmatterExport(pageFrontmatter: Record<string, any>) {
return function (tree: any, vfile: VFile) {
const { frontmatter: injectedFrontmatter } = safelyGetAstroData(vfile.data);
const frontmatter = { ...injectedFrontmatter, ...pageFrontmatter };
const exportNodes = [
- jsToTreeNode(`export const ${EXPORT_NAME} = ${JSON.stringify(frontmatter)};`),
+ jsToTreeNode(
+ `export const frontmatter = ${JSON.stringify(
+ frontmatter
+ )};\nexport const _internal = { injectedFrontmatter: ${JSON.stringify(
+ injectedFrontmatter
+ )} };`
+ ),
];
if (frontmatter.layout) {
// NOTE(bholmesdev) 08-22-2022
@@ -69,7 +73,7 @@ export function rehypeApplyFrontmatterExport(pageFrontmatter: Record<string, any
jsToTreeNode(
/** @see 'vite-plugin-markdown' for layout props reference */
`import { jsx as layoutJsx } from 'astro/jsx-runtime';
-
+
export default async function ({ children }) {
const Layout = (await import(${JSON.stringify(frontmatter.layout)})).default;
const { layout, ...content } = frontmatter;