summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy/src/Util/TransformsUtil.js
diff options
context:
space:
mode:
authorShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
committerShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
commit7a52ddeba2a68388b544f529d2d92104420f77b0 (patch)
tree15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/@11ty/eleventy/src/Util/TransformsUtil.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@11ty/eleventy/src/Util/TransformsUtil.js')
-rw-r--r--node_modules/@11ty/eleventy/src/Util/TransformsUtil.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy/src/Util/TransformsUtil.js b/node_modules/@11ty/eleventy/src/Util/TransformsUtil.js
new file mode 100644
index 0000000..3ba8ab0
--- /dev/null
+++ b/node_modules/@11ty/eleventy/src/Util/TransformsUtil.js
@@ -0,0 +1,70 @@
+import EleventyBaseError from "../Errors/EleventyBaseError.js";
+import { isPlainObject } from "@11ty/eleventy-utils";
+import debugUtil from "debug";
+
+const debug = debugUtil("Eleventy:Transforms");
+
+class EleventyTransformError extends EleventyBaseError {}
+
+class TransformsUtil {
+ static changeTransformsToArray(transformsObj) {
+ let transforms = [];
+ for (let name in transformsObj) {
+ transforms.push({
+ name: name,
+ callback: transformsObj[name],
+ });
+ }
+ return transforms;
+ }
+
+ static async runAll(content, pageData, transforms = {}, options = {}) {
+ let { baseHrefOverride, logger } = options;
+ let { inputPath, outputPath, url } = pageData;
+
+ if (!isPlainObject(transforms)) {
+ throw new Error("Object of transforms expected.");
+ }
+
+ let transformsArray = this.changeTransformsToArray(transforms);
+
+ for (let { callback, name } of transformsArray) {
+ debug("Running %o transform on %o: %o", name, inputPath, outputPath);
+
+ try {
+ let hadContentBefore = !!content;
+
+ content = await callback.call(
+ {
+ inputPath,
+ outputPath,
+ url,
+ page: pageData,
+ baseHref: baseHrefOverride,
+ },
+ content,
+ outputPath,
+ );
+
+ if (hadContentBefore && !content) {
+ if (!logger || !logger.warn) {
+ throw new Error("Internal error: missing `logger` instance.");
+ }
+
+ logger.warn(
+ `Warning: Transform \`${name}\` returned empty when writing ${outputPath} from ${inputPath}.`,
+ );
+ }
+ } catch (e) {
+ throw new EleventyTransformError(
+ `Transform \`${name}\` encountered an error when transforming ${inputPath}.`,
+ e,
+ );
+ }
+ }
+
+ return content;
+ }
+}
+
+export default TransformsUtil;