summaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/markdoc/src')
-rw-r--r--packages/integrations/markdoc/src/content-entry-type.ts34
-rw-r--r--packages/integrations/markdoc/src/extensions/prism.ts7
-rw-r--r--packages/integrations/markdoc/src/extensions/shiki.ts7
-rw-r--r--packages/integrations/markdoc/src/html/transform/html-token-transform.ts2
-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.ts6
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