summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.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-plugin-bundle/src/eleventy.bundleManagers.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.js')
-rw-r--r--node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.js b/node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.js
new file mode 100644
index 0000000..8510abc
--- /dev/null
+++ b/node_modules/@11ty/eleventy-plugin-bundle/src/eleventy.bundleManagers.js
@@ -0,0 +1,85 @@
+import debugUtil from "debug";
+import { CodeManager } from "./CodeManager.js";
+import { addHtmlPlucker } from "./bundlePlucker.js"
+
+const debug = debugUtil("Eleventy:Bundle");
+
+function eleventyBundleManagers(eleventyConfig, pluginOptions = {}) {
+ if(pluginOptions.force) {
+ // no errors
+ } else if(("getBundleManagers" in eleventyConfig || "addBundle" in eleventyConfig)) {
+ throw new Error("Duplicate addPlugin calls for @11ty/eleventy-plugin-bundle");
+ }
+
+ let managers = {};
+
+ function addBundle(name, bundleOptions = {}) {
+ if(name in managers) {
+ // note: shortcode must still be added
+ debug("Bundle exists %o, skipping.", name);
+ } else {
+ debug("Creating new bundle %o", name);
+ managers[name] = new CodeManager(name);
+
+ if(bundleOptions.delayed !== undefined) {
+ managers[name].setDelayed(bundleOptions.delayed);
+ }
+
+ if(bundleOptions.hoist !== undefined) {
+ managers[name].setHoisting(bundleOptions.hoist);
+ }
+
+ if(bundleOptions.bundleHtmlContentFromSelector !== undefined) {
+ managers[name].setPluckedSelector(bundleOptions.bundleHtmlContentFromSelector);
+ managers[name].setDelayed(true); // must override `delayed` above
+
+ addHtmlPlucker(eleventyConfig, managers[name]);
+ }
+
+ if(bundleOptions.bundleExportKey !== undefined) {
+ managers[name].setBundleExportKey(bundleOptions.bundleExportKey);
+ }
+
+ if(bundleOptions.outputFileExtension) {
+ managers[name].setFileExtension(bundleOptions.outputFileExtension);
+ }
+
+ if(bundleOptions.toFileDirectory) {
+ managers[name].setBundleDirectory(bundleOptions.toFileDirectory);
+ }
+
+ if(bundleOptions.transforms) {
+ managers[name].setTransforms(bundleOptions.transforms);
+ }
+ }
+
+ // if undefined, defaults to `name`
+ if(bundleOptions.shortcodeName !== false) {
+ let shortcodeName = bundleOptions.shortcodeName || name;
+
+ // e.g. `css` shortcode to add code to page bundle
+ // These shortcode names are not configurable on purpose (for wider plugin compatibility)
+ eleventyConfig.addPairedShortcode(shortcodeName, function addContent(content, bucket, explicitUrl) {
+ let url = explicitUrl || this.page?.url;
+ if(url) { // don’t add if a file doesn’t have an output URL
+ managers[name].addToPage(url, content, bucket);
+ }
+ return "";
+ });
+ }
+ };
+
+ eleventyConfig.addBundle = addBundle;
+
+ eleventyConfig.getBundleManagers = function() {
+ return managers;
+ };
+
+ eleventyConfig.on("eleventy.before", async () => {
+ for(let key in managers) {
+ managers[key].reset();
+ }
+ });
+};
+
+export default eleventyBundleManagers;