diff options
author | 2023-03-16 15:10:46 +0100 | |
---|---|---|
committer | 2023-03-16 15:10:46 +0100 | |
commit | 90e5f87d03215a833bb6ac91f9548670a25ce659 (patch) | |
tree | 32e2efb3864874a033f987bb8d0a67eb17b4f6cc /packages/markdown/remark/src | |
parent | 67d3d1d65ae74e902d5f1ceffc3c7d4adffd51f2 (diff) | |
download | astro-90e5f87d03215a833bb6ac91f9548670a25ce659.tar.gz astro-90e5f87d03215a833bb6ac91f9548670a25ce659.tar.zst astro-90e5f87d03215a833bb6ac91f9548670a25ce659.zip |
Vendor image-size (#6559)
* feat(assets): Vendor image-size
* fix(assets): Also vendor queue, the CJS virus runs deep
* fix: remove unneeded queue
* chore: lockfile
* fix: build
* fix: build part 2
* chore: changeset
Diffstat (limited to 'packages/markdown/remark/src')
-rw-r--r-- | packages/markdown/remark/src/index.ts | 2 | ||||
-rw-r--r-- | packages/markdown/remark/src/rehype-images.ts | 13 | ||||
-rw-r--r-- | packages/markdown/remark/src/types.ts | 8 |
3 files changed, 15 insertions, 8 deletions
diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts index 5c5dcdc66..ffae6be4f 100644 --- a/packages/markdown/remark/src/index.ts +++ b/packages/markdown/remark/src/index.ts @@ -116,7 +116,7 @@ export async function renderMarkdown( }); if (opts.experimentalAssets) { - parser.use(rehypeImages(await opts.imageService, opts.assetsDir)); + parser.use(rehypeImages(await opts.imageService, opts.assetsDir, opts.getImageMetadata)); } if (!isPerformanceBenchmark) { parser.use([rehypeHeadingIds]); diff --git a/packages/markdown/remark/src/rehype-images.ts b/packages/markdown/remark/src/rehype-images.ts index f94960ba0..fcd39cd60 100644 --- a/packages/markdown/remark/src/rehype-images.ts +++ b/packages/markdown/remark/src/rehype-images.ts @@ -1,11 +1,10 @@ -import sizeOf from 'image-size'; import { join as pathJoin } from 'node:path'; import { fileURLToPath } from 'node:url'; import { visit } from 'unist-util-visit'; import { pathToFileURL } from 'url'; -import type { MarkdownVFile } from './types.js'; +import type { ImageMetadata, MarkdownVFile } from './types.js'; -export function rehypeImages(imageService: any, assetsDir: URL | undefined) { +export function rehypeImages(imageService: any, assetsDir: URL | undefined, getImageMetadata: any) { return () => function (tree: any, file: MarkdownVFile) { visit(tree, (node) => { @@ -24,10 +23,10 @@ export function rehypeImages(imageService: any, assetsDir: URL | undefined) { fileURL = pathToFileURL(pathJoin(file.dirname, node.properties.src)); } - const fileData = sizeOf(fileURLToPath(fileURL)); - fileURL.searchParams.append('origWidth', fileData.width!.toString()); - fileURL.searchParams.append('origHeight', fileData.height!.toString()); - fileURL.searchParams.append('origFormat', fileData.type!.toString()); + const fileData = getImageMetadata!(fileURLToPath(fileURL)) as ImageMetadata; + fileURL.searchParams.append('origWidth', fileData.width.toString()); + fileURL.searchParams.append('origHeight', fileData.height.toString()); + fileURL.searchParams.append('origFormat', fileData.type.toString()); let options = { src: { diff --git a/packages/markdown/remark/src/types.ts b/packages/markdown/remark/src/types.ts index 38fe9fc74..1b88f2442 100644 --- a/packages/markdown/remark/src/types.ts +++ b/packages/markdown/remark/src/types.ts @@ -51,6 +51,13 @@ export interface AstroMarkdownOptions { smartypants?: boolean; } +export interface ImageMetadata { + src: string; + width: number; + height: number; + type: string; +} + export interface MarkdownRenderingOptions extends AstroMarkdownOptions { /** @internal */ fileURL?: URL; @@ -64,6 +71,7 @@ export interface MarkdownRenderingOptions extends AstroMarkdownOptions { imageService?: any; assetsDir?: URL; resolveImage?: (path: string) => Promise<string>; + getImageMetadata?: any; } export interface MarkdownHeading { |