1 | var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
2 | if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
3 | if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
4 | return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
5 | };
|
6 | var _HTMLRewriter_elementHandlers, _HTMLRewriter_documentHandlers, _a;
|
7 |
|
8 | import "./_dnt.polyfills.js";
|
9 | import * as _base from './vendor/html_rewriter.js';
|
10 | const { default: initWASM } = _base;
|
11 | const base = _base;
|
12 | import { ResolvablePromise } from '@worker-tools/resolvable-promise';
|
13 | const kEnableEsiTags = Symbol("kEnableEsiTags");
|
14 |
|
15 | const toWASMResponse = (response) => {
|
16 | var _b;
|
17 | if ((_b = response.headers.get('content-type')) === null || _b === void 0 ? void 0 : _b.startsWith('application/wasm'))
|
18 | return response;
|
19 | const { body, headers: hs, ...props } = response;
|
20 | const headers = new Headers(hs);
|
21 | headers.set('content-type', 'application/wasm');
|
22 | return new Response(body, { ...props, headers });
|
23 | };
|
24 | const initialized = new ResolvablePromise();
|
25 | let executing = false;
|
26 | export class HTMLRewriter {
|
27 | constructor() {
|
28 | _HTMLRewriter_elementHandlers.set(this, []);
|
29 | _HTMLRewriter_documentHandlers.set(this, []);
|
30 | Object.defineProperty(this, _a, {
|
31 | enumerable: true,
|
32 | configurable: true,
|
33 | writable: true,
|
34 | value: false
|
35 | });
|
36 | if (!initialized.settled && !executing) {
|
37 | executing = true;
|
38 | fetch(new URL("./vendor/html_rewriter_bg.wasm", import.meta.url).href)
|
39 | .then(r => r.ok ? r : (() => { throw Error('WASM response not ok'); })())
|
40 | .then(toWASMResponse)
|
41 | .then(initWASM)
|
42 | .then(() => initialized.resolve())
|
43 | .catch(err => {
|
44 | executing = false;
|
45 | console.error(err);
|
46 | });
|
47 | }
|
48 | }
|
49 | on(selector, handlers) {
|
50 | __classPrivateFieldGet(this, _HTMLRewriter_elementHandlers, "f").push([selector, handlers]);
|
51 | return this;
|
52 | }
|
53 | onDocument(handlers) {
|
54 | __classPrivateFieldGet(this, _HTMLRewriter_documentHandlers, "f").push(handlers);
|
55 | return this;
|
56 | }
|
57 | transform(response) {
|
58 | const body = response.body;
|
59 |
|
60 |
|
61 | if (body === null)
|
62 | return new Response(body, response);
|
63 | if (response instanceof Response) {
|
64 |
|
65 |
|
66 | response = new Response(response.body, response);
|
67 | }
|
68 | let rewriter;
|
69 | const transformStream = new TransformStream({
|
70 | start: async (controller) => {
|
71 |
|
72 |
|
73 |
|
74 | await initialized;
|
75 | rewriter = new base.HTMLRewriter((output) => {
|
76 |
|
77 | if (output.length !== 0)
|
78 | controller.enqueue(output);
|
79 | }, { enableEsiTags: this[kEnableEsiTags] });
|
80 |
|
81 | for (const [selector, handlers] of __classPrivateFieldGet(this, _HTMLRewriter_elementHandlers, "f")) {
|
82 | rewriter.on(selector, handlers);
|
83 | }
|
84 | for (const handlers of __classPrivateFieldGet(this, _HTMLRewriter_documentHandlers, "f")) {
|
85 | rewriter.onDocument(handlers);
|
86 | }
|
87 | },
|
88 |
|
89 |
|
90 |
|
91 | transform: (chunk) => rewriter.write(chunk),
|
92 | flush: () => rewriter.end(),
|
93 | });
|
94 | const promise = body.pipeTo(transformStream.writable);
|
95 | promise.catch(() => { }).finally(() => rewriter === null || rewriter === void 0 ? void 0 : rewriter.free());
|
96 |
|
97 | const res = new Response(transformStream.readable, response);
|
98 |
|
99 |
|
100 | res.headers.delete("Content-Length");
|
101 | return res;
|
102 | }
|
103 | }
|
104 | _HTMLRewriter_elementHandlers = new WeakMap(), _HTMLRewriter_documentHandlers = new WeakMap(), _a = kEnableEsiTags;
|
105 | export function withEnableEsiTags(rewriter) {
|
106 | rewriter[kEnableEsiTags] = true;
|
107 | return rewriter;
|
108 | }
|
109 |
|
\ | No newline at end of file |