Files
dealplustech/node_modules/@astrojs/markdown-remark/dist/remark-collect-images.js
Kunthawat 77ac4d2d05 feat: Upgrade to Astro with full PDPA compliance
PDPA Features:
 Cookie consent banner
 Consent logging API
 Admin dashboard
 Privacy Policy
 Terms & Conditions

Technical:
 Astro 5.x + Tailwind v4
 Docker on port 80
 SQLite database
 15 pages built

Ready for Easypanel deployment.
2026-03-12 10:01:04 +07:00

39 lines
1.3 KiB
JavaScript

import { isRemoteAllowed } from "@astrojs/internal-helpers/remote";
import { definitions } from "mdast-util-definitions";
import { visit } from "unist-util-visit";
function remarkCollectImages(opts) {
const domains = opts?.domains ?? [];
const remotePatterns = opts?.remotePatterns ?? [];
return function(tree, vfile) {
if (typeof vfile?.path !== "string") return;
const definition = definitions(tree);
const localImagePaths = /* @__PURE__ */ new Set();
const remoteImagePaths = /* @__PURE__ */ new Set();
visit(tree, (node) => {
let url;
if (node.type === "image") {
url = decodeURI(node.url);
} else if (node.type === "imageReference") {
const imageDefinition = definition(node.identifier);
if (imageDefinition) {
url = decodeURI(imageDefinition.url);
}
}
if (!url) return;
if (URL.canParse(url)) {
if (isRemoteAllowed(url, { domains, remotePatterns })) {
remoteImagePaths.add(url);
}
} else if (!url.startsWith("/")) {
localImagePaths.add(url);
}
});
vfile.data.astro ??= {};
vfile.data.astro.localImagePaths = Array.from(localImagePaths);
vfile.data.astro.remoteImagePaths = Array.from(remoteImagePaths);
};
}
export {
remarkCollectImages
};