aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src/runtime.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/markdoc/src/runtime.ts')
-rw-r--r--packages/integrations/markdoc/src/runtime.ts30
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 {