summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src
diff options
context:
space:
mode:
authorGravatar Erika <3019731+Princesseuh@users.noreply.github.com> 2023-03-16 15:10:46 +0100
committerGravatar GitHub <noreply@github.com> 2023-03-16 15:10:46 +0100
commit90e5f87d03215a833bb6ac91f9548670a25ce659 (patch)
tree32e2efb3864874a033f987bb8d0a67eb17b4f6cc /packages/markdown/remark/src
parent67d3d1d65ae74e902d5f1ceffc3c7d4adffd51f2 (diff)
downloadastro-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.ts2
-rw-r--r--packages/markdown/remark/src/rehype-images.ts13
-rw-r--r--packages/markdown/remark/src/types.ts8
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 {