diff options
author | 2022-07-28 10:58:44 -0400 | |
---|---|---|
committer | 2022-07-28 10:58:44 -0400 | |
commit | 6120a71e5425ad55a17ddac800d64a3f50273bce (patch) | |
tree | 012c7405c55f593e31e6bf5a035b34a6761ba65b /packages/integrations/mdx/src/utils.ts | |
parent | 6fb95dbdd6744241e202b3d68509ec5aac0bb07e (diff) | |
download | astro-6120a71e5425ad55a17ddac800d64a3f50273bce.tar.gz astro-6120a71e5425ad55a17ddac800d64a3f50273bce.tar.zst astro-6120a71e5425ad55a17ddac800d64a3f50273bce.zip |
Ensure file and url are always present in MDX for Astro.glob (#4076)
Diffstat (limited to 'packages/integrations/mdx/src/utils.ts')
-rw-r--r-- | packages/integrations/mdx/src/utils.ts | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts index 1091e8511..c824c39c3 100644 --- a/packages/integrations/mdx/src/utils.ts +++ b/packages/integrations/mdx/src/utils.ts @@ -4,16 +4,34 @@ function appendForwardSlash(path: string) { return path.endsWith('/') ? path : path + '/'; } +interface FileInfo { + fileId: string; + fileUrl: string; +} + /** @see 'vite-plugin-utils' for source */ -export function getFileInfo(id: string, config: AstroConfig) { +export function getFileInfo(id: string, config: AstroConfig): FileInfo { const sitePathname = appendForwardSlash( config.site ? new URL(config.base, config.site).pathname : config.base ); + // Try to grab the file's actual URL + let url: URL | undefined = undefined; + try { + url = new URL(`file://${id}`); + } catch {} + const fileId = id.split('?')[0]; - let fileUrl = fileId.includes('/pages/') - ? fileId.replace(/^.*?\/pages\//, sitePathname).replace(/(\/index)?\.mdx$/, '') - : undefined; + let fileUrl: string; + const isPage = fileId.includes('/pages/'); + if(isPage) { + fileUrl = fileId.replace(/^.*?\/pages\//, sitePathname).replace(/(\/index)?\.mdx$/, ''); + } else if(url && url.pathname.startsWith(config.root.pathname)) { + fileUrl = url.pathname.slice(config.root.pathname.length); + } else { + fileUrl = fileId; + } + if (fileUrl && config.trailingSlash === 'always') { fileUrl = appendForwardSlash(fileUrl); } |