Skip to main content

Provides missing HTMRewriter for platforms that do not have it, besides Cloudflare Workers and Bun.

Works with
It is unknown whether this package works with Bun
It is unknown whether this package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
JSR Score
76%
Published
3 weeks ago

HTMLRewriter

Provides the same HTMLRewriter for all platforms.

Examples

Rewrite URL links in HTML:

import { HTMLRewriter } from "@sntran/html-rewriter";

export default {
  async fetch(request) {
    const OLD_URL = "developer.mozilla.org";
    const NEW_URL = "mynewdomain.com";

    class AttributeRewriter {
      constructor(attributeName) {
        this.attributeName = attributeName;
      }
      element(element) {
        const attribute = element.getAttribute(this.attributeName);
        if (attribute) {
          element.setAttribute(
            this.attributeName,
            attribute.replace(OLD_URL, NEW_URL)
          );
        }
      }
    }

    const rewriter = new HTMLRewriter()
      .on("a", new AttributeRewriter("href"))
      .on("img", new AttributeRewriter("src"));

    const res = await fetch(request);
    const contentType = res.headers.get("Content-Type");

    // If the response is HTML, it can be transformed with
    // HTMLRewriter -- otherwise, it should pass through
    if (contentType.startsWith("text/html")) {
      return rewriter.transform(res);
    } else {
      return res;
    }
  },
};
Built and signed on
GitHub Actions
View transparency log

Add Package

deno add @sntran/html-rewriter

Import symbol

import * as mod from "@sntran/html-rewriter";

Add Package

npx jsr add @sntran/html-rewriter

Import symbol

import * as mod from "@sntran/html-rewriter";

Add Package

yarn dlx jsr add @sntran/html-rewriter

Import symbol

import * as mod from "@sntran/html-rewriter";

Add Package

pnpm dlx jsr add @sntran/html-rewriter

Import symbol

import * as mod from "@sntran/html-rewriter";

Add Package

bunx jsr add @sntran/html-rewriter

Import symbol

import * as mod from "@sntran/html-rewriter";