summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src
diff options
context:
space:
mode:
authorGravatar hippotastic <6137925+hippotastic@users.noreply.github.com> 2022-06-08 19:41:36 +0200
committerGravatar GitHub <noreply@github.com> 2022-06-08 12:41:36 -0500
commitc549f161cadd76a666672556f2c2d63b5f97f00d (patch)
tree26bc1fba18376703343662ac7615014de769ebab /packages/markdown/remark/src
parent073bab5ec180ab7650f1ffdde4ea981677e413f4 (diff)
downloadastro-c549f161cadd76a666672556f2c2d63b5f97f00d.tar.gz
astro-c549f161cadd76a666672556f2c2d63b5f97f00d.tar.zst
astro-c549f161cadd76a666672556f2c2d63b5f97f00d.zip
Allow AlpineJS syntax extensions in Markdown (#3554)
* Allow AlpineJS syntax extensions in Markdown * Remove unwanted MDX ESM import/export support
Diffstat (limited to 'packages/markdown/remark/src')
-rw-r--r--packages/markdown/remark/src/mdxjs.ts31
-rw-r--r--packages/markdown/remark/src/remark-mdxish.ts2
2 files changed, 32 insertions, 1 deletions
diff --git a/packages/markdown/remark/src/mdxjs.ts b/packages/markdown/remark/src/mdxjs.ts
new file mode 100644
index 000000000..b00c3eb80
--- /dev/null
+++ b/packages/markdown/remark/src/mdxjs.ts
@@ -0,0 +1,31 @@
+// Note: The code in this file is based on `micromark-extension-mdxjs`
+// and was adapted to use our fork `@astrojs/micromark-extension-mdx-jsx`
+// instead of `micromark-extension-mdx-jsx` to allow some extended syntax.
+// See `@astrojs/micromark-extension-mdx-jsx` on NPM for more details.
+// Also, support for ESM imports & exports in Markdown content was removed.
+
+import { Parser } from 'acorn';
+import acornJsx from 'acorn-jsx';
+import { combineExtensions } from 'micromark-util-combine-extensions';
+import { mdxExpression } from 'micromark-extension-mdx-expression';
+import { mdxJsx } from '@astrojs/micromark-extension-mdx-jsx';
+import { mdxMd } from 'micromark-extension-mdx-md';
+import type { Options } from 'micromark-extension-mdx-expression';
+import type { Extension } from 'micromark-util-types';
+
+export function mdxjs(options: Options): Extension {
+ const settings: any = Object.assign(
+ {
+ acorn: Parser.extend(acornJsx()),
+ acornOptions: { ecmaVersion: 2020, sourceType: 'module' },
+ addResult: true
+ },
+ options
+ );
+
+ return combineExtensions([
+ mdxExpression(settings),
+ mdxJsx(settings),
+ mdxMd
+ ]);
+}
diff --git a/packages/markdown/remark/src/remark-mdxish.ts b/packages/markdown/remark/src/remark-mdxish.ts
index 71f36042a..7911f5ec9 100644
--- a/packages/markdown/remark/src/remark-mdxish.ts
+++ b/packages/markdown/remark/src/remark-mdxish.ts
@@ -1,6 +1,6 @@
import type * as fromMarkdown from 'mdast-util-from-markdown';
import type { Tag } from 'mdast-util-mdx-jsx';
-import { mdxjs } from 'micromark-extension-mdxjs';
+import { mdxjs } from './mdxjs.js';
import { mdxFromMarkdown, mdxToMarkdown } from './mdast-util-mdxish.js';
export default function remarkMdxish(this: any, options = {}) {