diff options
Diffstat (limited to 'packages/integrations/markdoc/src')
-rw-r--r-- | packages/integrations/markdoc/src/content-entry-type.ts | 34 | ||||
-rw-r--r-- | packages/integrations/markdoc/src/extensions/prism.ts | 7 | ||||
-rw-r--r-- | packages/integrations/markdoc/src/extensions/shiki.ts | 7 | ||||
-rw-r--r-- | packages/integrations/markdoc/src/html/transform/html-token-transform.ts | 2 | ||||
-rw-r--r-- | packages/integrations/markdoc/src/runtime-assets-config.ts (renamed from packages/integrations/markdoc/src/experimental-assets-config.ts) | 5 | ||||
-rw-r--r-- | packages/integrations/markdoc/src/runtime.ts | 6 |
6 files changed, 22 insertions, 39 deletions
diff --git a/packages/integrations/markdoc/src/content-entry-type.ts b/packages/integrations/markdoc/src/content-entry-type.ts index 52493fa71..f682e114f 100644 --- a/packages/integrations/markdoc/src/content-entry-type.ts +++ b/packages/integrations/markdoc/src/content-entry-type.ts @@ -1,21 +1,20 @@ import type { Config as MarkdocConfig, Node } from '@markdoc/markdoc'; import Markdoc from '@markdoc/markdoc'; import type { AstroConfig, ContentEntryType } from 'astro'; +import { emitESMImage } from 'astro/assets/utils'; import matter from 'gray-matter'; import fs from 'node:fs'; +import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import type * as rollup from 'rollup'; import type { ErrorPayload as ViteErrorPayload } from 'vite'; import type { ComponentConfig } from './config.js'; -import { MarkdocError, isComponentConfig, isValidUrl, prependForwardSlash } from './utils.js'; -// @ts-expect-error Cannot get the types here without `moduleResolution: 'nodenext'` -import { emitESMImage } from 'astro/assets/utils'; -import path from 'node:path'; -import type * as rollup from 'rollup'; import { htmlTokenTransform } from './html/transform/html-token-transform.js'; import type { MarkdocConfigResult } from './load-config.js'; import type { MarkdocIntegrationOptions } from './options.js'; import { setupConfig } from './runtime.js'; import { getMarkdocTokenizer } from './tokenizer.js'; +import { MarkdocError, isComponentConfig, isValidUrl, prependForwardSlash } from './utils.js'; export async function getContentEntryType({ markdocConfigResult, @@ -97,13 +96,11 @@ export async function getContentEntryType({ }); } - if (astroConfig.experimental.assets) { - await emitOptimizedImages(ast.children, { - astroConfig, - pluginContext, - filePath, - }); - } + await emitOptimizedImages(ast.children, { + astroConfig, + pluginContext, + filePath, + }); const res = `import { Renderer } from '@astrojs/markdoc/components'; import { createGetHeadings, createContentComponent } from '@astrojs/markdoc/runtime'; @@ -111,12 +108,10 @@ ${ markdocConfigUrl ? `import markdocConfig from ${JSON.stringify(markdocConfigUrl.pathname)};` : 'const markdocConfig = {};' -}${ - astroConfig.experimental.assets - ? `\nimport { experimentalAssetsConfig } from '@astrojs/markdoc/experimental-assets-config'; -markdocConfig.nodes = { ...experimentalAssetsConfig.nodes, ...markdocConfig.nodes };` - : '' - } +} + +import { assetsConfig } from '@astrojs/markdoc/runtime-assets-config'; +markdocConfig.nodes = { ...assetsConfig.nodes, ...markdocConfig.nodes }; ${getStringifiedImports(componentConfigByTagMap, 'Tag', astroConfig.root)} ${getStringifiedImports(componentConfigByNodeMap, 'Node', astroConfig.root)} @@ -198,8 +193,7 @@ async function emitOptimizedImages( const src = await emitESMImage( resolved.id, ctx.pluginContext.meta.watchMode, - ctx.pluginContext.emitFile, - { config: ctx.astroConfig } + ctx.pluginContext.emitFile ); node.attributes.__optimizedSrc = src; } else { diff --git a/packages/integrations/markdoc/src/extensions/prism.ts b/packages/integrations/markdoc/src/extensions/prism.ts index e28112c9a..5cfd628ca 100644 --- a/packages/integrations/markdoc/src/extensions/prism.ts +++ b/packages/integrations/markdoc/src/extensions/prism.ts @@ -1,8 +1,5 @@ -// leave space, so organize imports doesn't mess up comments -// @ts-expect-error Cannot find module 'astro/runtime/server/index.js' or its corresponding type declarations. -import { unescapeHTML } from 'astro/runtime/server/index.js'; - import { runHighlighterWithAstro } from '@astrojs/prism/dist/highlighter'; +import { unescapeHTML } from 'astro/runtime/server/index.js'; import { Markdoc, type AstroMarkdocConfig } from '../config.js'; export default function prism(): AstroMarkdocConfig { @@ -16,7 +13,7 @@ export default function prism(): AstroMarkdocConfig { // Use `unescapeHTML` to return `HTMLString` for Astro renderer to inline as HTML return unescapeHTML( `<pre class="${classLanguage}"><code class="${classLanguage}">${html}</code></pre>` - ); + ) as any; }, }, }, diff --git a/packages/integrations/markdoc/src/extensions/shiki.ts b/packages/integrations/markdoc/src/extensions/shiki.ts index 1229a09fb..a553a6bae 100644 --- a/packages/integrations/markdoc/src/extensions/shiki.ts +++ b/packages/integrations/markdoc/src/extensions/shiki.ts @@ -1,9 +1,6 @@ -// leave space, so organize imports doesn't mess up comments -// @ts-expect-error Cannot find module 'astro/runtime/server/index.js' or its corresponding type declarations. -import { unescapeHTML } from 'astro/runtime/server/index.js'; - import Markdoc from '@markdoc/markdoc'; import type { ShikiConfig } from 'astro'; +import { unescapeHTML } from 'astro/runtime/server/index.js'; import type * as shikiTypes from 'shiki'; import { getHighlighter } from 'shiki'; import type { AstroMarkdocConfig } from '../config.js'; @@ -123,7 +120,7 @@ export default async function shiki({ } // Use `unescapeHTML` to return `HTMLString` for Astro renderer to inline as HTML - return unescapeHTML(html); + return unescapeHTML(html) as any; }, }, }, diff --git a/packages/integrations/markdoc/src/html/transform/html-token-transform.ts b/packages/integrations/markdoc/src/html/transform/html-token-transform.ts index 0d5dcfb81..cfa511a9f 100644 --- a/packages/integrations/markdoc/src/html/transform/html-token-transform.ts +++ b/packages/integrations/markdoc/src/html/transform/html-token-transform.ts @@ -1,4 +1,4 @@ -import { Tokenizer } from '@markdoc/markdoc'; +import type { Tokenizer } from '@markdoc/markdoc'; import { Parser } from 'htmlparser2'; import type * as Token from 'markdown-it/lib/token'; diff --git a/packages/integrations/markdoc/src/experimental-assets-config.ts b/packages/integrations/markdoc/src/runtime-assets-config.ts index 2eb96ec99..d93605f6c 100644 --- a/packages/integrations/markdoc/src/experimental-assets-config.ts +++ b/packages/integrations/markdoc/src/runtime-assets-config.ts @@ -3,10 +3,7 @@ import Markdoc from '@markdoc/markdoc'; //@ts-expect-error Cannot find module 'astro:assets' or its corresponding type declarations. import { Image } from 'astro:assets'; -// Separate module to only import `astro:assets` when -// `experimental.assets` flag is set in a project. -// TODO: merge with `./runtime.ts` when `experimental.assets` is baselined. -export const experimentalAssetsConfig: MarkdocConfig = { +export const assetsConfig: MarkdocConfig = { nodes: { image: { attributes: { diff --git a/packages/integrations/markdoc/src/runtime.ts b/packages/integrations/markdoc/src/runtime.ts index 1792d6caf..6a645e5d8 100644 --- a/packages/integrations/markdoc/src/runtime.ts +++ b/packages/integrations/markdoc/src/runtime.ts @@ -6,13 +6,11 @@ import Markdoc, { type RenderableTreeNode, } from '@markdoc/markdoc'; import type { AstroInstance } from 'astro'; -// @ts-expect-error Cannot find module 'astro/runtime/server/index.js' or its corresponding type declarations. import { createComponent, renderComponent } from 'astro/runtime/server/index.js'; -import type { AstroMarkdocConfig } from './config.js'; +import { type AstroMarkdocConfig } from './config.js'; import { setupHeadingConfig } from './heading-ids.js'; import { htmlTag } from './html/tagdefs/html.tag.js'; import type { MarkdocIntegrationOptions } from './options.js'; - /** * Merge user config with default config and set up context (ex. heading ID slugger) * Called on each file's individual transform. @@ -204,7 +202,7 @@ export function createContentComponent( return renderComponent(result, Renderer.name, Renderer, { stringifiedAst, config }, {}); }, propagation: 'self', - }); + } as any); } // statically define a partial MarkdocConfig which registers the required "html-tag" Markdoc tag when the "allowHTML" feature is enabled |