summaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/src/experimental-assets-config.ts
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2023-03-27 18:04:37 -0400
committerGravatar GitHub <noreply@github.com> 2023-03-27 18:04:37 -0400
commit7c439868a3bc7d466418da9af669966014f3d9fe (patch)
treeaf8a8624a96ed9988f475beaed840df28d864646 /packages/integrations/markdoc/src/experimental-assets-config.ts
parentc13d428a7804b5b9809dbea94a1b17c36714a1e1 (diff)
downloadastro-7c439868a3bc7d466418da9af669966014f3d9fe.tar.gz
astro-7c439868a3bc7d466418da9af669966014f3d9fe.tar.zst
astro-7c439868a3bc7d466418da9af669966014f3d9fe.zip
[Markdoc] New config format with runtime variable support! (#6653)
* deps: esbuild * feat: support direct component imports for render! * deps: add devalue back * refactor: remove unused components prop * refactor: load experimental assets config separately * fix: upate Content type def to support props * refactor: replace astro stub with inline data * feat: pass through viteId to getRenderMod * fix: add back $entry var with defaults convention * chore: remove unneeded validateRenderProps * chore: remove uneeded validateComponents * fix: remove userMarkdocConfig prop * chore: add helpful error for legacy config * deps: kleur * fix: add back `isCapitalized` * fix: log instead of throw to avoid scary stacktrace * chore: delete more old logic (nice) * chore: delete MORE unused utils * chore: comment on separate assets config * chore: remove console.log * chore: general code cleanup * test: new render config * docs: new README * fix: add expect-error on astro:assets * feat: add defineMarkdocConfig helper * docs: update example README * test: add runtime variable * chore: lint * chore: changeset * chore: add component import deletion * docs: add notes on Vite fork * fix: astro check * chore: add `.mts` to markdoc config formats
Diffstat (limited to 'packages/integrations/markdoc/src/experimental-assets-config.ts')
-rw-r--r--packages/integrations/markdoc/src/experimental-assets-config.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/integrations/markdoc/src/experimental-assets-config.ts b/packages/integrations/markdoc/src/experimental-assets-config.ts
new file mode 100644
index 000000000..962755355
--- /dev/null
+++ b/packages/integrations/markdoc/src/experimental-assets-config.ts
@@ -0,0 +1,29 @@
+import type { Config as MarkdocConfig } from '@markdoc/markdoc';
+import Markdoc from '@markdoc/markdoc';
+//@ts-expect-error Cannot find module 'astro:assets' or its corresponding type declarations.
+import { Image } from 'astro:assets';
+
+// Separate module to only import `astro:assets` when
+// `experimental.assets` flag is set in a project.
+// TODO: merge with `./default-config.ts` when `experimental.assets` is baselined.
+export const experimentalAssetsConfig: MarkdocConfig = {
+ nodes: {
+ image: {
+ attributes: {
+ ...Markdoc.nodes.image.attributes,
+ __optimizedSrc: { type: 'Object' },
+ },
+ transform(node, config) {
+ const attributes = node.transformAttributes(config);
+ const children = node.transformChildren(config);
+
+ if (node.type === 'image' && '__optimizedSrc' in node.attributes) {
+ const { __optimizedSrc, ...rest } = node.attributes;
+ return new Markdoc.Tag(Image, { ...rest, src: __optimizedSrc }, children);
+ } else {
+ return new Markdoc.Tag('img', attributes, children);
+ }
+ },
+ },
+ },
+};