summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.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/GetJavaScriptData.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.js')
-rw-r--r--node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.js b/node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.js
new file mode 100644
index 0000000..7d72a64
--- /dev/null
+++ b/node_modules/@11ty/eleventy/src/Util/GetJavaScriptData.js
@@ -0,0 +1,30 @@
+import EleventyBaseError from "../Errors/EleventyBaseError.js";
+
+class JavaScriptInvalidDataFormatError extends EleventyBaseError {}
+
+export default async function (inst, inputPath, key = "data", options = {}) {
+ let { mixins, isObjectRequired } = Object.assign(
+ {
+ mixins: {},
+ isObjectRequired: true,
+ },
+ options,
+ );
+
+ if (inst && key in inst) {
+ // get extra data from `data` method,
+ // either as a function or getter or object literal
+ let result = await (typeof inst[key] === "function"
+ ? Object.keys(mixins).length > 0
+ ? inst[key].call(mixins)
+ : inst[key]()
+ : inst[key]);
+
+ if (isObjectRequired && typeof result !== "object") {
+ throw new JavaScriptInvalidDataFormatError(
+ `Invalid data format returned from ${inputPath}: typeof ${typeof result}`,
+ );
+ }
+ return result;
+ }
+}