diff options
Diffstat (limited to 'packages/integrations/markdoc/src/runtime.ts')
-rw-r--r-- | packages/integrations/markdoc/src/runtime.ts | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/packages/integrations/markdoc/src/runtime.ts b/packages/integrations/markdoc/src/runtime.ts index 5a59d5fef..939e6d602 100644 --- a/packages/integrations/markdoc/src/runtime.ts +++ b/packages/integrations/markdoc/src/runtime.ts @@ -13,26 +13,19 @@ export { default as Markdoc } from '@markdoc/markdoc'; * Called on each file's individual transform. * TODO: virtual module to merge configs per-build instead of per-file? */ -export function setupConfig( +export async function setupConfig( userConfig: AstroMarkdocConfig, - entry: ContentEntryModule, - markdocConfigPath?: string -): Omit<AstroMarkdocConfig, 'extends'> { + entry: ContentEntryModule +): Promise<Omit<AstroMarkdocConfig, 'extends'>> { let defaultConfig: AstroMarkdocConfig = { ...setupHeadingConfig(), variables: { entry }, }; if (userConfig.extends) { - for (const extension of userConfig.extends) { + for (let extension of userConfig.extends) { if (extension instanceof Promise) { - throw new MarkdocError({ - message: 'An extension passed to `extends` in your markdoc config returns a Promise.', - hint: 'Call `await` for async extensions. Example: `extends: [await myExtension()]`', - location: { - file: markdocConfigPath, - }, - }); + extension = await extension; } defaultConfig = mergeConfig(defaultConfig, extension); @@ -42,6 +35,19 @@ export function setupConfig( return mergeConfig(defaultConfig, userConfig); } +/** Used for synchronous `getHeadings()` function */ +export function setupConfigSync( + userConfig: AstroMarkdocConfig, + entry: ContentEntryModule +): Omit<AstroMarkdocConfig, 'extends'> { + let defaultConfig: AstroMarkdocConfig = { + ...setupHeadingConfig(), + variables: { entry }, + }; + + return mergeConfig(defaultConfig, userConfig); +} + /** Merge function from `@markdoc/markdoc` internals */ function mergeConfig(configA: AstroMarkdocConfig, configB: AstroMarkdocConfig): AstroMarkdocConfig { return { |