diff options
author | 2023-05-25 11:35:07 -0400 | |
---|---|---|
committer | 2023-05-25 11:35:07 -0400 | |
commit | 16b836411980f18c58ca15712d92cec1b3c95670 (patch) | |
tree | cbcd2443815e225cff53ad1d4a94477bfc367f5a /packages/integrations/markdoc/src/runtime.ts | |
parent | 223e0131fcd3cfc83575ab9860eb2648b7240b35 (diff) | |
download | astro-16b836411980f18c58ca15712d92cec1b3c95670.tar.gz astro-16b836411980f18c58ca15712d92cec1b3c95670.tar.zst astro-16b836411980f18c58ca15712d92cec1b3c95670.zip |
Markdoc - improve syntax highlighting support (#7209)
* feat: prism and shiki support, with better exports!
* chore: update tests
* chore: fix lock
* chore: add prism test
* chore: remove `async` from prism
* docs: update syntax highlight readme
* chore: changeset
* edit: remove `await` from prism docs
* chore: update old changest with new shiki instructions
* fix: add trailing newline on ts-expect-error
* refactor: resolve promises internally
* docs: remove `await` from shiki examples
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 { |