aboutsummaryrefslogtreecommitdiff
path: root/examples/html-rewriter.ts
diff options
context:
space:
mode:
Diffstat (limited to 'examples/html-rewriter.ts')
-rw-r--r--examples/html-rewriter.ts47
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/html-rewriter.ts b/examples/html-rewriter.ts
new file mode 100644
index 000000000..2b370c5ed
--- /dev/null
+++ b/examples/html-rewriter.ts
@@ -0,0 +1,47 @@
+// Start a fast HTTP server from a function
+Bun.serve({
+ async fetch(req) {
+ if (!(req.url.startsWith("/https://") || req.url.startsWith("/http://"))) {
+ return new Response(
+ "Enter a path that starts with https:// or http://\n",
+ {
+ status: 400,
+ }
+ );
+ }
+
+ const url = new URL(req.url.substring(1));
+ const response = await fetch(url.toString(), req.clone());
+
+ if (!response.headers.get("Content-Type").includes("html")) {
+ return response;
+ }
+
+ return new HTMLRewriter()
+ .on("a[href]", {
+ element(element: Element) {
+ element.setAttribute(
+ "href",
+ "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
+ );
+ },
+ })
+ .transform(response);
+ },
+
+ // this is called when fetch() throws or rejects
+ // error(err: Error) {
+ // },
+
+ // this boolean enables the bun's default error handler
+ // sometime after the initial release, it will auto reload as well
+ development: process.env.NODE_ENV !== "production",
+ // note: this isn't node, but for compatibility bun supports process.env + more stuff in process
+
+ // SSL is enabled if these two are set
+ // certFile: './cert.pem',
+ // keyFile: './key.pem',
+
+ port: 8080, // number or string
+ hostname: "localhost", // defaults to 0.0.0.0
+});