summaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src/runtime.ts
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2023-05-25 11:35:07 -0400
committerGravatar GitHub <noreply@github.com> 2023-05-25 11:35:07 -0400
commit16b836411980f18c58ca15712d92cec1b3c95670 (patch)
treecbcd2443815e225cff53ad1d4a94477bfc367f5a /packages/integrations/markdoc/src/runtime.ts
parent223e0131fcd3cfc83575ab9860eb2648b7240b35 (diff)
downloadastro-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.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 {