aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src')
-rw-r--r--packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/layouts/Base.astro17
-rw-r--r--packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/markdown-plugins.mjs27
-rw-r--r--packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js6
-rw-r--r--packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-1.mdx8
-rw-r--r--packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-2.mdx24
5 files changed, 82 insertions, 0 deletions
diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/layouts/Base.astro b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/layouts/Base.astro
new file mode 100644
index 000000000..b3d55f0a8
--- /dev/null
+++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/layouts/Base.astro
@@ -0,0 +1,17 @@
+---
+const defaults = { title: 'Frontmatter not passed to layout!' }
+const { frontmatter = defaults, content = defaults } = Astro.props;
+---
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{frontmatter.title}</title>
+</head>
+<body>
+ <slot />
+</body>
+</html>
diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/markdown-plugins.mjs b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/markdown-plugins.mjs
new file mode 100644
index 000000000..0366bbfe9
--- /dev/null
+++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/markdown-plugins.mjs
@@ -0,0 +1,27 @@
+import { toString } from 'mdast-util-to-string';
+import getReadingTime from 'reading-time';
+import { visit } from 'unist-util-visit';
+
+export function rehypeReadingTime() {
+ return function (tree, { data }) {
+ const readingTime = getReadingTime(toString(tree));
+ data.astro.frontmatter.injectedReadingTime = readingTime;
+ };
+}
+
+export function remarkTitle() {
+ return function (tree, { data }) {
+ visit(tree, ['heading'], (node) => {
+ if (node.depth === 1) {
+ data.astro.frontmatter.title = toString(node.children);
+ }
+ });
+ };
+}
+
+export function remarkDescription() {
+ return function (tree, vfile) {
+ const { frontmatter } = vfile.data.astro;
+ frontmatter.description = `Processed by remarkDescription plugin: ${frontmatter.description}`
+ };
+}
diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js
new file mode 100644
index 000000000..63248dc56
--- /dev/null
+++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/glob.json.js
@@ -0,0 +1,6 @@
+export async function GET() {
+ const docs = await import.meta.glob('./*.mdx', { eager: true });
+ return new Response(
+ JSON.stringify(Object.values(docs).map(doc => doc.frontmatter))
+ );
+}
diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-1.mdx b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-1.mdx
new file mode 100644
index 000000000..0d96d95b9
--- /dev/null
+++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-1.mdx
@@ -0,0 +1,8 @@
+---
+layout: '../layouts/Base.astro'
+description: Page 1 description
+---
+
+# Page 1
+
+Look at that!
diff --git a/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-2.mdx b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-2.mdx
new file mode 100644
index 000000000..fe6a8286b
--- /dev/null
+++ b/packages/integrations/mdx/test/fixtures/mdx-frontmatter-injection/src/pages/page-2.mdx
@@ -0,0 +1,24 @@
+---
+layout: '../layouts/Base.astro'
+description: Page 2 description
+---
+
+# Page 2
+
+## Table of contents
+
+## Section 1
+
+Some text!
+
+### Subsection 1
+
+Some subsection test!
+
+### Subsection 2
+
+Oh cool, more text!
+
+## Section 2
+
+More content