summaryrefslogtreecommitdiff
path: root/packages/integrations/mdx/src/utils.ts
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2022-09-26 18:23:47 -0400
committerGravatar GitHub <noreply@github.com> 2022-09-26 18:23:47 -0400
commit58a2dca2286cb14f6211cf51267c02447e78433a (patch)
tree2595109fafef818469382b1600205665dde264d0 /packages/integrations/mdx/src/utils.ts
parentb73ec1417117ccc479183fec6efcf06990e5b905 (diff)
downloadastro-58a2dca2286cb14f6211cf51267c02447e78433a.tar.gz
astro-58a2dca2286cb14f6211cf51267c02447e78433a.tar.zst
astro-58a2dca2286cb14f6211cf51267c02447e78433a.zip
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
Diffstat (limited to 'packages/integrations/mdx/src/utils.ts')
-rw-r--r--packages/integrations/mdx/src/utils.ts118
1 files changed, 0 insertions, 118 deletions
diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts
index d4d13ab05..60a50c85a 100644
--- a/packages/integrations/mdx/src/utils.ts
+++ b/packages/integrations/mdx/src/utils.ts
@@ -1,32 +1,8 @@
-import { nodeTypes } from '@mdx-js/mdx';
-import type { PluggableList } from '@mdx-js/mdx/lib/core.js';
-import type { Options as MdxRollupPluginOptions } from '@mdx-js/rollup';
import type { Options as AcornOpts } from 'acorn';
import { parse } from 'acorn';
import type { AstroConfig, SSRError } from 'astro';
import matter from 'gray-matter';
-import { bold, yellow } from 'kleur/colors';
import type { MdxjsEsm } from 'mdast-util-mdx';
-import rehypeRaw from 'rehype-raw';
-import remarkGfm from 'remark-gfm';
-import remarkSmartypants from 'remark-smartypants';
-import { remarkInitializeAstroData } from './astro-data-utils.js';
-import rehypeCollectHeadings from './rehype-collect-headings.js';
-import remarkPrism from './remark-prism.js';
-import remarkShiki from './remark-shiki.js';
-
-export type MdxOptions = {
- remarkPlugins?: PluggableList;
- rehypePlugins?: PluggableList;
- /**
- * Choose which remark and rehype plugins to inherit, if any.
- *
- * - "markdown" (default) - inherit your project’s markdown plugin config ([see Markdown docs](https://docs.astro.build/en/guides/markdown-content/#configuring-markdown))
- * - "astroDefaults" - inherit Astro’s default plugins only ([see defaults](https://docs.astro.build/en/reference/configuration-reference/#markdownextenddefaultplugins))
- * - false - do not inherit any plugins
- */
- extendPlugins?: 'markdown' | 'astroDefaults' | false;
-};
function appendForwardSlash(path: string) {
return path.endsWith('/') ? path : path + '/';
@@ -37,9 +13,6 @@ interface FileInfo {
fileUrl: string;
}
-const DEFAULT_REMARK_PLUGINS: PluggableList = [remarkGfm, remarkSmartypants];
-const DEFAULT_REHYPE_PLUGINS: PluggableList = [];
-
/** @see 'vite-plugin-utils' for source */
export function getFileInfo(id: string, config: AstroConfig): FileInfo {
const sitePathname = appendForwardSlash(
@@ -110,97 +83,6 @@ export function jsToTreeNode(
};
}
-export async function getRemarkPlugins(
- mdxOptions: MdxOptions,
- config: AstroConfig
-): Promise<MdxRollupPluginOptions['remarkPlugins']> {
- let remarkPlugins: PluggableList = [
- // Set "vfile.data.astro" for plugins to inject frontmatter
- remarkInitializeAstroData,
- ];
- switch (mdxOptions.extendPlugins) {
- case false:
- break;
- case 'astroDefaults':
- remarkPlugins = [...remarkPlugins, ...DEFAULT_REMARK_PLUGINS];
- break;
- default:
- remarkPlugins = [
- ...remarkPlugins,
- ...(markdownShouldExtendDefaultPlugins(config) ? DEFAULT_REMARK_PLUGINS : []),
- ...ignoreStringPlugins(config.markdown.remarkPlugins ?? []),
- ];
- break;
- }
- if (config.markdown.syntaxHighlight === 'shiki') {
- remarkPlugins.push([await remarkShiki(config.markdown.shikiConfig)]);
- }
- if (config.markdown.syntaxHighlight === 'prism') {
- remarkPlugins.push(remarkPrism);
- }
-
- remarkPlugins = [...remarkPlugins, ...(mdxOptions.remarkPlugins ?? [])];
- return remarkPlugins;
-}
-
-export function getRehypePlugins(
- mdxOptions: MdxOptions,
- config: AstroConfig
-): MdxRollupPluginOptions['rehypePlugins'] {
- let rehypePlugins: PluggableList = [
- // getHeadings() is guaranteed by TS, so we can't allow user to override
- rehypeCollectHeadings,
- // rehypeRaw allows custom syntax highlighters to work without added config
- [rehypeRaw, { passThrough: nodeTypes }] as any,
- ];
- switch (mdxOptions.extendPlugins) {
- case false:
- break;
- case 'astroDefaults':
- rehypePlugins = [...rehypePlugins, ...DEFAULT_REHYPE_PLUGINS];
- break;
- default:
- rehypePlugins = [
- ...rehypePlugins,
- ...(markdownShouldExtendDefaultPlugins(config) ? DEFAULT_REHYPE_PLUGINS : []),
- ...ignoreStringPlugins(config.markdown.rehypePlugins ?? []),
- ];
- break;
- }
-
- rehypePlugins = [...rehypePlugins, ...(mdxOptions.rehypePlugins ?? [])];
- return rehypePlugins;
-}
-
-function markdownShouldExtendDefaultPlugins(config: AstroConfig): boolean {
- return (
- config.markdown.extendDefaultPlugins ||
- (config.markdown.remarkPlugins.length === 0 && config.markdown.rehypePlugins.length === 0)
- );
-}
-
-function ignoreStringPlugins(plugins: any[]) {
- let validPlugins: PluggableList = [];
- let hasInvalidPlugin = false;
- for (const plugin of plugins) {
- if (typeof plugin === 'string') {
- console.warn(yellow(`[MDX] ${bold(plugin)} not applied.`));
- hasInvalidPlugin = true;
- } else if (Array.isArray(plugin) && typeof plugin[0] === 'string') {
- console.warn(yellow(`[MDX] ${bold(plugin[0])} not applied.`));
- hasInvalidPlugin = true;
- } else {
- validPlugins.push(plugin);
- }
- }
- if (hasInvalidPlugin) {
- console.warn(
- `To inherit Markdown plugins in MDX, please use explicit imports in your config instead of "strings." See Markdown docs: https://docs.astro.build/en/guides/markdown-content/#markdown-plugins`
- );
- }
- return validPlugins;
-}
-
// TODO: remove for 1.0
export function handleExtendsNotSupported(pluginConfig: any) {
if (
6bee0fb93b8d73cb82456ee5b28?s=13&d=retro' width='13' height='13' alt='Gravatar' /> natemoo-re 2-24/+24 2022-02-24[ci] release (#2641)astro@0.23.1@astrojs/markdown-remark@0.6.2Gravatar github-actions[bot] 38-90/+81 2022-02-24ensure utf8 encoding when serving html (#2654)Gravatar Fred K. Schott 3-4/+9 2022-02-24fix(core): Issue #2625. error with process.env.LANG larger than 5 (#2645)Gravatar Javier Cortés 2-1/+6 2022-02-24[ci] update lockfile (#2646)Gravatar Fred K. Schott 1-130/+124 2022-02-24chore: upgrade compiler (#2653)Gravatar Nate Moore 3-11/+11 2022-02-24[ci] yarn formatGravatar natemoo-re 2-5/+5 2022-02-24Add fine-grained HMR support (#2649)Gravatar Nate Moore 7-36/+37 2022-02-24[ci] collect statsGravatar FredKSchott 1-0/+1 2022-02-23Fixed incorrect types and imports (#2630)Gravatar Juan Martín Seery 27-35/+37 2022-02-23Add sass dev dep to blog-multiple-authors example (#2643)Gravatar Joel Kuzmarski 1-1/+2 2022-02-23Fix(component): align starting position in Markdown slot (#2631)Gravatar Shinobu Hayashi 4-6/+61 2022-02-23[ci] yarn formatGravatar matthewp 1-1/+1 2022-02-23Run all smoke tests with the static build (#2609)Gravatar Matthew Phillips 2-26/+32 2022-02-23[ci] collect statsGravatar FredKSchott 1-0/+1 2022-02-22[ci] update lockfile (#2624)Gravatar Fred K. Schott 1-171/+201 2022-02-22Fixed shiki import to work with "type": "module" (#2628)Gravatar Juan Martín Seery 3-5/+13