aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/markdoc/src/index.ts')
-rw-r--r--packages/integrations/markdoc/src/index.ts26
1 files changed, 17 insertions, 9 deletions
diff --git a/packages/integrations/markdoc/src/index.ts b/packages/integrations/markdoc/src/index.ts
index 64ae4cbc0..0486a44b5 100644
--- a/packages/integrations/markdoc/src/index.ts
+++ b/packages/integrations/markdoc/src/index.ts
@@ -32,7 +32,19 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
name: '@astrojs/markdoc',
hooks: {
'astro:config:setup': async (params) => {
- const { config: astroConfig, addContentEntryType } = params as SetupHookParams;
+ const {
+ config: astroConfig,
+ updateConfig,
+ addContentEntryType,
+ } = params as SetupHookParams;
+
+ updateConfig({
+ vite: {
+ ssr: {
+ external: ['@astrojs/markdoc/prism', '@astrojs/markdoc/shiki'],
+ },
+ },
+ });
markdocConfigResult = await loadMarkdocConfig(astroConfig);
const userMarkdocConfig = markdocConfigResult?.config ?? {};
@@ -52,11 +64,7 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
async getRenderModule({ entry, viteId }) {
const ast = Markdoc.parse(entry.body);
const pluginContext = this;
- const markdocConfig = setupConfig(
- userMarkdocConfig,
- entry,
- markdocConfigResult?.fileUrl.pathname
- );
+ const markdocConfig = await setupConfig(userMarkdocConfig, entry);
const validationErrors = Markdoc.validate(ast, markdocConfig).filter((e) => {
return (
@@ -94,7 +102,7 @@ export default function markdocIntegration(legacyConfig?: any): AstroIntegration
const res = `import { jsx as h } from 'astro/jsx-runtime';
import { Renderer } from '@astrojs/markdoc/components';
- import { collectHeadings, setupConfig, Markdoc } from '@astrojs/markdoc/runtime';
+ import { collectHeadings, setupConfig, setupConfigSync, Markdoc } from '@astrojs/markdoc/runtime';
import * as entry from ${JSON.stringify(viteId + '?astroContentCollectionEntry')};
${
markdocConfigResult
@@ -118,13 +126,13 @@ export function getHeadings() {
''
}
const headingConfig = userConfig.nodes?.heading;
- const config = setupConfig(headingConfig ? { nodes: { heading: headingConfig } } : {}, entry);
+ const config = setupConfigSync(headingConfig ? { nodes: { heading: headingConfig } } : {}, entry);
const ast = Markdoc.Ast.fromJSON(stringifiedAst);
const content = Markdoc.transform(ast, config);
return collectHeadings(Array.isArray(content) ? content : content.children);
}
export async function Content (props) {
- const config = setupConfig({
+ const config = await setupConfig({
...userConfig,
variables: { ...userConfig.variables, ...props },
}, entry);