@hoody-network/html-rewriter
v0.4.0
Published
Node.js-based derivative of the worker-tools/html-rewriter repo
Readme
HTML Rewriter
WASM-based implementation of Cloudflare's HTML Rewriter for use in Node.js. Hard fork of the NPM package @worker-tools/html-rewriter.
It uses lol-html under the hood, the same implementation used by Cloudflare Workers. It is based on Miniflare's WASM build.
Installation
This package only includes the file-based WASM approach from the @worker-tools/html-rewriter package.
index.ts loads the WASM that is co-located with this module via the fs/promises API and instantiates the module that way. The approach used in @worker-tools/html-rewriter is broken in Node.js version 16 and is one of the primary reasons for the hard fork.
Usage
import {
HTMLRewriter
} from '@hoody-network/html-rewriter'
new HTMLRewriter()
.on("p", {
element(element) {
element.tagName = "h1"
},
})
.transform(new Response('<p class="red">test</p>'))
.text().then(x => console.log(x))For more on how to use HTMLRewriter, see the Cloudflare Workers Docs.
Building
Make sure you've initialized all git submodules. It is 2 levels deep.
git submodule update --init --recursiveIf this recursive init doesn't work for you, it's probably because the URL for wasm-pack in the .gitmodules file in html-rewriter-wasm is pointing to a Git endpoint. Try to make it use the HTTPS endpoint instead. Then after you do this, make sure to run git submodule sync inside the html-rewriter-wasm directory.
Make sure you have rustup installed. Then run
make distThis will build a custom version of wasm-pack first, then use it to compile lol-html to WASM. Please see the submodules for details on why this is necessary.
