Skip to content

Instantly share code, notes, and snippets.

@bridgpal
Last active September 9, 2025 21:58
Show Gist options
  • Select an option

  • Save bridgpal/5c1068b9e560b0449a45a490ab42607b to your computer and use it in GitHub Desktop.

Select an option

Save bridgpal/5c1068b9e560b0449a45a490ab42607b to your computer and use it in GitHub Desktop.
import { HTMLRewriter } from "https://ghuc.cc/worker-tools/html-rewriter/index.ts";
import { fetchConnectData } from "../../utilities/connect.js";
export default async (request, context) => {
const url = new URL(request.url);
const response = await context.next();
const location = context?.geo?.city;
const utm = url.searchParams.get("utm");
let rewriter;
if (utm === "wanderlust") {
rewriter = new HTMLRewriter()
.on("#netlify-title", {
element: (element) => {
if (location) {
element.setInnerContent(`Discover Your Next Dream Destination in ${location}`);
} else {
element.setInnerContent(`Discover Your Next Dream Destination`);
}
},
});
} else if (utm === "adventure") {
rewriter = new HTMLRewriter()
.on("#netlify-title", {
element: (element) => {
if (location) {
element.setInnerContent(`Epic Adventures Await in ${location}`);
} else {
element.setInnerContent(`Epic Adventures Await`);
}
},
});
} else if (utm === "local") {
rewriter = new HTMLRewriter()
.on("#netlify-title", {
element: (element) => {
if (location) {
element.setInnerContent(`Experience ${location} Like a Local`);
} else {
element.setInnerContent(`Experience Authentic Local Culture`);
}
},
});
}
if (rewriter) {
return rewriter.transform(response);
} else if (url.searchParams.get("method") === "imgreplace") {
const rewriter = new HTMLRewriter()
.on(".netlify-img", {
element: (element) => {
const width = element.getAttribute("width") ?? 800;
const height = element.getAttribute("height") ?? 600;
element.setAttribute(
"src",
`https://placehold.co/${width}x${height}?text=Hello+Netlify`
);
element.setAttribute("alt", "A random cat");
}
})
return rewriter.transform(response);
} else if (url.searchParams.get("method") === "connect") {
const data = await fetchConnectData();
const rewriter = new HTMLRewriter()
.on('#netlify-title', {
element: (element) => {
if (data) {
element.setInnerContent(`${data.title}?`);
element.setAttribute("data-sb-object-id", data._objectId);
element.setAttribute("data-sb-field-path", ".title");
} else {
element.setInnerContent(`Hello from Netlify!`);
}
},
})
return rewriter.transform(response);
} else if (url.searchParams.get("target")) {
const targetId = `#${url.searchParams.get("target")}`;
const rewriter = new HTMLRewriter()
.on(targetId, {
element: (element) => {
if (location) {
element.setInnerContent(`Hello from Netlify! How's the weather in ${location}?`);
} else {
element.setInnerContent(`Hello from Netlify!`);
}
},
})
return rewriter.transform(response);
}
return response;
};
export const config = {
path: "/",
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment