summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/htmlparser2
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-04-06 22:18:28 +0200
committerRaindropsSys <contact@minteck.org>2023-04-06 22:18:28 +0200
commit83354b2b88218090988dd6e526b0a2505b57e0f1 (patch)
treee3c73c38a122a78bb7e66fbb99056407edd9d4b9 /includes/external/addressbook/node_modules/htmlparser2
parent47b8f2299a483024c4a6a8876af825a010954caa (diff)
downloadpluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.tar.gz
pluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.tar.bz2
pluralconnect-83354b2b88218090988dd6e526b0a2505b57e0f1.zip
Updated 5 files and added 1110 files (automated)
Diffstat (limited to 'includes/external/addressbook/node_modules/htmlparser2')
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/LICENSE18
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/README.md172
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts190
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js518
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts143
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js938
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts17
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js54
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts190
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js489
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts143
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js932
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts17
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js32
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts44
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js62
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/esm/package.json1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts44
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/index.js100
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/lib/index.js.map1
-rw-r--r--includes/external/addressbook/node_modules/htmlparser2/package.json97
36 files changed, 4217 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/htmlparser2/LICENSE b/includes/external/addressbook/node_modules/htmlparser2/LICENSE
new file mode 100644
index 0000000..0a35e02
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/LICENSE
@@ -0,0 +1,18 @@
+Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE. \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/README.md b/includes/external/addressbook/node_modules/htmlparser2/README.md
new file mode 100644
index 0000000..40519dc
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/README.md
@@ -0,0 +1,172 @@
+# htmlparser2
+
+[![NPM version](https://img.shields.io/npm/v/htmlparser2.svg)](https://npmjs.org/package/htmlparser2)
+[![Downloads](https://img.shields.io/npm/dm/htmlparser2.svg)](https://npmjs.org/package/htmlparser2)
+[![Node.js CI](https://github.com/fb55/htmlparser2/actions/workflows/nodejs-test.yml/badge.svg)](https://github.com/fb55/htmlparser2/actions/workflows/nodejs-test.yml)
+[![Coverage](https://img.shields.io/coveralls/fb55/htmlparser2.svg)](https://coveralls.io/r/fb55/htmlparser2)
+
+The fast & forgiving HTML/XML parser.
+
+_htmlparser2 is [the fastest HTML parser](#performance), and takes some shortcuts to get there. If you need strict HTML spec compliance, have a look at [parse5](https://github.com/inikulin/parse5)._
+
+## Installation
+
+ npm install htmlparser2
+
+A live demo of `htmlparser2` is available [on AST Explorer](https://astexplorer.net/#/2AmVrGuGVJ).
+
+## Ecosystem
+
+| Name | Description |
+| ------------------------------------------------------------- | ------------------------------------------------------- |
+| [htmlparser2](https://github.com/fb55/htmlparser2) | Fast & forgiving HTML/XML parser |
+| [domhandler](https://github.com/fb55/domhandler) | Handler for htmlparser2 that turns documents into a DOM |
+| [domutils](https://github.com/fb55/domutils) | Utilities for working with domhandler's DOM |
+| [css-select](https://github.com/fb55/css-select) | CSS selector engine, compatible with domhandler's DOM |
+| [cheerio](https://github.com/cheeriojs/cheerio) | The jQuery API for domhandler's DOM |
+| [dom-serializer](https://github.com/cheeriojs/dom-serializer) | Serializer for domhandler's DOM |
+
+## Usage
+
+`htmlparser2` itself provides a callback interface that allows consumption of documents with minimal allocations.
+For a more ergonomic experience, read [Getting a DOM](#getting-a-dom) below.
+
+```js
+import * as htmlparser2 from "htmlparser2";
+
+const parser = new htmlparser2.Parser({
+ onopentag(name, attributes) {
+ /*
+ * This fires when a new tag is opened.
+ *
+ * If you don't need an aggregated `attributes` object,
+ * have a look at the `onopentagname` and `onattribute` events.
+ */
+ if (name === "script" && attributes.type === "text/javascript") {
+ console.log("JS! Hooray!");
+ }
+ },
+ ontext(text) {
+ /*
+ * Fires whenever a section of text was processed.
+ *
+ * Note that this can fire at any point within text and you might
+ * have to stitch together multiple pieces.
+ */
+ console.log("-->", text);
+ },
+ onclosetag(tagname) {
+ /*
+ * Fires when a tag is closed.
+ *
+ * You can rely on this event only firing when you have received an
+ * equivalent opening tag before. Closing tags without corresponding
+ * opening tags will be ignored.
+ */
+ if (tagname === "script") {
+ console.log("That's it?!");
+ }
+ },
+});
+parser.write(
+ "Xyz <script type='text/javascript'>const foo = '<<bar>>';</script>"
+);
+parser.end();
+```
+
+Output (with multiple text events combined):
+
+```
+--> Xyz
+JS! Hooray!
+--> const foo = '<<bar>>';
+That's it?!
+```
+
+This example only shows three of the possible events.
+Read more about the parser, its events and options in the [wiki](https://github.com/fb55/htmlparser2/wiki/Parser-options).
+
+### Usage with streams
+
+While the `Parser` interface closely resembles Node.js streams, it's not a 100% match.
+Use the `WritableStream` interface to process a streaming input:
+
+```js
+import { WritableStream } from "htmlparser2/lib/WritableStream";
+
+const parserStream = new WritableStream({
+ ontext(text) {
+ console.log("Streaming:", text);
+ },
+});
+
+const htmlStream = fs.createReadStream("./my-file.html");
+htmlStream.pipe(parserStream).on("finish", () => console.log("done"));
+```
+
+## Getting a DOM
+
+The `DomHandler` produces a DOM (document object model) that can be manipulated using the [`DomUtils`](https://github.com/fb55/DomUtils) helper.
+
+```js
+import * as htmlparser2 from "htmlparser2";
+
+const dom = htmlparser2.parseDocument(htmlString);
+```
+
+The `DomHandler`, while still bundled with this module, was moved to its [own module](https://github.com/fb55/domhandler).
+Have a look at that for further information.
+
+## Parsing RSS/RDF/Atom Feeds
+
+```javascript
+const feed = htmlparser2.parseFeed(content, options);
+```
+
+Note: While the provided feed handler works for most feeds,
+you might want to use [danmactough/node-feedparser](https://github.com/danmactough/node-feedparser), which is much better tested and actively maintained.
+
+## Performance
+
+After having some artificial benchmarks for some time, **@AndreasMadsen** published his [`htmlparser-benchmark`](https://github.com/AndreasMadsen/htmlparser-benchmark), which benchmarks HTML parses based on real-world websites.
+
+At the time of writing, the latest versions of all supported parsers show the following performance characteristics on GitHub Actions (sourced from [here](https://github.com/AndreasMadsen/htmlparser-benchmark/blob/e78cd8fc6c2adac08deedd4f274c33537451186b/stats.txt)):
+
+```
+htmlparser2 : 2.17215 ms/file ± 3.81587
+node-html-parser : 2.35983 ms/file ± 1.54487
+html5parser : 2.43468 ms/file ± 2.81501
+neutron-html5parser: 2.61356 ms/file ± 1.70324
+htmlparser2-dom : 3.09034 ms/file ± 4.77033
+html-dom-parser : 3.56804 ms/file ± 5.15621
+libxmljs : 4.07490 ms/file ± 2.99869
+htmljs-parser : 6.15812 ms/file ± 7.52497
+parse5 : 9.70406 ms/file ± 6.74872
+htmlparser : 15.0596 ms/file ± 89.0826
+html-parser : 28.6282 ms/file ± 22.6652
+saxes : 45.7921 ms/file ± 128.691
+html5 : 120.844 ms/file ± 153.944
+```
+
+## How does this module differ from [node-htmlparser](https://github.com/tautologistics/node-htmlparser)?
+
+In 2011, this module started as a fork of the `htmlparser` module.
+`htmlparser2` was rewritten multiple times and, while it maintains an API that's mostly compatible with `htmlparser`, the projects don't share any code anymore.
+
+The parser now provides a callback interface inspired by [sax.js](https://github.com/isaacs/sax-js) (originally targeted at [readabilitySAX](https://github.com/fb55/readabilitysax)).
+As a result, old handlers won't work anymore.
+
+The `DefaultHandler` was renamed to clarify its purpose (to `DomHandler`). The old name is still available when requiring `htmlparser2` and your code should work as expected.
+
+The `RssHandler` was replaced with a `getFeed` function that takes a `DomHandler` DOM and returns a feed object. There is a `parseFeed` helper function that can be used to parse a feed from a string.
+
+## Security contact information
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## `htmlparser2` for enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of `htmlparser2` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-htmlparser2?utm_source=npm-htmlparser2&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts
new file mode 100644
index 0000000..ce46d58
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts
@@ -0,0 +1,190 @@
+import Tokenizer, { Callbacks, QuoteType } from "./Tokenizer.js";
+export interface ParserOptions {
+ /**
+ * Indicates whether special tags (`<script>`, `<style>`, and `<title>`) should get special treatment
+ * and if "empty" tags (eg. `<br>`) can have children. If `false`, the content of special tags
+ * will be text only. For feeds and other XML content (documents that don't consist of HTML),
+ * set this to `true`.
+ *
+ * @default false
+ */
+ xmlMode?: boolean;
+ /**
+ * Decode entities within the document.
+ *
+ * @default true
+ */
+ decodeEntities?: boolean;
+ /**
+ * If set to true, all tags will be lowercased.
+ *
+ * @default !xmlMode
+ */
+ lowerCaseTags?: boolean;
+ /**
+ * If set to `true`, all attribute names will be lowercased. This has noticeable impact on speed.
+ *
+ * @default !xmlMode
+ */
+ lowerCaseAttributeNames?: boolean;
+ /**
+ * If set to true, CDATA sections will be recognized as text even if the xmlMode option is not enabled.
+ * NOTE: If xmlMode is set to `true` then CDATA sections will always be recognized as text.
+ *
+ * @default xmlMode
+ */
+ recognizeCDATA?: boolean;
+ /**
+ * If set to `true`, self-closing tags will trigger the onclosetag event even if xmlMode is not set to `true`.
+ * NOTE: If xmlMode is set to `true` then self-closing tags will always be recognized.
+ *
+ * @default xmlMode
+ */
+ recognizeSelfClosing?: boolean;
+ /**
+ * Allows the default tokenizer to be overwritten.
+ */
+ Tokenizer?: typeof Tokenizer;
+}
+export interface Handler {
+ onparserinit(parser: Parser): void;
+ /**
+ * Resets the handler back to starting state
+ */
+ onreset(): void;
+ /**
+ * Signals the handler that parsing is done
+ */
+ onend(): void;
+ onerror(error: Error): void;
+ onclosetag(name: string, isImplied: boolean): void;
+ onopentagname(name: string): void;
+ /**
+ *
+ * @param name Name of the attribute
+ * @param value Value of the attribute.
+ * @param quote Quotes used around the attribute. `null` if the attribute has no quotes around the value, `undefined` if the attribute has no value.
+ */
+ onattribute(name: string, value: string, quote?: string | undefined | null): void;
+ onopentag(name: string, attribs: {
+ [s: string]: string;
+ }, isImplied: boolean): void;
+ ontext(data: string): void;
+ oncomment(data: string): void;
+ oncdatastart(): void;
+ oncdataend(): void;
+ oncommentend(): void;
+ onprocessinginstruction(name: string, data: string): void;
+}
+export declare class Parser implements Callbacks {
+ private readonly options;
+ /** The start index of the last event. */
+ startIndex: number;
+ /** The end index of the last event. */
+ endIndex: number;
+ /**
+ * Store the start index of the current open tag,
+ * so we can update the start index for attributes.
+ */
+ private openTagStart;
+ private tagname;
+ private attribname;
+ private attribvalue;
+ private attribs;
+ private readonly stack;
+ private readonly foreignContext;
+ private readonly cbs;
+ private readonly lowerCaseTagNames;
+ private readonly lowerCaseAttributeNames;
+ private readonly tokenizer;
+ private readonly buffers;
+ private bufferOffset;
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
+ private writeIndex;
+ /** Indicates whether the parser has finished running / `.end` has been called. */
+ private ended;
+ constructor(cbs?: Partial<Handler> | null, options?: ParserOptions);
+ /** @internal */
+ ontext(start: number, endIndex: number): void;
+ /** @internal */
+ ontextentity(cp: number): void;
+ protected isVoidElement(name: string): boolean;
+ /** @internal */
+ onopentagname(start: number, endIndex: number): void;
+ private emitOpenTag;
+ private endOpenTag;
+ /** @internal */
+ onopentagend(endIndex: number): void;
+ /** @internal */
+ onclosetag(start: number, endIndex: number): void;
+ /** @internal */
+ onselfclosingtag(endIndex: number): void;
+ private closeCurrentTag;
+ /** @internal */
+ onattribname(start: number, endIndex: number): void;
+ /** @internal */
+ onattribdata(start: number, endIndex: number): void;
+ /** @internal */
+ onattribentity(cp: number): void;
+ /** @internal */
+ onattribend(quote: QuoteType, endIndex: number): void;
+ private getInstructionName;
+ /** @internal */
+ ondeclaration(start: number, endIndex: number): void;
+ /** @internal */
+ onprocessinginstruction(start: number, endIndex: number): void;
+ /** @internal */
+ oncomment(start: number, endIndex: number, offset: number): void;
+ /** @internal */
+ oncdata(start: number, endIndex: number, offset: number): void;
+ /** @internal */
+ onend(): void;
+ /**
+ * Resets the parser to a blank state, ready to parse a new HTML document
+ */
+ reset(): void;
+ /**
+ * Resets the parser, then parses a complete document and
+ * pushes it to the handler.
+ *
+ * @param data Document to parse.
+ */
+ parseComplete(data: string): void;
+ private getSlice;
+ private shiftBuffer;
+ /**
+ * Parses a chunk of data and calls the corresponding callbacks.
+ *
+ * @param chunk Chunk to parse.
+ */
+ write(chunk: string): void;
+ /**
+ * Parses the end of the buffer and clears the stack, calls onend.
+ *
+ * @param chunk Optional final chunk to parse.
+ */
+ end(chunk?: string): void;
+ /**
+ * Pauses parsing. The parser won't emit events until `resume` is called.
+ */
+ pause(): void;
+ /**
+ * Resumes parsing after `pause` was called.
+ */
+ resume(): void;
+ /**
+ * Alias of `write`, for backwards compatibility.
+ *
+ * @param chunk Chunk to parse.
+ * @deprecated
+ */
+ parseChunk(chunk: string): void;
+ /**
+ * Alias of `end`, for backwards compatibility.
+ *
+ * @param chunk Optional final chunk to parse.
+ * @deprecated
+ */
+ done(chunk?: string): void;
+}
+//# sourceMappingURL=Parser.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts.map
new file mode 100644
index 0000000..9f9aa66
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Parser.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js
new file mode 100644
index 0000000..cb7cadc
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js
@@ -0,0 +1,518 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Parser = void 0;
+var Tokenizer_js_1 = __importStar(require("./Tokenizer.js"));
+var decode_js_1 = require("entities/lib/decode.js");
+var formTags = new Set([
+ "input",
+ "option",
+ "optgroup",
+ "select",
+ "button",
+ "datalist",
+ "textarea",
+]);
+var pTag = new Set(["p"]);
+var tableSectionTags = new Set(["thead", "tbody"]);
+var ddtTags = new Set(["dd", "dt"]);
+var rtpTags = new Set(["rt", "rp"]);
+var openImpliesClose = new Map([
+ ["tr", new Set(["tr", "th", "td"])],
+ ["th", new Set(["th"])],
+ ["td", new Set(["thead", "th", "td"])],
+ ["body", new Set(["head", "link", "script"])],
+ ["li", new Set(["li"])],
+ ["p", pTag],
+ ["h1", pTag],
+ ["h2", pTag],
+ ["h3", pTag],
+ ["h4", pTag],
+ ["h5", pTag],
+ ["h6", pTag],
+ ["select", formTags],
+ ["input", formTags],
+ ["output", formTags],
+ ["button", formTags],
+ ["datalist", formTags],
+ ["textarea", formTags],
+ ["option", new Set(["option"])],
+ ["optgroup", new Set(["optgroup", "option"])],
+ ["dd", ddtTags],
+ ["dt", ddtTags],
+ ["address", pTag],
+ ["article", pTag],
+ ["aside", pTag],
+ ["blockquote", pTag],
+ ["details", pTag],
+ ["div", pTag],
+ ["dl", pTag],
+ ["fieldset", pTag],
+ ["figcaption", pTag],
+ ["figure", pTag],
+ ["footer", pTag],
+ ["form", pTag],
+ ["header", pTag],
+ ["hr", pTag],
+ ["main", pTag],
+ ["nav", pTag],
+ ["ol", pTag],
+ ["pre", pTag],
+ ["section", pTag],
+ ["table", pTag],
+ ["ul", pTag],
+ ["rt", rtpTags],
+ ["rp", rtpTags],
+ ["tbody", tableSectionTags],
+ ["tfoot", tableSectionTags],
+]);
+var voidElements = new Set([
+ "area",
+ "base",
+ "basefont",
+ "br",
+ "col",
+ "command",
+ "embed",
+ "frame",
+ "hr",
+ "img",
+ "input",
+ "isindex",
+ "keygen",
+ "link",
+ "meta",
+ "param",
+ "source",
+ "track",
+ "wbr",
+]);
+var foreignContextElements = new Set(["math", "svg"]);
+var htmlIntegrationElements = new Set([
+ "mi",
+ "mo",
+ "mn",
+ "ms",
+ "mtext",
+ "annotation-xml",
+ "foreignobject",
+ "desc",
+ "title",
+]);
+var reNameEnd = /\s|\//;
+var Parser = /** @class */ (function () {
+ function Parser(cbs, options) {
+ if (options === void 0) { options = {}; }
+ var _a, _b, _c, _d, _e;
+ this.options = options;
+ /** The start index of the last event. */
+ this.startIndex = 0;
+ /** The end index of the last event. */
+ this.endIndex = 0;
+ /**
+ * Store the start index of the current open tag,
+ * so we can update the start index for attributes.
+ */
+ this.openTagStart = 0;
+ this.tagname = "";
+ this.attribname = "";
+ this.attribvalue = "";
+ this.attribs = null;
+ this.stack = [];
+ this.foreignContext = [];
+ this.buffers = [];
+ this.bufferOffset = 0;
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
+ this.writeIndex = 0;
+ /** Indicates whether the parser has finished running / `.end` has been called. */
+ this.ended = false;
+ this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
+ this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;
+ this.lowerCaseAttributeNames =
+ (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
+ this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_js_1.default)(this.options, this);
+ (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
+ }
+ // Tokenizer event handlers
+ /** @internal */
+ Parser.prototype.ontext = function (start, endIndex) {
+ var _a, _b;
+ var data = this.getSlice(start, endIndex);
+ this.endIndex = endIndex - 1;
+ (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
+ this.startIndex = endIndex;
+ };
+ /** @internal */
+ Parser.prototype.ontextentity = function (cp) {
+ var _a, _b;
+ /*
+ * Entities can be emitted on the character, or directly after.
+ * We use the section start here to get accurate indices.
+ */
+ var index = this.tokenizer.getSectionStart();
+ this.endIndex = index - 1;
+ (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_js_1.fromCodePoint)(cp));
+ this.startIndex = index;
+ };
+ Parser.prototype.isVoidElement = function (name) {
+ return !this.options.xmlMode && voidElements.has(name);
+ };
+ /** @internal */
+ Parser.prototype.onopentagname = function (start, endIndex) {
+ this.endIndex = endIndex;
+ var name = this.getSlice(start, endIndex);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ this.emitOpenTag(name);
+ };
+ Parser.prototype.emitOpenTag = function (name) {
+ var _a, _b, _c, _d;
+ this.openTagStart = this.startIndex;
+ this.tagname = name;
+ var impliesClose = !this.options.xmlMode && openImpliesClose.get(name);
+ if (impliesClose) {
+ while (this.stack.length > 0 &&
+ impliesClose.has(this.stack[this.stack.length - 1])) {
+ var element = this.stack.pop();
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);
+ }
+ }
+ if (!this.isVoidElement(name)) {
+ this.stack.push(name);
+ if (foreignContextElements.has(name)) {
+ this.foreignContext.push(true);
+ }
+ else if (htmlIntegrationElements.has(name)) {
+ this.foreignContext.push(false);
+ }
+ }
+ (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
+ if (this.cbs.onopentag)
+ this.attribs = {};
+ };
+ Parser.prototype.endOpenTag = function (isImplied) {
+ var _a, _b;
+ this.startIndex = this.openTagStart;
+ if (this.attribs) {
+ (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);
+ this.attribs = null;
+ }
+ if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
+ this.cbs.onclosetag(this.tagname, true);
+ }
+ this.tagname = "";
+ };
+ /** @internal */
+ Parser.prototype.onopentagend = function (endIndex) {
+ this.endIndex = endIndex;
+ this.endOpenTag(false);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.onclosetag = function (start, endIndex) {
+ var _a, _b, _c, _d, _e, _f;
+ this.endIndex = endIndex;
+ var name = this.getSlice(start, endIndex);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ if (foreignContextElements.has(name) ||
+ htmlIntegrationElements.has(name)) {
+ this.foreignContext.pop();
+ }
+ if (!this.isVoidElement(name)) {
+ var pos = this.stack.lastIndexOf(name);
+ if (pos !== -1) {
+ if (this.cbs.onclosetag) {
+ var count = this.stack.length - pos;
+ while (count--) {
+ // We know the stack has sufficient elements.
+ this.cbs.onclosetag(this.stack.pop(), count !== 0);
+ }
+ }
+ else
+ this.stack.length = pos;
+ }
+ else if (!this.options.xmlMode && name === "p") {
+ // Implicit open before close
+ this.emitOpenTag("p");
+ this.closeCurrentTag(true);
+ }
+ }
+ else if (!this.options.xmlMode && name === "br") {
+ // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
+ (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, "br");
+ (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, "br", {}, true);
+ (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", false);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.onselfclosingtag = function (endIndex) {
+ this.endIndex = endIndex;
+ if (this.options.xmlMode ||
+ this.options.recognizeSelfClosing ||
+ this.foreignContext[this.foreignContext.length - 1]) {
+ this.closeCurrentTag(false);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ else {
+ // Ignore the fact that the tag is self-closing.
+ this.onopentagend(endIndex);
+ }
+ };
+ Parser.prototype.closeCurrentTag = function (isOpenImplied) {
+ var _a, _b;
+ var name = this.tagname;
+ this.endOpenTag(isOpenImplied);
+ // Self-closing tags will be on the top of the stack
+ if (this.stack[this.stack.length - 1] === name) {
+ // If the opening tag isn't implied, the closing tag has to be implied.
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
+ this.stack.pop();
+ }
+ };
+ /** @internal */
+ Parser.prototype.onattribname = function (start, endIndex) {
+ this.startIndex = start;
+ var name = this.getSlice(start, endIndex);
+ this.attribname = this.lowerCaseAttributeNames
+ ? name.toLowerCase()
+ : name;
+ };
+ /** @internal */
+ Parser.prototype.onattribdata = function (start, endIndex) {
+ this.attribvalue += this.getSlice(start, endIndex);
+ };
+ /** @internal */
+ Parser.prototype.onattribentity = function (cp) {
+ this.attribvalue += (0, decode_js_1.fromCodePoint)(cp);
+ };
+ /** @internal */
+ Parser.prototype.onattribend = function (quote, endIndex) {
+ var _a, _b;
+ this.endIndex = endIndex;
+ (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double
+ ? '"'
+ : quote === Tokenizer_js_1.QuoteType.Single
+ ? "'"
+ : quote === Tokenizer_js_1.QuoteType.NoValue
+ ? undefined
+ : null);
+ if (this.attribs &&
+ !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
+ this.attribs[this.attribname] = this.attribvalue;
+ }
+ this.attribvalue = "";
+ };
+ Parser.prototype.getInstructionName = function (value) {
+ var index = value.search(reNameEnd);
+ var name = index < 0 ? value : value.substr(0, index);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ return name;
+ };
+ /** @internal */
+ Parser.prototype.ondeclaration = function (start, endIndex) {
+ this.endIndex = endIndex;
+ var value = this.getSlice(start, endIndex);
+ if (this.cbs.onprocessinginstruction) {
+ var name = this.getInstructionName(value);
+ this.cbs.onprocessinginstruction("!".concat(name), "!".concat(value));
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.onprocessinginstruction = function (start, endIndex) {
+ this.endIndex = endIndex;
+ var value = this.getSlice(start, endIndex);
+ if (this.cbs.onprocessinginstruction) {
+ var name = this.getInstructionName(value);
+ this.cbs.onprocessinginstruction("?".concat(name), "?".concat(value));
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.oncomment = function (start, endIndex, offset) {
+ var _a, _b, _c, _d;
+ this.endIndex = endIndex;
+ (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));
+ (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.oncdata = function (start, endIndex, offset) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
+ this.endIndex = endIndex;
+ var value = this.getSlice(start, endIndex - offset);
+ if (this.options.xmlMode || this.options.recognizeCDATA) {
+ (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
+ (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
+ (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
+ }
+ else {
+ (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[".concat(value, "]]"));
+ (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ };
+ /** @internal */
+ Parser.prototype.onend = function () {
+ var _a, _b;
+ if (this.cbs.onclosetag) {
+ // Set the end index for all remaining tags
+ this.endIndex = this.startIndex;
+ for (var index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))
+ ;
+ }
+ (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
+ };
+ /**
+ * Resets the parser to a blank state, ready to parse a new HTML document
+ */
+ Parser.prototype.reset = function () {
+ var _a, _b, _c, _d;
+ (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
+ this.tokenizer.reset();
+ this.tagname = "";
+ this.attribname = "";
+ this.attribs = null;
+ this.stack.length = 0;
+ this.startIndex = 0;
+ this.endIndex = 0;
+ (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
+ this.buffers.length = 0;
+ this.bufferOffset = 0;
+ this.writeIndex = 0;
+ this.ended = false;
+ };
+ /**
+ * Resets the parser, then parses a complete document and
+ * pushes it to the handler.
+ *
+ * @param data Document to parse.
+ */
+ Parser.prototype.parseComplete = function (data) {
+ this.reset();
+ this.end(data);
+ };
+ Parser.prototype.getSlice = function (start, end) {
+ while (start - this.bufferOffset >= this.buffers[0].length) {
+ this.shiftBuffer();
+ }
+ var slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
+ while (end - this.bufferOffset > this.buffers[0].length) {
+ this.shiftBuffer();
+ slice += this.buffers[0].slice(0, end - this.bufferOffset);
+ }
+ return slice;
+ };
+ Parser.prototype.shiftBuffer = function () {
+ this.bufferOffset += this.buffers[0].length;
+ this.writeIndex--;
+ this.buffers.shift();
+ };
+ /**
+ * Parses a chunk of data and calls the corresponding callbacks.
+ *
+ * @param chunk Chunk to parse.
+ */
+ Parser.prototype.write = function (chunk) {
+ var _a, _b;
+ if (this.ended) {
+ (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!"));
+ return;
+ }
+ this.buffers.push(chunk);
+ if (this.tokenizer.running) {
+ this.tokenizer.write(chunk);
+ this.writeIndex++;
+ }
+ };
+ /**
+ * Parses the end of the buffer and clears the stack, calls onend.
+ *
+ * @param chunk Optional final chunk to parse.
+ */
+ Parser.prototype.end = function (chunk) {
+ var _a, _b;
+ if (this.ended) {
+ (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!"));
+ return;
+ }
+ if (chunk)
+ this.write(chunk);
+ this.ended = true;
+ this.tokenizer.end();
+ };
+ /**
+ * Pauses parsing. The parser won't emit events until `resume` is called.
+ */
+ Parser.prototype.pause = function () {
+ this.tokenizer.pause();
+ };
+ /**
+ * Resumes parsing after `pause` was called.
+ */
+ Parser.prototype.resume = function () {
+ this.tokenizer.resume();
+ while (this.tokenizer.running &&
+ this.writeIndex < this.buffers.length) {
+ this.tokenizer.write(this.buffers[this.writeIndex++]);
+ }
+ if (this.ended)
+ this.tokenizer.end();
+ };
+ /**
+ * Alias of `write`, for backwards compatibility.
+ *
+ * @param chunk Chunk to parse.
+ * @deprecated
+ */
+ Parser.prototype.parseChunk = function (chunk) {
+ this.write(chunk);
+ };
+ /**
+ * Alias of `end`, for backwards compatibility.
+ *
+ * @param chunk Optional final chunk to parse.
+ * @deprecated
+ */
+ Parser.prototype.done = function (chunk) {
+ this.end(chunk);
+ };
+ return Parser;
+}());
+exports.Parser = Parser;
+//# sourceMappingURL=Parser.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js.map
new file mode 100644
index 0000000..77ba5df
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Parser.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts
new file mode 100644
index 0000000..213adf2
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts
@@ -0,0 +1,143 @@
+export declare enum QuoteType {
+ NoValue = 0,
+ Unquoted = 1,
+ Single = 2,
+ Double = 3
+}
+export interface Callbacks {
+ onattribdata(start: number, endIndex: number): void;
+ onattribentity(codepoint: number): void;
+ onattribend(quote: QuoteType, endIndex: number): void;
+ onattribname(start: number, endIndex: number): void;
+ oncdata(start: number, endIndex: number, endOffset: number): void;
+ onclosetag(start: number, endIndex: number): void;
+ oncomment(start: number, endIndex: number, endOffset: number): void;
+ ondeclaration(start: number, endIndex: number): void;
+ onend(): void;
+ onopentagend(endIndex: number): void;
+ onopentagname(start: number, endIndex: number): void;
+ onprocessinginstruction(start: number, endIndex: number): void;
+ onselfclosingtag(endIndex: number): void;
+ ontext(start: number, endIndex: number): void;
+ ontextentity(codepoint: number): void;
+}
+export default class Tokenizer {
+ private readonly cbs;
+ /** The current state the tokenizer is in. */
+ private state;
+ /** The read buffer. */
+ private buffer;
+ /** The beginning of the section that is currently being read. */
+ private sectionStart;
+ /** The index within the buffer that we are currently looking at. */
+ private index;
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
+ private baseState;
+ /** For special parsing behavior inside of script and style tags. */
+ private isSpecial;
+ /** Indicates whether the tokenizer has been paused. */
+ running: boolean;
+ /** The offset of the current buffer. */
+ private offset;
+ private readonly xmlMode;
+ private readonly decodeEntities;
+ private readonly entityTrie;
+ constructor({ xmlMode, decodeEntities, }: {
+ xmlMode?: boolean;
+ decodeEntities?: boolean;
+ }, cbs: Callbacks);
+ reset(): void;
+ write(chunk: string): void;
+ end(): void;
+ pause(): void;
+ resume(): void;
+ /**
+ * The current index within all of the written data.
+ */
+ getIndex(): number;
+ /**
+ * The start of the current section.
+ */
+ getSectionStart(): number;
+ private stateText;
+ private currentSequence;
+ private sequenceIndex;
+ private stateSpecialStartSequence;
+ /** Look for an end tag. For <title> tags, also decode entities. */
+ private stateInSpecialTag;
+ private stateCDATASequence;
+ /**
+ * When we wait for one specific character, we can speed things up
+ * by skipping through the buffer until we find it.
+ *
+ * @returns Whether the character was found.
+ */
+ private fastForwardTo;
+ /**
+ * Comments and CDATA end with `-->` and `]]>`.
+ *
+ * Their common qualities are:
+ * - Their end sequences have a distinct character they start with.
+ * - That character is then repeated, so we have to check multiple repeats.
+ * - All characters but the start character of the sequence can be skipped.
+ */
+ private stateInCommentLike;
+ /**
+ * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
+ *
+ * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
+ * We allow anything that wouldn't end the tag.
+ */
+ private isTagStartChar;
+ private startSpecial;
+ private stateBeforeTagName;
+ private stateInTagName;
+ private stateBeforeClosingTagName;
+ private stateInClosingTagName;
+ private stateAfterClosingTagName;
+ private stateBeforeAttributeName;
+ private stateInSelfClosingTag;
+ private stateInAttributeName;
+ private stateAfterAttributeName;
+ private stateBeforeAttributeValue;
+ private handleInAttributeValue;
+ private stateInAttributeValueDoubleQuotes;
+ private stateInAttributeValueSingleQuotes;
+ private stateInAttributeValueNoQuotes;
+ private stateBeforeDeclaration;
+ private stateInDeclaration;
+ private stateInProcessingInstruction;
+ private stateBeforeComment;
+ private stateInSpecialComment;
+ private stateBeforeSpecialS;
+ private trieIndex;
+ private trieCurrent;
+ /** For named entities, the index of the value. For numeric entities, the code point. */
+ private entityResult;
+ private entityExcess;
+ private stateBeforeEntity;
+ private stateInNamedEntity;
+ private emitNamedEntity;
+ private stateBeforeNumericEntity;
+ private emitNumericEntity;
+ private stateInNumericEntity;
+ private stateInHexEntity;
+ private allowLegacyEntity;
+ /**
+ * Remove data that has already been consumed from the buffer.
+ */
+ private cleanup;
+ private shouldContinue;
+ /**
+ * Iterates through the buffer, calling the function corresponding to the current state.
+ *
+ * States that are more likely to be hit are higher up, as a performance improvement.
+ */
+ private parse;
+ private finish;
+ /** Handle any trailing data. */
+ private handleTrailingData;
+ private emitPartial;
+ private emitCodePoint;
+}
+//# sourceMappingURL=Tokenizer.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts.map
new file mode 100644
index 0000000..b5c06fe
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Tokenizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js
new file mode 100644
index 0000000..43863cc
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js
@@ -0,0 +1,938 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.QuoteType = void 0;
+var decode_js_1 = require("entities/lib/decode.js");
+var CharCodes;
+(function (CharCodes) {
+ CharCodes[CharCodes["Tab"] = 9] = "Tab";
+ CharCodes[CharCodes["NewLine"] = 10] = "NewLine";
+ CharCodes[CharCodes["FormFeed"] = 12] = "FormFeed";
+ CharCodes[CharCodes["CarriageReturn"] = 13] = "CarriageReturn";
+ CharCodes[CharCodes["Space"] = 32] = "Space";
+ CharCodes[CharCodes["ExclamationMark"] = 33] = "ExclamationMark";
+ CharCodes[CharCodes["Number"] = 35] = "Number";
+ CharCodes[CharCodes["Amp"] = 38] = "Amp";
+ CharCodes[CharCodes["SingleQuote"] = 39] = "SingleQuote";
+ CharCodes[CharCodes["DoubleQuote"] = 34] = "DoubleQuote";
+ CharCodes[CharCodes["Dash"] = 45] = "Dash";
+ CharCodes[CharCodes["Slash"] = 47] = "Slash";
+ CharCodes[CharCodes["Zero"] = 48] = "Zero";
+ CharCodes[CharCodes["Nine"] = 57] = "Nine";
+ CharCodes[CharCodes["Semi"] = 59] = "Semi";
+ CharCodes[CharCodes["Lt"] = 60] = "Lt";
+ CharCodes[CharCodes["Eq"] = 61] = "Eq";
+ CharCodes[CharCodes["Gt"] = 62] = "Gt";
+ CharCodes[CharCodes["Questionmark"] = 63] = "Questionmark";
+ CharCodes[CharCodes["UpperA"] = 65] = "UpperA";
+ CharCodes[CharCodes["LowerA"] = 97] = "LowerA";
+ CharCodes[CharCodes["UpperF"] = 70] = "UpperF";
+ CharCodes[CharCodes["LowerF"] = 102] = "LowerF";
+ CharCodes[CharCodes["UpperZ"] = 90] = "UpperZ";
+ CharCodes[CharCodes["LowerZ"] = 122] = "LowerZ";
+ CharCodes[CharCodes["LowerX"] = 120] = "LowerX";
+ CharCodes[CharCodes["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
+})(CharCodes || (CharCodes = {}));
+/** All the states the tokenizer can be in. */
+var State;
+(function (State) {
+ State[State["Text"] = 1] = "Text";
+ State[State["BeforeTagName"] = 2] = "BeforeTagName";
+ State[State["InTagName"] = 3] = "InTagName";
+ State[State["InSelfClosingTag"] = 4] = "InSelfClosingTag";
+ State[State["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
+ State[State["InClosingTagName"] = 6] = "InClosingTagName";
+ State[State["AfterClosingTagName"] = 7] = "AfterClosingTagName";
+ // Attributes
+ State[State["BeforeAttributeName"] = 8] = "BeforeAttributeName";
+ State[State["InAttributeName"] = 9] = "InAttributeName";
+ State[State["AfterAttributeName"] = 10] = "AfterAttributeName";
+ State[State["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
+ State[State["InAttributeValueDq"] = 12] = "InAttributeValueDq";
+ State[State["InAttributeValueSq"] = 13] = "InAttributeValueSq";
+ State[State["InAttributeValueNq"] = 14] = "InAttributeValueNq";
+ // Declarations
+ State[State["BeforeDeclaration"] = 15] = "BeforeDeclaration";
+ State[State["InDeclaration"] = 16] = "InDeclaration";
+ // Processing instructions
+ State[State["InProcessingInstruction"] = 17] = "InProcessingInstruction";
+ // Comments & CDATA
+ State[State["BeforeComment"] = 18] = "BeforeComment";
+ State[State["CDATASequence"] = 19] = "CDATASequence";
+ State[State["InSpecialComment"] = 20] = "InSpecialComment";
+ State[State["InCommentLike"] = 21] = "InCommentLike";
+ // Special tags
+ State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS";
+ State[State["SpecialStartSequence"] = 23] = "SpecialStartSequence";
+ State[State["InSpecialTag"] = 24] = "InSpecialTag";
+ State[State["BeforeEntity"] = 25] = "BeforeEntity";
+ State[State["BeforeNumericEntity"] = 26] = "BeforeNumericEntity";
+ State[State["InNamedEntity"] = 27] = "InNamedEntity";
+ State[State["InNumericEntity"] = 28] = "InNumericEntity";
+ State[State["InHexEntity"] = 29] = "InHexEntity";
+})(State || (State = {}));
+function isWhitespace(c) {
+ return (c === CharCodes.Space ||
+ c === CharCodes.NewLine ||
+ c === CharCodes.Tab ||
+ c === CharCodes.FormFeed ||
+ c === CharCodes.CarriageReturn);
+}
+function isEndOfTagSection(c) {
+ return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
+}
+function isNumber(c) {
+ return c >= CharCodes.Zero && c <= CharCodes.Nine;
+}
+function isASCIIAlpha(c) {
+ return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||
+ (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));
+}
+function isHexDigit(c) {
+ return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||
+ (c >= CharCodes.LowerA && c <= CharCodes.LowerF));
+}
+var QuoteType;
+(function (QuoteType) {
+ QuoteType[QuoteType["NoValue"] = 0] = "NoValue";
+ QuoteType[QuoteType["Unquoted"] = 1] = "Unquoted";
+ QuoteType[QuoteType["Single"] = 2] = "Single";
+ QuoteType[QuoteType["Double"] = 3] = "Double";
+})(QuoteType = exports.QuoteType || (exports.QuoteType = {}));
+/**
+ * Sequences used to match longer strings.
+ *
+ * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
+ * sequences with an increased offset.
+ */
+var Sequences = {
+ Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),
+ CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),
+ CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),
+ ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),
+ StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),
+ TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
+};
+var Tokenizer = /** @class */ (function () {
+ function Tokenizer(_a, cbs) {
+ var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c;
+ this.cbs = cbs;
+ /** The current state the tokenizer is in. */
+ this.state = State.Text;
+ /** The read buffer. */
+ this.buffer = "";
+ /** The beginning of the section that is currently being read. */
+ this.sectionStart = 0;
+ /** The index within the buffer that we are currently looking at. */
+ this.index = 0;
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
+ this.baseState = State.Text;
+ /** For special parsing behavior inside of script and style tags. */
+ this.isSpecial = false;
+ /** Indicates whether the tokenizer has been paused. */
+ this.running = true;
+ /** The offset of the current buffer. */
+ this.offset = 0;
+ this.currentSequence = undefined;
+ this.sequenceIndex = 0;
+ this.trieIndex = 0;
+ this.trieCurrent = 0;
+ /** For named entities, the index of the value. For numeric entities, the code point. */
+ this.entityResult = 0;
+ this.entityExcess = 0;
+ this.xmlMode = xmlMode;
+ this.decodeEntities = decodeEntities;
+ this.entityTrie = xmlMode ? decode_js_1.xmlDecodeTree : decode_js_1.htmlDecodeTree;
+ }
+ Tokenizer.prototype.reset = function () {
+ this.state = State.Text;
+ this.buffer = "";
+ this.sectionStart = 0;
+ this.index = 0;
+ this.baseState = State.Text;
+ this.currentSequence = undefined;
+ this.running = true;
+ this.offset = 0;
+ };
+ Tokenizer.prototype.write = function (chunk) {
+ this.offset += this.buffer.length;
+ this.buffer = chunk;
+ this.parse();
+ };
+ Tokenizer.prototype.end = function () {
+ if (this.running)
+ this.finish();
+ };
+ Tokenizer.prototype.pause = function () {
+ this.running = false;
+ };
+ Tokenizer.prototype.resume = function () {
+ this.running = true;
+ if (this.index < this.buffer.length + this.offset) {
+ this.parse();
+ }
+ };
+ /**
+ * The current index within all of the written data.
+ */
+ Tokenizer.prototype.getIndex = function () {
+ return this.index;
+ };
+ /**
+ * The start of the current section.
+ */
+ Tokenizer.prototype.getSectionStart = function () {
+ return this.sectionStart;
+ };
+ Tokenizer.prototype.stateText = function (c) {
+ if (c === CharCodes.Lt ||
+ (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {
+ if (this.index > this.sectionStart) {
+ this.cbs.ontext(this.sectionStart, this.index);
+ }
+ this.state = State.BeforeTagName;
+ this.sectionStart = this.index;
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.state = State.BeforeEntity;
+ }
+ };
+ Tokenizer.prototype.stateSpecialStartSequence = function (c) {
+ var isEnd = this.sequenceIndex === this.currentSequence.length;
+ var isMatch = isEnd
+ ? // If we are at the end of the sequence, make sure the tag name has ended
+ isEndOfTagSection(c)
+ : // Otherwise, do a case-insensitive comparison
+ (c | 0x20) === this.currentSequence[this.sequenceIndex];
+ if (!isMatch) {
+ this.isSpecial = false;
+ }
+ else if (!isEnd) {
+ this.sequenceIndex++;
+ return;
+ }
+ this.sequenceIndex = 0;
+ this.state = State.InTagName;
+ this.stateInTagName(c);
+ };
+ /** Look for an end tag. For <title> tags, also decode entities. */
+ Tokenizer.prototype.stateInSpecialTag = function (c) {
+ if (this.sequenceIndex === this.currentSequence.length) {
+ if (c === CharCodes.Gt || isWhitespace(c)) {
+ var endOfText = this.index - this.currentSequence.length;
+ if (this.sectionStart < endOfText) {
+ // Spoof the index so that reported locations match up.
+ var actualIndex = this.index;
+ this.index = endOfText;
+ this.cbs.ontext(this.sectionStart, endOfText);
+ this.index = actualIndex;
+ }
+ this.isSpecial = false;
+ this.sectionStart = endOfText + 2; // Skip over the `</`
+ this.stateInClosingTagName(c);
+ return; // We are done; skip the rest of the function.
+ }
+ this.sequenceIndex = 0;
+ }
+ if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
+ this.sequenceIndex += 1;
+ }
+ else if (this.sequenceIndex === 0) {
+ if (this.currentSequence === Sequences.TitleEnd) {
+ // We have to parse entities in <title> tags.
+ if (this.decodeEntities && c === CharCodes.Amp) {
+ this.state = State.BeforeEntity;
+ }
+ }
+ else if (this.fastForwardTo(CharCodes.Lt)) {
+ // Outside of <title> tags, we can fast-forward.
+ this.sequenceIndex = 1;
+ }
+ }
+ else {
+ // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
+ this.sequenceIndex = Number(c === CharCodes.Lt);
+ }
+ };
+ Tokenizer.prototype.stateCDATASequence = function (c) {
+ if (c === Sequences.Cdata[this.sequenceIndex]) {
+ if (++this.sequenceIndex === Sequences.Cdata.length) {
+ this.state = State.InCommentLike;
+ this.currentSequence = Sequences.CdataEnd;
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ else {
+ this.sequenceIndex = 0;
+ this.state = State.InDeclaration;
+ this.stateInDeclaration(c); // Reconsume the character
+ }
+ };
+ /**
+ * When we wait for one specific character, we can speed things up
+ * by skipping through the buffer until we find it.
+ *
+ * @returns Whether the character was found.
+ */
+ Tokenizer.prototype.fastForwardTo = function (c) {
+ while (++this.index < this.buffer.length + this.offset) {
+ if (this.buffer.charCodeAt(this.index - this.offset) === c) {
+ return true;
+ }
+ }
+ /*
+ * We increment the index at the end of the `parse` loop,
+ * so set it to `buffer.length - 1` here.
+ *
+ * TODO: Refactor `parse` to increment index before calling states.
+ */
+ this.index = this.buffer.length + this.offset - 1;
+ return false;
+ };
+ /**
+ * Comments and CDATA end with `-->` and `]]>`.
+ *
+ * Their common qualities are:
+ * - Their end sequences have a distinct character they start with.
+ * - That character is then repeated, so we have to check multiple repeats.
+ * - All characters but the start character of the sequence can be skipped.
+ */
+ Tokenizer.prototype.stateInCommentLike = function (c) {
+ if (c === this.currentSequence[this.sequenceIndex]) {
+ if (++this.sequenceIndex === this.currentSequence.length) {
+ if (this.currentSequence === Sequences.CdataEnd) {
+ this.cbs.oncdata(this.sectionStart, this.index, 2);
+ }
+ else {
+ this.cbs.oncomment(this.sectionStart, this.index, 2);
+ }
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ this.state = State.Text;
+ }
+ }
+ else if (this.sequenceIndex === 0) {
+ // Fast-forward to the first character of the sequence
+ if (this.fastForwardTo(this.currentSequence[0])) {
+ this.sequenceIndex = 1;
+ }
+ }
+ else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
+ // Allow long sequences, eg. --->, ]]]>
+ this.sequenceIndex = 0;
+ }
+ };
+ /**
+ * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
+ *
+ * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
+ * We allow anything that wouldn't end the tag.
+ */
+ Tokenizer.prototype.isTagStartChar = function (c) {
+ return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
+ };
+ Tokenizer.prototype.startSpecial = function (sequence, offset) {
+ this.isSpecial = true;
+ this.currentSequence = sequence;
+ this.sequenceIndex = offset;
+ this.state = State.SpecialStartSequence;
+ };
+ Tokenizer.prototype.stateBeforeTagName = function (c) {
+ if (c === CharCodes.ExclamationMark) {
+ this.state = State.BeforeDeclaration;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.Questionmark) {
+ this.state = State.InProcessingInstruction;
+ this.sectionStart = this.index + 1;
+ }
+ else if (this.isTagStartChar(c)) {
+ var lower = c | 0x20;
+ this.sectionStart = this.index;
+ if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
+ this.startSpecial(Sequences.TitleEnd, 3);
+ }
+ else {
+ this.state =
+ !this.xmlMode && lower === Sequences.ScriptEnd[2]
+ ? State.BeforeSpecialS
+ : State.InTagName;
+ }
+ }
+ else if (c === CharCodes.Slash) {
+ this.state = State.BeforeClosingTagName;
+ }
+ else {
+ this.state = State.Text;
+ this.stateText(c);
+ }
+ };
+ Tokenizer.prototype.stateInTagName = function (c) {
+ if (isEndOfTagSection(c)) {
+ this.cbs.onopentagname(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ };
+ Tokenizer.prototype.stateBeforeClosingTagName = function (c) {
+ if (isWhitespace(c)) {
+ // Ignore
+ }
+ else if (c === CharCodes.Gt) {
+ this.state = State.Text;
+ }
+ else {
+ this.state = this.isTagStartChar(c)
+ ? State.InClosingTagName
+ : State.InSpecialComment;
+ this.sectionStart = this.index;
+ }
+ };
+ Tokenizer.prototype.stateInClosingTagName = function (c) {
+ if (c === CharCodes.Gt || isWhitespace(c)) {
+ this.cbs.onclosetag(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.AfterClosingTagName;
+ this.stateAfterClosingTagName(c);
+ }
+ };
+ Tokenizer.prototype.stateAfterClosingTagName = function (c) {
+ // Skip everything until ">"
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.state = State.Text;
+ this.baseState = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ };
+ Tokenizer.prototype.stateBeforeAttributeName = function (c) {
+ if (c === CharCodes.Gt) {
+ this.cbs.onopentagend(this.index);
+ if (this.isSpecial) {
+ this.state = State.InSpecialTag;
+ this.sequenceIndex = 0;
+ }
+ else {
+ this.state = State.Text;
+ }
+ this.baseState = this.state;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.Slash) {
+ this.state = State.InSelfClosingTag;
+ }
+ else if (!isWhitespace(c)) {
+ this.state = State.InAttributeName;
+ this.sectionStart = this.index;
+ }
+ };
+ Tokenizer.prototype.stateInSelfClosingTag = function (c) {
+ if (c === CharCodes.Gt) {
+ this.cbs.onselfclosingtag(this.index);
+ this.state = State.Text;
+ this.baseState = State.Text;
+ this.sectionStart = this.index + 1;
+ this.isSpecial = false; // Reset special state, in case of self-closing special tags
+ }
+ else if (!isWhitespace(c)) {
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ };
+ Tokenizer.prototype.stateInAttributeName = function (c) {
+ if (c === CharCodes.Eq || isEndOfTagSection(c)) {
+ this.cbs.onattribname(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.AfterAttributeName;
+ this.stateAfterAttributeName(c);
+ }
+ };
+ Tokenizer.prototype.stateAfterAttributeName = function (c) {
+ if (c === CharCodes.Eq) {
+ this.state = State.BeforeAttributeValue;
+ }
+ else if (c === CharCodes.Slash || c === CharCodes.Gt) {
+ this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ else if (!isWhitespace(c)) {
+ this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.state = State.InAttributeName;
+ this.sectionStart = this.index;
+ }
+ };
+ Tokenizer.prototype.stateBeforeAttributeValue = function (c) {
+ if (c === CharCodes.DoubleQuote) {
+ this.state = State.InAttributeValueDq;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.SingleQuote) {
+ this.state = State.InAttributeValueSq;
+ this.sectionStart = this.index + 1;
+ }
+ else if (!isWhitespace(c)) {
+ this.sectionStart = this.index;
+ this.state = State.InAttributeValueNq;
+ this.stateInAttributeValueNoQuotes(c); // Reconsume token
+ }
+ };
+ Tokenizer.prototype.handleInAttributeValue = function (c, quote) {
+ if (c === quote ||
+ (!this.decodeEntities && this.fastForwardTo(quote))) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.cbs.onattribend(quote === CharCodes.DoubleQuote
+ ? QuoteType.Double
+ : QuoteType.Single, this.index);
+ this.state = State.BeforeAttributeName;
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.baseState = this.state;
+ this.state = State.BeforeEntity;
+ }
+ };
+ Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {
+ this.handleInAttributeValue(c, CharCodes.DoubleQuote);
+ };
+ Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {
+ this.handleInAttributeValue(c, CharCodes.SingleQuote);
+ };
+ Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {
+ if (isWhitespace(c) || c === CharCodes.Gt) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.cbs.onattribend(QuoteType.Unquoted, this.index);
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.baseState = this.state;
+ this.state = State.BeforeEntity;
+ }
+ };
+ Tokenizer.prototype.stateBeforeDeclaration = function (c) {
+ if (c === CharCodes.OpeningSquareBracket) {
+ this.state = State.CDATASequence;
+ this.sequenceIndex = 0;
+ }
+ else {
+ this.state =
+ c === CharCodes.Dash
+ ? State.BeforeComment
+ : State.InDeclaration;
+ }
+ };
+ Tokenizer.prototype.stateInDeclaration = function (c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.ondeclaration(this.sectionStart, this.index);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ };
+ Tokenizer.prototype.stateInProcessingInstruction = function (c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.onprocessinginstruction(this.sectionStart, this.index);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ };
+ Tokenizer.prototype.stateBeforeComment = function (c) {
+ if (c === CharCodes.Dash) {
+ this.state = State.InCommentLike;
+ this.currentSequence = Sequences.CommentEnd;
+ // Allow short comments (eg. <!-->)
+ this.sequenceIndex = 2;
+ this.sectionStart = this.index + 1;
+ }
+ else {
+ this.state = State.InDeclaration;
+ }
+ };
+ Tokenizer.prototype.stateInSpecialComment = function (c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ };
+ Tokenizer.prototype.stateBeforeSpecialS = function (c) {
+ var lower = c | 0x20;
+ if (lower === Sequences.ScriptEnd[3]) {
+ this.startSpecial(Sequences.ScriptEnd, 4);
+ }
+ else if (lower === Sequences.StyleEnd[3]) {
+ this.startSpecial(Sequences.StyleEnd, 4);
+ }
+ else {
+ this.state = State.InTagName;
+ this.stateInTagName(c); // Consume the token again
+ }
+ };
+ Tokenizer.prototype.stateBeforeEntity = function (c) {
+ // Start excess with 1 to include the '&'
+ this.entityExcess = 1;
+ this.entityResult = 0;
+ if (c === CharCodes.Number) {
+ this.state = State.BeforeNumericEntity;
+ }
+ else if (c === CharCodes.Amp) {
+ // We have two `&` characters in a row. Stay in the current state.
+ }
+ else {
+ this.trieIndex = 0;
+ this.trieCurrent = this.entityTrie[0];
+ this.state = State.InNamedEntity;
+ this.stateInNamedEntity(c);
+ }
+ };
+ Tokenizer.prototype.stateInNamedEntity = function (c) {
+ this.entityExcess += 1;
+ this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
+ if (this.trieIndex < 0) {
+ this.emitNamedEntity();
+ this.index--;
+ return;
+ }
+ this.trieCurrent = this.entityTrie[this.trieIndex];
+ var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH;
+ // If the branch is a value, store it and continue
+ if (masked) {
+ // The mask is the number of bytes of the value, including the current byte.
+ var valueLength = (masked >> 14) - 1;
+ // If we have a legacy entity while parsing strictly, just skip the number of bytes
+ if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {
+ this.trieIndex += valueLength;
+ }
+ else {
+ // Add 1 as we have already incremented the excess
+ var entityStart = this.index - this.entityExcess + 1;
+ if (entityStart > this.sectionStart) {
+ this.emitPartial(this.sectionStart, entityStart);
+ }
+ // If this is a surrogate pair, consume the next two bytes
+ this.entityResult = this.trieIndex;
+ this.trieIndex += valueLength;
+ this.entityExcess = 0;
+ this.sectionStart = this.index + 1;
+ if (valueLength === 0) {
+ this.emitNamedEntity();
+ }
+ }
+ }
+ };
+ Tokenizer.prototype.emitNamedEntity = function () {
+ this.state = this.baseState;
+ if (this.entityResult === 0) {
+ return;
+ }
+ var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >>
+ 14;
+ switch (valueLength) {
+ case 1: {
+ this.emitCodePoint(this.entityTrie[this.entityResult] &
+ ~decode_js_1.BinTrieFlags.VALUE_LENGTH);
+ break;
+ }
+ case 2: {
+ this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
+ break;
+ }
+ case 3: {
+ this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
+ this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
+ }
+ }
+ };
+ Tokenizer.prototype.stateBeforeNumericEntity = function (c) {
+ if ((c | 0x20) === CharCodes.LowerX) {
+ this.entityExcess++;
+ this.state = State.InHexEntity;
+ }
+ else {
+ this.state = State.InNumericEntity;
+ this.stateInNumericEntity(c);
+ }
+ };
+ Tokenizer.prototype.emitNumericEntity = function (strict) {
+ var entityStart = this.index - this.entityExcess - 1;
+ var numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);
+ if (numberStart !== this.index) {
+ // Emit leading data if any
+ if (entityStart > this.sectionStart) {
+ this.emitPartial(this.sectionStart, entityStart);
+ }
+ this.sectionStart = this.index + Number(strict);
+ this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult));
+ }
+ this.state = this.baseState;
+ };
+ Tokenizer.prototype.stateInNumericEntity = function (c) {
+ if (c === CharCodes.Semi) {
+ this.emitNumericEntity(true);
+ }
+ else if (isNumber(c)) {
+ this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);
+ this.entityExcess++;
+ }
+ else {
+ if (this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ }
+ else {
+ this.state = this.baseState;
+ }
+ this.index--;
+ }
+ };
+ Tokenizer.prototype.stateInHexEntity = function (c) {
+ if (c === CharCodes.Semi) {
+ this.emitNumericEntity(true);
+ }
+ else if (isNumber(c)) {
+ this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);
+ this.entityExcess++;
+ }
+ else if (isHexDigit(c)) {
+ this.entityResult =
+ this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);
+ this.entityExcess++;
+ }
+ else {
+ if (this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ }
+ else {
+ this.state = this.baseState;
+ }
+ this.index--;
+ }
+ };
+ Tokenizer.prototype.allowLegacyEntity = function () {
+ return (!this.xmlMode &&
+ (this.baseState === State.Text ||
+ this.baseState === State.InSpecialTag));
+ };
+ /**
+ * Remove data that has already been consumed from the buffer.
+ */
+ Tokenizer.prototype.cleanup = function () {
+ // If we are inside of text or attributes, emit what we already have.
+ if (this.running && this.sectionStart !== this.index) {
+ if (this.state === State.Text ||
+ (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {
+ this.cbs.ontext(this.sectionStart, this.index);
+ this.sectionStart = this.index;
+ }
+ else if (this.state === State.InAttributeValueDq ||
+ this.state === State.InAttributeValueSq ||
+ this.state === State.InAttributeValueNq) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = this.index;
+ }
+ }
+ };
+ Tokenizer.prototype.shouldContinue = function () {
+ return this.index < this.buffer.length + this.offset && this.running;
+ };
+ /**
+ * Iterates through the buffer, calling the function corresponding to the current state.
+ *
+ * States that are more likely to be hit are higher up, as a performance improvement.
+ */
+ Tokenizer.prototype.parse = function () {
+ while (this.shouldContinue()) {
+ var c = this.buffer.charCodeAt(this.index - this.offset);
+ switch (this.state) {
+ case State.Text: {
+ this.stateText(c);
+ break;
+ }
+ case State.SpecialStartSequence: {
+ this.stateSpecialStartSequence(c);
+ break;
+ }
+ case State.InSpecialTag: {
+ this.stateInSpecialTag(c);
+ break;
+ }
+ case State.CDATASequence: {
+ this.stateCDATASequence(c);
+ break;
+ }
+ case State.InAttributeValueDq: {
+ this.stateInAttributeValueDoubleQuotes(c);
+ break;
+ }
+ case State.InAttributeName: {
+ this.stateInAttributeName(c);
+ break;
+ }
+ case State.InCommentLike: {
+ this.stateInCommentLike(c);
+ break;
+ }
+ case State.InSpecialComment: {
+ this.stateInSpecialComment(c);
+ break;
+ }
+ case State.BeforeAttributeName: {
+ this.stateBeforeAttributeName(c);
+ break;
+ }
+ case State.InTagName: {
+ this.stateInTagName(c);
+ break;
+ }
+ case State.InClosingTagName: {
+ this.stateInClosingTagName(c);
+ break;
+ }
+ case State.BeforeTagName: {
+ this.stateBeforeTagName(c);
+ break;
+ }
+ case State.AfterAttributeName: {
+ this.stateAfterAttributeName(c);
+ break;
+ }
+ case State.InAttributeValueSq: {
+ this.stateInAttributeValueSingleQuotes(c);
+ break;
+ }
+ case State.BeforeAttributeValue: {
+ this.stateBeforeAttributeValue(c);
+ break;
+ }
+ case State.BeforeClosingTagName: {
+ this.stateBeforeClosingTagName(c);
+ break;
+ }
+ case State.AfterClosingTagName: {
+ this.stateAfterClosingTagName(c);
+ break;
+ }
+ case State.BeforeSpecialS: {
+ this.stateBeforeSpecialS(c);
+ break;
+ }
+ case State.InAttributeValueNq: {
+ this.stateInAttributeValueNoQuotes(c);
+ break;
+ }
+ case State.InSelfClosingTag: {
+ this.stateInSelfClosingTag(c);
+ break;
+ }
+ case State.InDeclaration: {
+ this.stateInDeclaration(c);
+ break;
+ }
+ case State.BeforeDeclaration: {
+ this.stateBeforeDeclaration(c);
+ break;
+ }
+ case State.BeforeComment: {
+ this.stateBeforeComment(c);
+ break;
+ }
+ case State.InProcessingInstruction: {
+ this.stateInProcessingInstruction(c);
+ break;
+ }
+ case State.InNamedEntity: {
+ this.stateInNamedEntity(c);
+ break;
+ }
+ case State.BeforeEntity: {
+ this.stateBeforeEntity(c);
+ break;
+ }
+ case State.InHexEntity: {
+ this.stateInHexEntity(c);
+ break;
+ }
+ case State.InNumericEntity: {
+ this.stateInNumericEntity(c);
+ break;
+ }
+ default: {
+ // `this._state === State.BeforeNumericEntity`
+ this.stateBeforeNumericEntity(c);
+ }
+ }
+ this.index++;
+ }
+ this.cleanup();
+ };
+ Tokenizer.prototype.finish = function () {
+ if (this.state === State.InNamedEntity) {
+ this.emitNamedEntity();
+ }
+ // If there is remaining data, emit it in a reasonable way
+ if (this.sectionStart < this.index) {
+ this.handleTrailingData();
+ }
+ this.cbs.onend();
+ };
+ /** Handle any trailing data. */
+ Tokenizer.prototype.handleTrailingData = function () {
+ var endIndex = this.buffer.length + this.offset;
+ if (this.state === State.InCommentLike) {
+ if (this.currentSequence === Sequences.CdataEnd) {
+ this.cbs.oncdata(this.sectionStart, endIndex, 0);
+ }
+ else {
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
+ }
+ }
+ else if (this.state === State.InNumericEntity &&
+ this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ // All trailing data will have been consumed
+ }
+ else if (this.state === State.InHexEntity &&
+ this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ // All trailing data will have been consumed
+ }
+ else if (this.state === State.InTagName ||
+ this.state === State.BeforeAttributeName ||
+ this.state === State.BeforeAttributeValue ||
+ this.state === State.AfterAttributeName ||
+ this.state === State.InAttributeName ||
+ this.state === State.InAttributeValueSq ||
+ this.state === State.InAttributeValueDq ||
+ this.state === State.InAttributeValueNq ||
+ this.state === State.InClosingTagName) {
+ /*
+ * If we are currently in an opening or closing tag, us not calling the
+ * respective callback signals that the tag should be ignored.
+ */
+ }
+ else {
+ this.cbs.ontext(this.sectionStart, endIndex);
+ }
+ };
+ Tokenizer.prototype.emitPartial = function (start, endIndex) {
+ if (this.baseState !== State.Text &&
+ this.baseState !== State.InSpecialTag) {
+ this.cbs.onattribdata(start, endIndex);
+ }
+ else {
+ this.cbs.ontext(start, endIndex);
+ }
+ };
+ Tokenizer.prototype.emitCodePoint = function (cp) {
+ if (this.baseState !== State.Text &&
+ this.baseState !== State.InSpecialTag) {
+ this.cbs.onattribentity(cp);
+ }
+ else {
+ this.cbs.ontextentity(cp);
+ }
+ };
+ return Tokenizer;
+}());
+exports.default = Tokenizer;
+//# sourceMappingURL=Tokenizer.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js.map
new file mode 100644
index 0000000..23140a3
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/Tokenizer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Tokenizer.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Tokenizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts
new file mode 100644
index 0000000..c3090f7
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts
@@ -0,0 +1,17 @@
+/// <reference types="node" />
+/// <reference types="node" />
+import { Handler, ParserOptions } from "./Parser.js";
+import { Writable } from "node:stream";
+/**
+ * WritableStream makes the `Parser` interface available as a NodeJS stream.
+ *
+ * @see Parser
+ */
+export declare class WritableStream extends Writable {
+ private readonly _parser;
+ private readonly _decoder;
+ constructor(cbs: Partial<Handler>, options?: ParserOptions);
+ _write(chunk: string | Buffer, encoding: string, callback: () => void): void;
+ _final(callback: () => void): void;
+}
+//# sourceMappingURL=WritableStream.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts.map
new file mode 100644
index 0000000..bed24b6
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"WritableStream.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["WritableStream.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAU,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEpC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAKjD,MAAM,CACX,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,IAAI,GACrB,IAAI;IAOE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;CAI9C"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js
new file mode 100644
index 0000000..3614c31
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js
@@ -0,0 +1,54 @@
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.WritableStream = void 0;
+var Parser_js_1 = require("./Parser.js");
+/*
+ * NOTE: If either of these two imports produces a type error,
+ * please update your @types/node dependency!
+ */
+var node_stream_1 = require("node:stream");
+var node_string_decoder_1 = require("node:string_decoder");
+// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
+function isBuffer(_chunk, encoding) {
+ return encoding === "buffer";
+}
+/**
+ * WritableStream makes the `Parser` interface available as a NodeJS stream.
+ *
+ * @see Parser
+ */
+var WritableStream = /** @class */ (function (_super) {
+ __extends(WritableStream, _super);
+ function WritableStream(cbs, options) {
+ var _this = _super.call(this, { decodeStrings: false }) || this;
+ _this._decoder = new node_string_decoder_1.StringDecoder();
+ _this._parser = new Parser_js_1.Parser(cbs, options);
+ return _this;
+ }
+ WritableStream.prototype._write = function (chunk, encoding, callback) {
+ this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);
+ callback();
+ };
+ WritableStream.prototype._final = function (callback) {
+ this._parser.end(this._decoder.end());
+ callback();
+ };
+ return WritableStream;
+}(node_stream_1.Writable));
+exports.WritableStream = WritableStream;
+//# sourceMappingURL=WritableStream.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js.map
new file mode 100644
index 0000000..2be9c8b
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/WritableStream.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"WritableStream.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["WritableStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAA6D;AAC7D;;;GAGG;AACH,2CAAuC;AACvC,2DAAoD;AAEpD,2GAA2G;AAC3G,SAAS,QAAQ,CAAC,MAAuB,EAAE,QAAgB;IACvD,OAAO,QAAQ,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH;IAAoC,kCAAQ;IAIxC,wBAAY,GAAqB,EAAE,OAAuB;QAA1D,YACI,kBAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,SAElC;QALgB,cAAQ,GAAG,IAAI,mCAAa,EAAE,CAAC;QAI5C,KAAI,CAAC,OAAO,GAAG,IAAI,kBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;IAC5C,CAAC;IAEQ,+BAAM,GAAf,UACI,KAAsB,EACtB,QAAgB,EAChB,QAAoB;QAEpB,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACjE,CAAC;QACF,QAAQ,EAAE,CAAC;IACf,CAAC;IAEQ,+BAAM,GAAf,UAAgB,QAAoB;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,QAAQ,EAAE,CAAC;IACf,CAAC;IACL,qBAAC;AAAD,CAAC,AAxBD,CAAoC,sBAAQ,GAwB3C;AAxBY,wCAAc"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts
new file mode 100644
index 0000000..ce46d58
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts
@@ -0,0 +1,190 @@
+import Tokenizer, { Callbacks, QuoteType } from "./Tokenizer.js";
+export interface ParserOptions {
+ /**
+ * Indicates whether special tags (`<script>`, `<style>`, and `<title>`) should get special treatment
+ * and if "empty" tags (eg. `<br>`) can have children. If `false`, the content of special tags
+ * will be text only. For feeds and other XML content (documents that don't consist of HTML),
+ * set this to `true`.
+ *
+ * @default false
+ */
+ xmlMode?: boolean;
+ /**
+ * Decode entities within the document.
+ *
+ * @default true
+ */
+ decodeEntities?: boolean;
+ /**
+ * If set to true, all tags will be lowercased.
+ *
+ * @default !xmlMode
+ */
+ lowerCaseTags?: boolean;
+ /**
+ * If set to `true`, all attribute names will be lowercased. This has noticeable impact on speed.
+ *
+ * @default !xmlMode
+ */
+ lowerCaseAttributeNames?: boolean;
+ /**
+ * If set to true, CDATA sections will be recognized as text even if the xmlMode option is not enabled.
+ * NOTE: If xmlMode is set to `true` then CDATA sections will always be recognized as text.
+ *
+ * @default xmlMode
+ */
+ recognizeCDATA?: boolean;
+ /**
+ * If set to `true`, self-closing tags will trigger the onclosetag event even if xmlMode is not set to `true`.
+ * NOTE: If xmlMode is set to `true` then self-closing tags will always be recognized.
+ *
+ * @default xmlMode
+ */
+ recognizeSelfClosing?: boolean;
+ /**
+ * Allows the default tokenizer to be overwritten.
+ */
+ Tokenizer?: typeof Tokenizer;
+}
+export interface Handler {
+ onparserinit(parser: Parser): void;
+ /**
+ * Resets the handler back to starting state
+ */
+ onreset(): void;
+ /**
+ * Signals the handler that parsing is done
+ */
+ onend(): void;
+ onerror(error: Error): void;
+ onclosetag(name: string, isImplied: boolean): void;
+ onopentagname(name: string): void;
+ /**
+ *
+ * @param name Name of the attribute
+ * @param value Value of the attribute.
+ * @param quote Quotes used around the attribute. `null` if the attribute has no quotes around the value, `undefined` if the attribute has no value.
+ */
+ onattribute(name: string, value: string, quote?: string | undefined | null): void;
+ onopentag(name: string, attribs: {
+ [s: string]: string;
+ }, isImplied: boolean): void;
+ ontext(data: string): void;
+ oncomment(data: string): void;
+ oncdatastart(): void;
+ oncdataend(): void;
+ oncommentend(): void;
+ onprocessinginstruction(name: string, data: string): void;
+}
+export declare class Parser implements Callbacks {
+ private readonly options;
+ /** The start index of the last event. */
+ startIndex: number;
+ /** The end index of the last event. */
+ endIndex: number;
+ /**
+ * Store the start index of the current open tag,
+ * so we can update the start index for attributes.
+ */
+ private openTagStart;
+ private tagname;
+ private attribname;
+ private attribvalue;
+ private attribs;
+ private readonly stack;
+ private readonly foreignContext;
+ private readonly cbs;
+ private readonly lowerCaseTagNames;
+ private readonly lowerCaseAttributeNames;
+ private readonly tokenizer;
+ private readonly buffers;
+ private bufferOffset;
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
+ private writeIndex;
+ /** Indicates whether the parser has finished running / `.end` has been called. */
+ private ended;
+ constructor(cbs?: Partial<Handler> | null, options?: ParserOptions);
+ /** @internal */
+ ontext(start: number, endIndex: number): void;
+ /** @internal */
+ ontextentity(cp: number): void;
+ protected isVoidElement(name: string): boolean;
+ /** @internal */
+ onopentagname(start: number, endIndex: number): void;
+ private emitOpenTag;
+ private endOpenTag;
+ /** @internal */
+ onopentagend(endIndex: number): void;
+ /** @internal */
+ onclosetag(start: number, endIndex: number): void;
+ /** @internal */
+ onselfclosingtag(endIndex: number): void;
+ private closeCurrentTag;
+ /** @internal */
+ onattribname(start: number, endIndex: number): void;
+ /** @internal */
+ onattribdata(start: number, endIndex: number): void;
+ /** @internal */
+ onattribentity(cp: number): void;
+ /** @internal */
+ onattribend(quote: QuoteType, endIndex: number): void;
+ private getInstructionName;
+ /** @internal */
+ ondeclaration(start: number, endIndex: number): void;
+ /** @internal */
+ onprocessinginstruction(start: number, endIndex: number): void;
+ /** @internal */
+ oncomment(start: number, endIndex: number, offset: number): void;
+ /** @internal */
+ oncdata(start: number, endIndex: number, offset: number): void;
+ /** @internal */
+ onend(): void;
+ /**
+ * Resets the parser to a blank state, ready to parse a new HTML document
+ */
+ reset(): void;
+ /**
+ * Resets the parser, then parses a complete document and
+ * pushes it to the handler.
+ *
+ * @param data Document to parse.
+ */
+ parseComplete(data: string): void;
+ private getSlice;
+ private shiftBuffer;
+ /**
+ * Parses a chunk of data and calls the corresponding callbacks.
+ *
+ * @param chunk Chunk to parse.
+ */
+ write(chunk: string): void;
+ /**
+ * Parses the end of the buffer and clears the stack, calls onend.
+ *
+ * @param chunk Optional final chunk to parse.
+ */
+ end(chunk?: string): void;
+ /**
+ * Pauses parsing. The parser won't emit events until `resume` is called.
+ */
+ pause(): void;
+ /**
+ * Resumes parsing after `pause` was called.
+ */
+ resume(): void;
+ /**
+ * Alias of `write`, for backwards compatibility.
+ *
+ * @param chunk Chunk to parse.
+ * @deprecated
+ */
+ parseChunk(chunk: string): void;
+ /**
+ * Alias of `end`, for backwards compatibility.
+ *
+ * @param chunk Optional final chunk to parse.
+ * @deprecated
+ */
+ done(chunk?: string): void;
+}
+//# sourceMappingURL=Parser.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts.map
new file mode 100644
index 0000000..9f9aa66
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Parser.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js
new file mode 100644
index 0000000..68cc0ed
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js
@@ -0,0 +1,489 @@
+import Tokenizer, { QuoteType } from "./Tokenizer.js";
+import { fromCodePoint } from "entities/lib/decode.js";
+const formTags = new Set([
+ "input",
+ "option",
+ "optgroup",
+ "select",
+ "button",
+ "datalist",
+ "textarea",
+]);
+const pTag = new Set(["p"]);
+const tableSectionTags = new Set(["thead", "tbody"]);
+const ddtTags = new Set(["dd", "dt"]);
+const rtpTags = new Set(["rt", "rp"]);
+const openImpliesClose = new Map([
+ ["tr", new Set(["tr", "th", "td"])],
+ ["th", new Set(["th"])],
+ ["td", new Set(["thead", "th", "td"])],
+ ["body", new Set(["head", "link", "script"])],
+ ["li", new Set(["li"])],
+ ["p", pTag],
+ ["h1", pTag],
+ ["h2", pTag],
+ ["h3", pTag],
+ ["h4", pTag],
+ ["h5", pTag],
+ ["h6", pTag],
+ ["select", formTags],
+ ["input", formTags],
+ ["output", formTags],
+ ["button", formTags],
+ ["datalist", formTags],
+ ["textarea", formTags],
+ ["option", new Set(["option"])],
+ ["optgroup", new Set(["optgroup", "option"])],
+ ["dd", ddtTags],
+ ["dt", ddtTags],
+ ["address", pTag],
+ ["article", pTag],
+ ["aside", pTag],
+ ["blockquote", pTag],
+ ["details", pTag],
+ ["div", pTag],
+ ["dl", pTag],
+ ["fieldset", pTag],
+ ["figcaption", pTag],
+ ["figure", pTag],
+ ["footer", pTag],
+ ["form", pTag],
+ ["header", pTag],
+ ["hr", pTag],
+ ["main", pTag],
+ ["nav", pTag],
+ ["ol", pTag],
+ ["pre", pTag],
+ ["section", pTag],
+ ["table", pTag],
+ ["ul", pTag],
+ ["rt", rtpTags],
+ ["rp", rtpTags],
+ ["tbody", tableSectionTags],
+ ["tfoot", tableSectionTags],
+]);
+const voidElements = new Set([
+ "area",
+ "base",
+ "basefont",
+ "br",
+ "col",
+ "command",
+ "embed",
+ "frame",
+ "hr",
+ "img",
+ "input",
+ "isindex",
+ "keygen",
+ "link",
+ "meta",
+ "param",
+ "source",
+ "track",
+ "wbr",
+]);
+const foreignContextElements = new Set(["math", "svg"]);
+const htmlIntegrationElements = new Set([
+ "mi",
+ "mo",
+ "mn",
+ "ms",
+ "mtext",
+ "annotation-xml",
+ "foreignobject",
+ "desc",
+ "title",
+]);
+const reNameEnd = /\s|\//;
+export class Parser {
+ constructor(cbs, options = {}) {
+ var _a, _b, _c, _d, _e;
+ this.options = options;
+ /** The start index of the last event. */
+ this.startIndex = 0;
+ /** The end index of the last event. */
+ this.endIndex = 0;
+ /**
+ * Store the start index of the current open tag,
+ * so we can update the start index for attributes.
+ */
+ this.openTagStart = 0;
+ this.tagname = "";
+ this.attribname = "";
+ this.attribvalue = "";
+ this.attribs = null;
+ this.stack = [];
+ this.foreignContext = [];
+ this.buffers = [];
+ this.bufferOffset = 0;
+ /** The index of the last written buffer. Used when resuming after a `pause()`. */
+ this.writeIndex = 0;
+ /** Indicates whether the parser has finished running / `.end` has been called. */
+ this.ended = false;
+ this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
+ this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;
+ this.lowerCaseAttributeNames =
+ (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
+ this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);
+ (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
+ }
+ // Tokenizer event handlers
+ /** @internal */
+ ontext(start, endIndex) {
+ var _a, _b;
+ const data = this.getSlice(start, endIndex);
+ this.endIndex = endIndex - 1;
+ (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
+ this.startIndex = endIndex;
+ }
+ /** @internal */
+ ontextentity(cp) {
+ var _a, _b;
+ /*
+ * Entities can be emitted on the character, or directly after.
+ * We use the section start here to get accurate indices.
+ */
+ const index = this.tokenizer.getSectionStart();
+ this.endIndex = index - 1;
+ (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));
+ this.startIndex = index;
+ }
+ isVoidElement(name) {
+ return !this.options.xmlMode && voidElements.has(name);
+ }
+ /** @internal */
+ onopentagname(start, endIndex) {
+ this.endIndex = endIndex;
+ let name = this.getSlice(start, endIndex);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ this.emitOpenTag(name);
+ }
+ emitOpenTag(name) {
+ var _a, _b, _c, _d;
+ this.openTagStart = this.startIndex;
+ this.tagname = name;
+ const impliesClose = !this.options.xmlMode && openImpliesClose.get(name);
+ if (impliesClose) {
+ while (this.stack.length > 0 &&
+ impliesClose.has(this.stack[this.stack.length - 1])) {
+ const element = this.stack.pop();
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);
+ }
+ }
+ if (!this.isVoidElement(name)) {
+ this.stack.push(name);
+ if (foreignContextElements.has(name)) {
+ this.foreignContext.push(true);
+ }
+ else if (htmlIntegrationElements.has(name)) {
+ this.foreignContext.push(false);
+ }
+ }
+ (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
+ if (this.cbs.onopentag)
+ this.attribs = {};
+ }
+ endOpenTag(isImplied) {
+ var _a, _b;
+ this.startIndex = this.openTagStart;
+ if (this.attribs) {
+ (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);
+ this.attribs = null;
+ }
+ if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
+ this.cbs.onclosetag(this.tagname, true);
+ }
+ this.tagname = "";
+ }
+ /** @internal */
+ onopentagend(endIndex) {
+ this.endIndex = endIndex;
+ this.endOpenTag(false);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ onclosetag(start, endIndex) {
+ var _a, _b, _c, _d, _e, _f;
+ this.endIndex = endIndex;
+ let name = this.getSlice(start, endIndex);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ if (foreignContextElements.has(name) ||
+ htmlIntegrationElements.has(name)) {
+ this.foreignContext.pop();
+ }
+ if (!this.isVoidElement(name)) {
+ const pos = this.stack.lastIndexOf(name);
+ if (pos !== -1) {
+ if (this.cbs.onclosetag) {
+ let count = this.stack.length - pos;
+ while (count--) {
+ // We know the stack has sufficient elements.
+ this.cbs.onclosetag(this.stack.pop(), count !== 0);
+ }
+ }
+ else
+ this.stack.length = pos;
+ }
+ else if (!this.options.xmlMode && name === "p") {
+ // Implicit open before close
+ this.emitOpenTag("p");
+ this.closeCurrentTag(true);
+ }
+ }
+ else if (!this.options.xmlMode && name === "br") {
+ // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
+ (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, "br");
+ (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, "br", {}, true);
+ (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", false);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ onselfclosingtag(endIndex) {
+ this.endIndex = endIndex;
+ if (this.options.xmlMode ||
+ this.options.recognizeSelfClosing ||
+ this.foreignContext[this.foreignContext.length - 1]) {
+ this.closeCurrentTag(false);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ else {
+ // Ignore the fact that the tag is self-closing.
+ this.onopentagend(endIndex);
+ }
+ }
+ closeCurrentTag(isOpenImplied) {
+ var _a, _b;
+ const name = this.tagname;
+ this.endOpenTag(isOpenImplied);
+ // Self-closing tags will be on the top of the stack
+ if (this.stack[this.stack.length - 1] === name) {
+ // If the opening tag isn't implied, the closing tag has to be implied.
+ (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
+ this.stack.pop();
+ }
+ }
+ /** @internal */
+ onattribname(start, endIndex) {
+ this.startIndex = start;
+ const name = this.getSlice(start, endIndex);
+ this.attribname = this.lowerCaseAttributeNames
+ ? name.toLowerCase()
+ : name;
+ }
+ /** @internal */
+ onattribdata(start, endIndex) {
+ this.attribvalue += this.getSlice(start, endIndex);
+ }
+ /** @internal */
+ onattribentity(cp) {
+ this.attribvalue += fromCodePoint(cp);
+ }
+ /** @internal */
+ onattribend(quote, endIndex) {
+ var _a, _b;
+ this.endIndex = endIndex;
+ (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double
+ ? '"'
+ : quote === QuoteType.Single
+ ? "'"
+ : quote === QuoteType.NoValue
+ ? undefined
+ : null);
+ if (this.attribs &&
+ !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
+ this.attribs[this.attribname] = this.attribvalue;
+ }
+ this.attribvalue = "";
+ }
+ getInstructionName(value) {
+ const index = value.search(reNameEnd);
+ let name = index < 0 ? value : value.substr(0, index);
+ if (this.lowerCaseTagNames) {
+ name = name.toLowerCase();
+ }
+ return name;
+ }
+ /** @internal */
+ ondeclaration(start, endIndex) {
+ this.endIndex = endIndex;
+ const value = this.getSlice(start, endIndex);
+ if (this.cbs.onprocessinginstruction) {
+ const name = this.getInstructionName(value);
+ this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ onprocessinginstruction(start, endIndex) {
+ this.endIndex = endIndex;
+ const value = this.getSlice(start, endIndex);
+ if (this.cbs.onprocessinginstruction) {
+ const name = this.getInstructionName(value);
+ this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ oncomment(start, endIndex, offset) {
+ var _a, _b, _c, _d;
+ this.endIndex = endIndex;
+ (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));
+ (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ oncdata(start, endIndex, offset) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
+ this.endIndex = endIndex;
+ const value = this.getSlice(start, endIndex - offset);
+ if (this.options.xmlMode || this.options.recognizeCDATA) {
+ (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
+ (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
+ (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
+ }
+ else {
+ (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
+ (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
+ }
+ // Set `startIndex` for next node
+ this.startIndex = endIndex + 1;
+ }
+ /** @internal */
+ onend() {
+ var _a, _b;
+ if (this.cbs.onclosetag) {
+ // Set the end index for all remaining tags
+ this.endIndex = this.startIndex;
+ for (let index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))
+ ;
+ }
+ (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
+ }
+ /**
+ * Resets the parser to a blank state, ready to parse a new HTML document
+ */
+ reset() {
+ var _a, _b, _c, _d;
+ (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
+ this.tokenizer.reset();
+ this.tagname = "";
+ this.attribname = "";
+ this.attribs = null;
+ this.stack.length = 0;
+ this.startIndex = 0;
+ this.endIndex = 0;
+ (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
+ this.buffers.length = 0;
+ this.bufferOffset = 0;
+ this.writeIndex = 0;
+ this.ended = false;
+ }
+ /**
+ * Resets the parser, then parses a complete document and
+ * pushes it to the handler.
+ *
+ * @param data Document to parse.
+ */
+ parseComplete(data) {
+ this.reset();
+ this.end(data);
+ }
+ getSlice(start, end) {
+ while (start - this.bufferOffset >= this.buffers[0].length) {
+ this.shiftBuffer();
+ }
+ let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
+ while (end - this.bufferOffset > this.buffers[0].length) {
+ this.shiftBuffer();
+ slice += this.buffers[0].slice(0, end - this.bufferOffset);
+ }
+ return slice;
+ }
+ shiftBuffer() {
+ this.bufferOffset += this.buffers[0].length;
+ this.writeIndex--;
+ this.buffers.shift();
+ }
+ /**
+ * Parses a chunk of data and calls the corresponding callbacks.
+ *
+ * @param chunk Chunk to parse.
+ */
+ write(chunk) {
+ var _a, _b;
+ if (this.ended) {
+ (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!"));
+ return;
+ }
+ this.buffers.push(chunk);
+ if (this.tokenizer.running) {
+ this.tokenizer.write(chunk);
+ this.writeIndex++;
+ }
+ }
+ /**
+ * Parses the end of the buffer and clears the stack, calls onend.
+ *
+ * @param chunk Optional final chunk to parse.
+ */
+ end(chunk) {
+ var _a, _b;
+ if (this.ended) {
+ (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!"));
+ return;
+ }
+ if (chunk)
+ this.write(chunk);
+ this.ended = true;
+ this.tokenizer.end();
+ }
+ /**
+ * Pauses parsing. The parser won't emit events until `resume` is called.
+ */
+ pause() {
+ this.tokenizer.pause();
+ }
+ /**
+ * Resumes parsing after `pause` was called.
+ */
+ resume() {
+ this.tokenizer.resume();
+ while (this.tokenizer.running &&
+ this.writeIndex < this.buffers.length) {
+ this.tokenizer.write(this.buffers[this.writeIndex++]);
+ }
+ if (this.ended)
+ this.tokenizer.end();
+ }
+ /**
+ * Alias of `write`, for backwards compatibility.
+ *
+ * @param chunk Chunk to parse.
+ * @deprecated
+ */
+ parseChunk(chunk) {
+ this.write(chunk);
+ }
+ /**
+ * Alias of `end`, for backwards compatibility.
+ *
+ * @param chunk Optional final chunk to parse.
+ * @deprecated
+ */
+ done(chunk) {
+ this.end(chunk);
+ }
+}
+//# sourceMappingURL=Parser.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js.map
new file mode 100644
index 0000000..dfe9f34
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Parser.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Parser.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts
new file mode 100644
index 0000000..213adf2
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts
@@ -0,0 +1,143 @@
+export declare enum QuoteType {
+ NoValue = 0,
+ Unquoted = 1,
+ Single = 2,
+ Double = 3
+}
+export interface Callbacks {
+ onattribdata(start: number, endIndex: number): void;
+ onattribentity(codepoint: number): void;
+ onattribend(quote: QuoteType, endIndex: number): void;
+ onattribname(start: number, endIndex: number): void;
+ oncdata(start: number, endIndex: number, endOffset: number): void;
+ onclosetag(start: number, endIndex: number): void;
+ oncomment(start: number, endIndex: number, endOffset: number): void;
+ ondeclaration(start: number, endIndex: number): void;
+ onend(): void;
+ onopentagend(endIndex: number): void;
+ onopentagname(start: number, endIndex: number): void;
+ onprocessinginstruction(start: number, endIndex: number): void;
+ onselfclosingtag(endIndex: number): void;
+ ontext(start: number, endIndex: number): void;
+ ontextentity(codepoint: number): void;
+}
+export default class Tokenizer {
+ private readonly cbs;
+ /** The current state the tokenizer is in. */
+ private state;
+ /** The read buffer. */
+ private buffer;
+ /** The beginning of the section that is currently being read. */
+ private sectionStart;
+ /** The index within the buffer that we are currently looking at. */
+ private index;
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
+ private baseState;
+ /** For special parsing behavior inside of script and style tags. */
+ private isSpecial;
+ /** Indicates whether the tokenizer has been paused. */
+ running: boolean;
+ /** The offset of the current buffer. */
+ private offset;
+ private readonly xmlMode;
+ private readonly decodeEntities;
+ private readonly entityTrie;
+ constructor({ xmlMode, decodeEntities, }: {
+ xmlMode?: boolean;
+ decodeEntities?: boolean;
+ }, cbs: Callbacks);
+ reset(): void;
+ write(chunk: string): void;
+ end(): void;
+ pause(): void;
+ resume(): void;
+ /**
+ * The current index within all of the written data.
+ */
+ getIndex(): number;
+ /**
+ * The start of the current section.
+ */
+ getSectionStart(): number;
+ private stateText;
+ private currentSequence;
+ private sequenceIndex;
+ private stateSpecialStartSequence;
+ /** Look for an end tag. For <title> tags, also decode entities. */
+ private stateInSpecialTag;
+ private stateCDATASequence;
+ /**
+ * When we wait for one specific character, we can speed things up
+ * by skipping through the buffer until we find it.
+ *
+ * @returns Whether the character was found.
+ */
+ private fastForwardTo;
+ /**
+ * Comments and CDATA end with `-->` and `]]>`.
+ *
+ * Their common qualities are:
+ * - Their end sequences have a distinct character they start with.
+ * - That character is then repeated, so we have to check multiple repeats.
+ * - All characters but the start character of the sequence can be skipped.
+ */
+ private stateInCommentLike;
+ /**
+ * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
+ *
+ * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
+ * We allow anything that wouldn't end the tag.
+ */
+ private isTagStartChar;
+ private startSpecial;
+ private stateBeforeTagName;
+ private stateInTagName;
+ private stateBeforeClosingTagName;
+ private stateInClosingTagName;
+ private stateAfterClosingTagName;
+ private stateBeforeAttributeName;
+ private stateInSelfClosingTag;
+ private stateInAttributeName;
+ private stateAfterAttributeName;
+ private stateBeforeAttributeValue;
+ private handleInAttributeValue;
+ private stateInAttributeValueDoubleQuotes;
+ private stateInAttributeValueSingleQuotes;
+ private stateInAttributeValueNoQuotes;
+ private stateBeforeDeclaration;
+ private stateInDeclaration;
+ private stateInProcessingInstruction;
+ private stateBeforeComment;
+ private stateInSpecialComment;
+ private stateBeforeSpecialS;
+ private trieIndex;
+ private trieCurrent;
+ /** For named entities, the index of the value. For numeric entities, the code point. */
+ private entityResult;
+ private entityExcess;
+ private stateBeforeEntity;
+ private stateInNamedEntity;
+ private emitNamedEntity;
+ private stateBeforeNumericEntity;
+ private emitNumericEntity;
+ private stateInNumericEntity;
+ private stateInHexEntity;
+ private allowLegacyEntity;
+ /**
+ * Remove data that has already been consumed from the buffer.
+ */
+ private cleanup;
+ private shouldContinue;
+ /**
+ * Iterates through the buffer, calling the function corresponding to the current state.
+ *
+ * States that are more likely to be hit are higher up, as a performance improvement.
+ */
+ private parse;
+ private finish;
+ /** Handle any trailing data. */
+ private handleTrailingData;
+ private emitPartial;
+ private emitCodePoint;
+}
+//# sourceMappingURL=Tokenizer.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts.map
new file mode 100644
index 0000000..b5c06fe
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Tokenizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js
new file mode 100644
index 0000000..a97456b
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js
@@ -0,0 +1,932 @@
+import { htmlDecodeTree, xmlDecodeTree, BinTrieFlags, determineBranch, replaceCodePoint, } from "entities/lib/decode.js";
+var CharCodes;
+(function (CharCodes) {
+ CharCodes[CharCodes["Tab"] = 9] = "Tab";
+ CharCodes[CharCodes["NewLine"] = 10] = "NewLine";
+ CharCodes[CharCodes["FormFeed"] = 12] = "FormFeed";
+ CharCodes[CharCodes["CarriageReturn"] = 13] = "CarriageReturn";
+ CharCodes[CharCodes["Space"] = 32] = "Space";
+ CharCodes[CharCodes["ExclamationMark"] = 33] = "ExclamationMark";
+ CharCodes[CharCodes["Number"] = 35] = "Number";
+ CharCodes[CharCodes["Amp"] = 38] = "Amp";
+ CharCodes[CharCodes["SingleQuote"] = 39] = "SingleQuote";
+ CharCodes[CharCodes["DoubleQuote"] = 34] = "DoubleQuote";
+ CharCodes[CharCodes["Dash"] = 45] = "Dash";
+ CharCodes[CharCodes["Slash"] = 47] = "Slash";
+ CharCodes[CharCodes["Zero"] = 48] = "Zero";
+ CharCodes[CharCodes["Nine"] = 57] = "Nine";
+ CharCodes[CharCodes["Semi"] = 59] = "Semi";
+ CharCodes[CharCodes["Lt"] = 60] = "Lt";
+ CharCodes[CharCodes["Eq"] = 61] = "Eq";
+ CharCodes[CharCodes["Gt"] = 62] = "Gt";
+ CharCodes[CharCodes["Questionmark"] = 63] = "Questionmark";
+ CharCodes[CharCodes["UpperA"] = 65] = "UpperA";
+ CharCodes[CharCodes["LowerA"] = 97] = "LowerA";
+ CharCodes[CharCodes["UpperF"] = 70] = "UpperF";
+ CharCodes[CharCodes["LowerF"] = 102] = "LowerF";
+ CharCodes[CharCodes["UpperZ"] = 90] = "UpperZ";
+ CharCodes[CharCodes["LowerZ"] = 122] = "LowerZ";
+ CharCodes[CharCodes["LowerX"] = 120] = "LowerX";
+ CharCodes[CharCodes["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
+})(CharCodes || (CharCodes = {}));
+/** All the states the tokenizer can be in. */
+var State;
+(function (State) {
+ State[State["Text"] = 1] = "Text";
+ State[State["BeforeTagName"] = 2] = "BeforeTagName";
+ State[State["InTagName"] = 3] = "InTagName";
+ State[State["InSelfClosingTag"] = 4] = "InSelfClosingTag";
+ State[State["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
+ State[State["InClosingTagName"] = 6] = "InClosingTagName";
+ State[State["AfterClosingTagName"] = 7] = "AfterClosingTagName";
+ // Attributes
+ State[State["BeforeAttributeName"] = 8] = "BeforeAttributeName";
+ State[State["InAttributeName"] = 9] = "InAttributeName";
+ State[State["AfterAttributeName"] = 10] = "AfterAttributeName";
+ State[State["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
+ State[State["InAttributeValueDq"] = 12] = "InAttributeValueDq";
+ State[State["InAttributeValueSq"] = 13] = "InAttributeValueSq";
+ State[State["InAttributeValueNq"] = 14] = "InAttributeValueNq";
+ // Declarations
+ State[State["BeforeDeclaration"] = 15] = "BeforeDeclaration";
+ State[State["InDeclaration"] = 16] = "InDeclaration";
+ // Processing instructions
+ State[State["InProcessingInstruction"] = 17] = "InProcessingInstruction";
+ // Comments & CDATA
+ State[State["BeforeComment"] = 18] = "BeforeComment";
+ State[State["CDATASequence"] = 19] = "CDATASequence";
+ State[State["InSpecialComment"] = 20] = "InSpecialComment";
+ State[State["InCommentLike"] = 21] = "InCommentLike";
+ // Special tags
+ State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS";
+ State[State["SpecialStartSequence"] = 23] = "SpecialStartSequence";
+ State[State["InSpecialTag"] = 24] = "InSpecialTag";
+ State[State["BeforeEntity"] = 25] = "BeforeEntity";
+ State[State["BeforeNumericEntity"] = 26] = "BeforeNumericEntity";
+ State[State["InNamedEntity"] = 27] = "InNamedEntity";
+ State[State["InNumericEntity"] = 28] = "InNumericEntity";
+ State[State["InHexEntity"] = 29] = "InHexEntity";
+})(State || (State = {}));
+function isWhitespace(c) {
+ return (c === CharCodes.Space ||
+ c === CharCodes.NewLine ||
+ c === CharCodes.Tab ||
+ c === CharCodes.FormFeed ||
+ c === CharCodes.CarriageReturn);
+}
+function isEndOfTagSection(c) {
+ return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
+}
+function isNumber(c) {
+ return c >= CharCodes.Zero && c <= CharCodes.Nine;
+}
+function isASCIIAlpha(c) {
+ return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||
+ (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));
+}
+function isHexDigit(c) {
+ return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||
+ (c >= CharCodes.LowerA && c <= CharCodes.LowerF));
+}
+export var QuoteType;
+(function (QuoteType) {
+ QuoteType[QuoteType["NoValue"] = 0] = "NoValue";
+ QuoteType[QuoteType["Unquoted"] = 1] = "Unquoted";
+ QuoteType[QuoteType["Single"] = 2] = "Single";
+ QuoteType[QuoteType["Double"] = 3] = "Double";
+})(QuoteType || (QuoteType = {}));
+/**
+ * Sequences used to match longer strings.
+ *
+ * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
+ * sequences with an increased offset.
+ */
+const Sequences = {
+ Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),
+ CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),
+ CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),
+ ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),
+ StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),
+ TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
+};
+export default class Tokenizer {
+ constructor({ xmlMode = false, decodeEntities = true, }, cbs) {
+ this.cbs = cbs;
+ /** The current state the tokenizer is in. */
+ this.state = State.Text;
+ /** The read buffer. */
+ this.buffer = "";
+ /** The beginning of the section that is currently being read. */
+ this.sectionStart = 0;
+ /** The index within the buffer that we are currently looking at. */
+ this.index = 0;
+ /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
+ this.baseState = State.Text;
+ /** For special parsing behavior inside of script and style tags. */
+ this.isSpecial = false;
+ /** Indicates whether the tokenizer has been paused. */
+ this.running = true;
+ /** The offset of the current buffer. */
+ this.offset = 0;
+ this.currentSequence = undefined;
+ this.sequenceIndex = 0;
+ this.trieIndex = 0;
+ this.trieCurrent = 0;
+ /** For named entities, the index of the value. For numeric entities, the code point. */
+ this.entityResult = 0;
+ this.entityExcess = 0;
+ this.xmlMode = xmlMode;
+ this.decodeEntities = decodeEntities;
+ this.entityTrie = xmlMode ? xmlDecodeTree : htmlDecodeTree;
+ }
+ reset() {
+ this.state = State.Text;
+ this.buffer = "";
+ this.sectionStart = 0;
+ this.index = 0;
+ this.baseState = State.Text;
+ this.currentSequence = undefined;
+ this.running = true;
+ this.offset = 0;
+ }
+ write(chunk) {
+ this.offset += this.buffer.length;
+ this.buffer = chunk;
+ this.parse();
+ }
+ end() {
+ if (this.running)
+ this.finish();
+ }
+ pause() {
+ this.running = false;
+ }
+ resume() {
+ this.running = true;
+ if (this.index < this.buffer.length + this.offset) {
+ this.parse();
+ }
+ }
+ /**
+ * The current index within all of the written data.
+ */
+ getIndex() {
+ return this.index;
+ }
+ /**
+ * The start of the current section.
+ */
+ getSectionStart() {
+ return this.sectionStart;
+ }
+ stateText(c) {
+ if (c === CharCodes.Lt ||
+ (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {
+ if (this.index > this.sectionStart) {
+ this.cbs.ontext(this.sectionStart, this.index);
+ }
+ this.state = State.BeforeTagName;
+ this.sectionStart = this.index;
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.state = State.BeforeEntity;
+ }
+ }
+ stateSpecialStartSequence(c) {
+ const isEnd = this.sequenceIndex === this.currentSequence.length;
+ const isMatch = isEnd
+ ? // If we are at the end of the sequence, make sure the tag name has ended
+ isEndOfTagSection(c)
+ : // Otherwise, do a case-insensitive comparison
+ (c | 0x20) === this.currentSequence[this.sequenceIndex];
+ if (!isMatch) {
+ this.isSpecial = false;
+ }
+ else if (!isEnd) {
+ this.sequenceIndex++;
+ return;
+ }
+ this.sequenceIndex = 0;
+ this.state = State.InTagName;
+ this.stateInTagName(c);
+ }
+ /** Look for an end tag. For <title> tags, also decode entities. */
+ stateInSpecialTag(c) {
+ if (this.sequenceIndex === this.currentSequence.length) {
+ if (c === CharCodes.Gt || isWhitespace(c)) {
+ const endOfText = this.index - this.currentSequence.length;
+ if (this.sectionStart < endOfText) {
+ // Spoof the index so that reported locations match up.
+ const actualIndex = this.index;
+ this.index = endOfText;
+ this.cbs.ontext(this.sectionStart, endOfText);
+ this.index = actualIndex;
+ }
+ this.isSpecial = false;
+ this.sectionStart = endOfText + 2; // Skip over the `</`
+ this.stateInClosingTagName(c);
+ return; // We are done; skip the rest of the function.
+ }
+ this.sequenceIndex = 0;
+ }
+ if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
+ this.sequenceIndex += 1;
+ }
+ else if (this.sequenceIndex === 0) {
+ if (this.currentSequence === Sequences.TitleEnd) {
+ // We have to parse entities in <title> tags.
+ if (this.decodeEntities && c === CharCodes.Amp) {
+ this.state = State.BeforeEntity;
+ }
+ }
+ else if (this.fastForwardTo(CharCodes.Lt)) {
+ // Outside of <title> tags, we can fast-forward.
+ this.sequenceIndex = 1;
+ }
+ }
+ else {
+ // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
+ this.sequenceIndex = Number(c === CharCodes.Lt);
+ }
+ }
+ stateCDATASequence(c) {
+ if (c === Sequences.Cdata[this.sequenceIndex]) {
+ if (++this.sequenceIndex === Sequences.Cdata.length) {
+ this.state = State.InCommentLike;
+ this.currentSequence = Sequences.CdataEnd;
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ else {
+ this.sequenceIndex = 0;
+ this.state = State.InDeclaration;
+ this.stateInDeclaration(c); // Reconsume the character
+ }
+ }
+ /**
+ * When we wait for one specific character, we can speed things up
+ * by skipping through the buffer until we find it.
+ *
+ * @returns Whether the character was found.
+ */
+ fastForwardTo(c) {
+ while (++this.index < this.buffer.length + this.offset) {
+ if (this.buffer.charCodeAt(this.index - this.offset) === c) {
+ return true;
+ }
+ }
+ /*
+ * We increment the index at the end of the `parse` loop,
+ * so set it to `buffer.length - 1` here.
+ *
+ * TODO: Refactor `parse` to increment index before calling states.
+ */
+ this.index = this.buffer.length + this.offset - 1;
+ return false;
+ }
+ /**
+ * Comments and CDATA end with `-->` and `]]>`.
+ *
+ * Their common qualities are:
+ * - Their end sequences have a distinct character they start with.
+ * - That character is then repeated, so we have to check multiple repeats.
+ * - All characters but the start character of the sequence can be skipped.
+ */
+ stateInCommentLike(c) {
+ if (c === this.currentSequence[this.sequenceIndex]) {
+ if (++this.sequenceIndex === this.currentSequence.length) {
+ if (this.currentSequence === Sequences.CdataEnd) {
+ this.cbs.oncdata(this.sectionStart, this.index, 2);
+ }
+ else {
+ this.cbs.oncomment(this.sectionStart, this.index, 2);
+ }
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ this.state = State.Text;
+ }
+ }
+ else if (this.sequenceIndex === 0) {
+ // Fast-forward to the first character of the sequence
+ if (this.fastForwardTo(this.currentSequence[0])) {
+ this.sequenceIndex = 1;
+ }
+ }
+ else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
+ // Allow long sequences, eg. --->, ]]]>
+ this.sequenceIndex = 0;
+ }
+ }
+ /**
+ * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
+ *
+ * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
+ * We allow anything that wouldn't end the tag.
+ */
+ isTagStartChar(c) {
+ return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
+ }
+ startSpecial(sequence, offset) {
+ this.isSpecial = true;
+ this.currentSequence = sequence;
+ this.sequenceIndex = offset;
+ this.state = State.SpecialStartSequence;
+ }
+ stateBeforeTagName(c) {
+ if (c === CharCodes.ExclamationMark) {
+ this.state = State.BeforeDeclaration;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.Questionmark) {
+ this.state = State.InProcessingInstruction;
+ this.sectionStart = this.index + 1;
+ }
+ else if (this.isTagStartChar(c)) {
+ const lower = c | 0x20;
+ this.sectionStart = this.index;
+ if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
+ this.startSpecial(Sequences.TitleEnd, 3);
+ }
+ else {
+ this.state =
+ !this.xmlMode && lower === Sequences.ScriptEnd[2]
+ ? State.BeforeSpecialS
+ : State.InTagName;
+ }
+ }
+ else if (c === CharCodes.Slash) {
+ this.state = State.BeforeClosingTagName;
+ }
+ else {
+ this.state = State.Text;
+ this.stateText(c);
+ }
+ }
+ stateInTagName(c) {
+ if (isEndOfTagSection(c)) {
+ this.cbs.onopentagname(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ }
+ stateBeforeClosingTagName(c) {
+ if (isWhitespace(c)) {
+ // Ignore
+ }
+ else if (c === CharCodes.Gt) {
+ this.state = State.Text;
+ }
+ else {
+ this.state = this.isTagStartChar(c)
+ ? State.InClosingTagName
+ : State.InSpecialComment;
+ this.sectionStart = this.index;
+ }
+ }
+ stateInClosingTagName(c) {
+ if (c === CharCodes.Gt || isWhitespace(c)) {
+ this.cbs.onclosetag(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.AfterClosingTagName;
+ this.stateAfterClosingTagName(c);
+ }
+ }
+ stateAfterClosingTagName(c) {
+ // Skip everything until ">"
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.state = State.Text;
+ this.baseState = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ stateBeforeAttributeName(c) {
+ if (c === CharCodes.Gt) {
+ this.cbs.onopentagend(this.index);
+ if (this.isSpecial) {
+ this.state = State.InSpecialTag;
+ this.sequenceIndex = 0;
+ }
+ else {
+ this.state = State.Text;
+ }
+ this.baseState = this.state;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.Slash) {
+ this.state = State.InSelfClosingTag;
+ }
+ else if (!isWhitespace(c)) {
+ this.state = State.InAttributeName;
+ this.sectionStart = this.index;
+ }
+ }
+ stateInSelfClosingTag(c) {
+ if (c === CharCodes.Gt) {
+ this.cbs.onselfclosingtag(this.index);
+ this.state = State.Text;
+ this.baseState = State.Text;
+ this.sectionStart = this.index + 1;
+ this.isSpecial = false; // Reset special state, in case of self-closing special tags
+ }
+ else if (!isWhitespace(c)) {
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ }
+ stateInAttributeName(c) {
+ if (c === CharCodes.Eq || isEndOfTagSection(c)) {
+ this.cbs.onattribname(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.state = State.AfterAttributeName;
+ this.stateAfterAttributeName(c);
+ }
+ }
+ stateAfterAttributeName(c) {
+ if (c === CharCodes.Eq) {
+ this.state = State.BeforeAttributeValue;
+ }
+ else if (c === CharCodes.Slash || c === CharCodes.Gt) {
+ this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ else if (!isWhitespace(c)) {
+ this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.state = State.InAttributeName;
+ this.sectionStart = this.index;
+ }
+ }
+ stateBeforeAttributeValue(c) {
+ if (c === CharCodes.DoubleQuote) {
+ this.state = State.InAttributeValueDq;
+ this.sectionStart = this.index + 1;
+ }
+ else if (c === CharCodes.SingleQuote) {
+ this.state = State.InAttributeValueSq;
+ this.sectionStart = this.index + 1;
+ }
+ else if (!isWhitespace(c)) {
+ this.sectionStart = this.index;
+ this.state = State.InAttributeValueNq;
+ this.stateInAttributeValueNoQuotes(c); // Reconsume token
+ }
+ }
+ handleInAttributeValue(c, quote) {
+ if (c === quote ||
+ (!this.decodeEntities && this.fastForwardTo(quote))) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.cbs.onattribend(quote === CharCodes.DoubleQuote
+ ? QuoteType.Double
+ : QuoteType.Single, this.index);
+ this.state = State.BeforeAttributeName;
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.baseState = this.state;
+ this.state = State.BeforeEntity;
+ }
+ }
+ stateInAttributeValueDoubleQuotes(c) {
+ this.handleInAttributeValue(c, CharCodes.DoubleQuote);
+ }
+ stateInAttributeValueSingleQuotes(c) {
+ this.handleInAttributeValue(c, CharCodes.SingleQuote);
+ }
+ stateInAttributeValueNoQuotes(c) {
+ if (isWhitespace(c) || c === CharCodes.Gt) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = -1;
+ this.cbs.onattribend(QuoteType.Unquoted, this.index);
+ this.state = State.BeforeAttributeName;
+ this.stateBeforeAttributeName(c);
+ }
+ else if (this.decodeEntities && c === CharCodes.Amp) {
+ this.baseState = this.state;
+ this.state = State.BeforeEntity;
+ }
+ }
+ stateBeforeDeclaration(c) {
+ if (c === CharCodes.OpeningSquareBracket) {
+ this.state = State.CDATASequence;
+ this.sequenceIndex = 0;
+ }
+ else {
+ this.state =
+ c === CharCodes.Dash
+ ? State.BeforeComment
+ : State.InDeclaration;
+ }
+ }
+ stateInDeclaration(c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.ondeclaration(this.sectionStart, this.index);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ stateInProcessingInstruction(c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.onprocessinginstruction(this.sectionStart, this.index);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ stateBeforeComment(c) {
+ if (c === CharCodes.Dash) {
+ this.state = State.InCommentLike;
+ this.currentSequence = Sequences.CommentEnd;
+ // Allow short comments (eg. <!-->)
+ this.sequenceIndex = 2;
+ this.sectionStart = this.index + 1;
+ }
+ else {
+ this.state = State.InDeclaration;
+ }
+ }
+ stateInSpecialComment(c) {
+ if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ }
+ }
+ stateBeforeSpecialS(c) {
+ const lower = c | 0x20;
+ if (lower === Sequences.ScriptEnd[3]) {
+ this.startSpecial(Sequences.ScriptEnd, 4);
+ }
+ else if (lower === Sequences.StyleEnd[3]) {
+ this.startSpecial(Sequences.StyleEnd, 4);
+ }
+ else {
+ this.state = State.InTagName;
+ this.stateInTagName(c); // Consume the token again
+ }
+ }
+ stateBeforeEntity(c) {
+ // Start excess with 1 to include the '&'
+ this.entityExcess = 1;
+ this.entityResult = 0;
+ if (c === CharCodes.Number) {
+ this.state = State.BeforeNumericEntity;
+ }
+ else if (c === CharCodes.Amp) {
+ // We have two `&` characters in a row. Stay in the current state.
+ }
+ else {
+ this.trieIndex = 0;
+ this.trieCurrent = this.entityTrie[0];
+ this.state = State.InNamedEntity;
+ this.stateInNamedEntity(c);
+ }
+ }
+ stateInNamedEntity(c) {
+ this.entityExcess += 1;
+ this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
+ if (this.trieIndex < 0) {
+ this.emitNamedEntity();
+ this.index--;
+ return;
+ }
+ this.trieCurrent = this.entityTrie[this.trieIndex];
+ const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;
+ // If the branch is a value, store it and continue
+ if (masked) {
+ // The mask is the number of bytes of the value, including the current byte.
+ const valueLength = (masked >> 14) - 1;
+ // If we have a legacy entity while parsing strictly, just skip the number of bytes
+ if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {
+ this.trieIndex += valueLength;
+ }
+ else {
+ // Add 1 as we have already incremented the excess
+ const entityStart = this.index - this.entityExcess + 1;
+ if (entityStart > this.sectionStart) {
+ this.emitPartial(this.sectionStart, entityStart);
+ }
+ // If this is a surrogate pair, consume the next two bytes
+ this.entityResult = this.trieIndex;
+ this.trieIndex += valueLength;
+ this.entityExcess = 0;
+ this.sectionStart = this.index + 1;
+ if (valueLength === 0) {
+ this.emitNamedEntity();
+ }
+ }
+ }
+ }
+ emitNamedEntity() {
+ this.state = this.baseState;
+ if (this.entityResult === 0) {
+ return;
+ }
+ const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>
+ 14;
+ switch (valueLength) {
+ case 1: {
+ this.emitCodePoint(this.entityTrie[this.entityResult] &
+ ~BinTrieFlags.VALUE_LENGTH);
+ break;
+ }
+ case 2: {
+ this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
+ break;
+ }
+ case 3: {
+ this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
+ this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
+ }
+ }
+ }
+ stateBeforeNumericEntity(c) {
+ if ((c | 0x20) === CharCodes.LowerX) {
+ this.entityExcess++;
+ this.state = State.InHexEntity;
+ }
+ else {
+ this.state = State.InNumericEntity;
+ this.stateInNumericEntity(c);
+ }
+ }
+ emitNumericEntity(strict) {
+ const entityStart = this.index - this.entityExcess - 1;
+ const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);
+ if (numberStart !== this.index) {
+ // Emit leading data if any
+ if (entityStart > this.sectionStart) {
+ this.emitPartial(this.sectionStart, entityStart);
+ }
+ this.sectionStart = this.index + Number(strict);
+ this.emitCodePoint(replaceCodePoint(this.entityResult));
+ }
+ this.state = this.baseState;
+ }
+ stateInNumericEntity(c) {
+ if (c === CharCodes.Semi) {
+ this.emitNumericEntity(true);
+ }
+ else if (isNumber(c)) {
+ this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);
+ this.entityExcess++;
+ }
+ else {
+ if (this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ }
+ else {
+ this.state = this.baseState;
+ }
+ this.index--;
+ }
+ }
+ stateInHexEntity(c) {
+ if (c === CharCodes.Semi) {
+ this.emitNumericEntity(true);
+ }
+ else if (isNumber(c)) {
+ this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);
+ this.entityExcess++;
+ }
+ else if (isHexDigit(c)) {
+ this.entityResult =
+ this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);
+ this.entityExcess++;
+ }
+ else {
+ if (this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ }
+ else {
+ this.state = this.baseState;
+ }
+ this.index--;
+ }
+ }
+ allowLegacyEntity() {
+ return (!this.xmlMode &&
+ (this.baseState === State.Text ||
+ this.baseState === State.InSpecialTag));
+ }
+ /**
+ * Remove data that has already been consumed from the buffer.
+ */
+ cleanup() {
+ // If we are inside of text or attributes, emit what we already have.
+ if (this.running && this.sectionStart !== this.index) {
+ if (this.state === State.Text ||
+ (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {
+ this.cbs.ontext(this.sectionStart, this.index);
+ this.sectionStart = this.index;
+ }
+ else if (this.state === State.InAttributeValueDq ||
+ this.state === State.InAttributeValueSq ||
+ this.state === State.InAttributeValueNq) {
+ this.cbs.onattribdata(this.sectionStart, this.index);
+ this.sectionStart = this.index;
+ }
+ }
+ }
+ shouldContinue() {
+ return this.index < this.buffer.length + this.offset && this.running;
+ }
+ /**
+ * Iterates through the buffer, calling the function corresponding to the current state.
+ *
+ * States that are more likely to be hit are higher up, as a performance improvement.
+ */
+ parse() {
+ while (this.shouldContinue()) {
+ const c = this.buffer.charCodeAt(this.index - this.offset);
+ switch (this.state) {
+ case State.Text: {
+ this.stateText(c);
+ break;
+ }
+ case State.SpecialStartSequence: {
+ this.stateSpecialStartSequence(c);
+ break;
+ }
+ case State.InSpecialTag: {
+ this.stateInSpecialTag(c);
+ break;
+ }
+ case State.CDATASequence: {
+ this.stateCDATASequence(c);
+ break;
+ }
+ case State.InAttributeValueDq: {
+ this.stateInAttributeValueDoubleQuotes(c);
+ break;
+ }
+ case State.InAttributeName: {
+ this.stateInAttributeName(c);
+ break;
+ }
+ case State.InCommentLike: {
+ this.stateInCommentLike(c);
+ break;
+ }
+ case State.InSpecialComment: {
+ this.stateInSpecialComment(c);
+ break;
+ }
+ case State.BeforeAttributeName: {
+ this.stateBeforeAttributeName(c);
+ break;
+ }
+ case State.InTagName: {
+ this.stateInTagName(c);
+ break;
+ }
+ case State.InClosingTagName: {
+ this.stateInClosingTagName(c);
+ break;
+ }
+ case State.BeforeTagName: {
+ this.stateBeforeTagName(c);
+ break;
+ }
+ case State.AfterAttributeName: {
+ this.stateAfterAttributeName(c);
+ break;
+ }
+ case State.InAttributeValueSq: {
+ this.stateInAttributeValueSingleQuotes(c);
+ break;
+ }
+ case State.BeforeAttributeValue: {
+ this.stateBeforeAttributeValue(c);
+ break;
+ }
+ case State.BeforeClosingTagName: {
+ this.stateBeforeClosingTagName(c);
+ break;
+ }
+ case State.AfterClosingTagName: {
+ this.stateAfterClosingTagName(c);
+ break;
+ }
+ case State.BeforeSpecialS: {
+ this.stateBeforeSpecialS(c);
+ break;
+ }
+ case State.InAttributeValueNq: {
+ this.stateInAttributeValueNoQuotes(c);
+ break;
+ }
+ case State.InSelfClosingTag: {
+ this.stateInSelfClosingTag(c);
+ break;
+ }
+ case State.InDeclaration: {
+ this.stateInDeclaration(c);
+ break;
+ }
+ case State.BeforeDeclaration: {
+ this.stateBeforeDeclaration(c);
+ break;
+ }
+ case State.BeforeComment: {
+ this.stateBeforeComment(c);
+ break;
+ }
+ case State.InProcessingInstruction: {
+ this.stateInProcessingInstruction(c);
+ break;
+ }
+ case State.InNamedEntity: {
+ this.stateInNamedEntity(c);
+ break;
+ }
+ case State.BeforeEntity: {
+ this.stateBeforeEntity(c);
+ break;
+ }
+ case State.InHexEntity: {
+ this.stateInHexEntity(c);
+ break;
+ }
+ case State.InNumericEntity: {
+ this.stateInNumericEntity(c);
+ break;
+ }
+ default: {
+ // `this._state === State.BeforeNumericEntity`
+ this.stateBeforeNumericEntity(c);
+ }
+ }
+ this.index++;
+ }
+ this.cleanup();
+ }
+ finish() {
+ if (this.state === State.InNamedEntity) {
+ this.emitNamedEntity();
+ }
+ // If there is remaining data, emit it in a reasonable way
+ if (this.sectionStart < this.index) {
+ this.handleTrailingData();
+ }
+ this.cbs.onend();
+ }
+ /** Handle any trailing data. */
+ handleTrailingData() {
+ const endIndex = this.buffer.length + this.offset;
+ if (this.state === State.InCommentLike) {
+ if (this.currentSequence === Sequences.CdataEnd) {
+ this.cbs.oncdata(this.sectionStart, endIndex, 0);
+ }
+ else {
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
+ }
+ }
+ else if (this.state === State.InNumericEntity &&
+ this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ // All trailing data will have been consumed
+ }
+ else if (this.state === State.InHexEntity &&
+ this.allowLegacyEntity()) {
+ this.emitNumericEntity(false);
+ // All trailing data will have been consumed
+ }
+ else if (this.state === State.InTagName ||
+ this.state === State.BeforeAttributeName ||
+ this.state === State.BeforeAttributeValue ||
+ this.state === State.AfterAttributeName ||
+ this.state === State.InAttributeName ||
+ this.state === State.InAttributeValueSq ||
+ this.state === State.InAttributeValueDq ||
+ this.state === State.InAttributeValueNq ||
+ this.state === State.InClosingTagName) {
+ /*
+ * If we are currently in an opening or closing tag, us not calling the
+ * respective callback signals that the tag should be ignored.
+ */
+ }
+ else {
+ this.cbs.ontext(this.sectionStart, endIndex);
+ }
+ }
+ emitPartial(start, endIndex) {
+ if (this.baseState !== State.Text &&
+ this.baseState !== State.InSpecialTag) {
+ this.cbs.onattribdata(start, endIndex);
+ }
+ else {
+ this.cbs.ontext(start, endIndex);
+ }
+ }
+ emitCodePoint(cp) {
+ if (this.baseState !== State.Text &&
+ this.baseState !== State.InSpecialTag) {
+ this.cbs.onattribentity(cp);
+ }
+ else {
+ this.cbs.ontextentity(cp);
+ }
+ }
+}
+//# sourceMappingURL=Tokenizer.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js.map
new file mode 100644
index 0000000..2c52baf
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/Tokenizer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Tokenizer.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["Tokenizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts
new file mode 100644
index 0000000..c3090f7
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts
@@ -0,0 +1,17 @@
+/// <reference types="node" />
+/// <reference types="node" />
+import { Handler, ParserOptions } from "./Parser.js";
+import { Writable } from "node:stream";
+/**
+ * WritableStream makes the `Parser` interface available as a NodeJS stream.
+ *
+ * @see Parser
+ */
+export declare class WritableStream extends Writable {
+ private readonly _parser;
+ private readonly _decoder;
+ constructor(cbs: Partial<Handler>, options?: ParserOptions);
+ _write(chunk: string | Buffer, encoding: string, callback: () => void): void;
+ _final(callback: () => void): void;
+}
+//# sourceMappingURL=WritableStream.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts.map
new file mode 100644
index 0000000..bed24b6
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"WritableStream.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["WritableStream.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAU,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEpC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAKjD,MAAM,CACX,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,IAAI,GACrB,IAAI;IAOE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;CAI9C"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js
new file mode 100644
index 0000000..bf6093e
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js
@@ -0,0 +1,32 @@
+import { Parser } from "./Parser.js";
+/*
+ * NOTE: If either of these two imports produces a type error,
+ * please update your @types/node dependency!
+ */
+import { Writable } from "node:stream";
+import { StringDecoder } from "node:string_decoder";
+// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
+function isBuffer(_chunk, encoding) {
+ return encoding === "buffer";
+}
+/**
+ * WritableStream makes the `Parser` interface available as a NodeJS stream.
+ *
+ * @see Parser
+ */
+export class WritableStream extends Writable {
+ constructor(cbs, options) {
+ super({ decodeStrings: false });
+ this._decoder = new StringDecoder();
+ this._parser = new Parser(cbs, options);
+ }
+ _write(chunk, encoding, callback) {
+ this._parser.write(isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk);
+ callback();
+ }
+ _final(callback) {
+ this._parser.end(this._decoder.end());
+ callback();
+ }
+}
+//# sourceMappingURL=WritableStream.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js.map
new file mode 100644
index 0000000..fc7290a
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/WritableStream.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"WritableStream.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["WritableStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAC7D;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,2GAA2G;AAC3G,SAAS,QAAQ,CAAC,MAAuB,EAAE,QAAgB;IACvD,OAAO,QAAQ,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAIxC,YAAY,GAAqB,EAAE,OAAuB;QACtD,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAHnB,aAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAI5C,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEQ,MAAM,CACX,KAAsB,EACtB,QAAgB,EAChB,QAAoB;QAEpB,IAAI,CAAC,OAAO,CAAC,KAAK,CACd,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACjE,CAAC;QACF,QAAQ,EAAE,CAAC;IACf,CAAC;IAEQ,MAAM,CAAC,QAAoB;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,QAAQ,EAAE,CAAC;IACf,CAAC;CACJ"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts
new file mode 100644
index 0000000..9f08885
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts
@@ -0,0 +1,44 @@
+import { Parser, ParserOptions } from "./Parser.js";
+export { Parser, type ParserOptions } from "./Parser.js";
+import { DomHandlerOptions, ChildNode, Element, Document } from "domhandler";
+export { DomHandler, DomHandler as DefaultHandler, type DomHandlerOptions, } from "domhandler";
+export type Options = ParserOptions & DomHandlerOptions;
+/**
+ * Parses the data, returns the resulting document.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ */
+export declare function parseDocument(data: string, options?: Options): Document;
+/**
+ * Parses data, returns an array of the root nodes.
+ *
+ * Note that the root nodes still have a `Document` node as their parent.
+ * Use `parseDocument` to get the `Document` node instead.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ * @deprecated Use `parseDocument` instead.
+ */
+export declare function parseDOM(data: string, options?: Options): ChildNode[];
+/**
+ * Creates a parser instance, with an attached DOM handler.
+ *
+ * @param callback A callback that will be called once parsing has been completed.
+ * @param options Optional options for the parser and DOM builder.
+ * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
+ */
+export declare function createDomStream(callback: (error: Error | null, dom: ChildNode[]) => void, options?: Options, elementCallback?: (element: Element) => void): Parser;
+export { default as Tokenizer, type Callbacks as TokenizerCallbacks, } from "./Tokenizer.js";
+export * as ElementType from "domelementtype";
+import { Feed } from "domutils";
+export { getFeed } from "domutils";
+/**
+ * Parse a feed.
+ *
+ * @param feed The feed that should be parsed, as a string.
+ * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
+ */
+export declare function parseFeed(feed: string, options?: Options): Feed | null;
+export * as DomUtils from "domutils";
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts.map
new file mode 100644
index 0000000..4b15dd9
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAEH,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,QAAQ,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,UAAU,EAEV,UAAU,IAAI,cAAc,EAC5B,KAAK,iBAAiB,GACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAIxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAIvE;AACD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAErE;AACD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,IAAI,EACzD,OAAO,CAAC,EAAE,OAAO,EACjB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAC7C,MAAM,CAGR;AAED,OAAO,EACH,OAAO,IAAI,SAAS,EACpB,KAAK,SAAS,IAAI,kBAAkB,GACvC,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAW,IAAI,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAInC;;;;;GAKG;AACH,wBAAgB,SAAS,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAiC,GAC3C,IAAI,GAAG,IAAI,CAEb;AAED,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js
new file mode 100644
index 0000000..949c914
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js
@@ -0,0 +1,62 @@
+import { Parser } from "./Parser.js";
+export { Parser } from "./Parser.js";
+import { DomHandler, } from "domhandler";
+export { DomHandler,
+// Old name for DomHandler
+DomHandler as DefaultHandler, } from "domhandler";
+// Helper methods
+/**
+ * Parses the data, returns the resulting document.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ */
+export function parseDocument(data, options) {
+ const handler = new DomHandler(undefined, options);
+ new Parser(handler, options).end(data);
+ return handler.root;
+}
+/**
+ * Parses data, returns an array of the root nodes.
+ *
+ * Note that the root nodes still have a `Document` node as their parent.
+ * Use `parseDocument` to get the `Document` node instead.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ * @deprecated Use `parseDocument` instead.
+ */
+export function parseDOM(data, options) {
+ return parseDocument(data, options).children;
+}
+/**
+ * Creates a parser instance, with an attached DOM handler.
+ *
+ * @param callback A callback that will be called once parsing has been completed.
+ * @param options Optional options for the parser and DOM builder.
+ * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
+ */
+export function createDomStream(callback, options, elementCallback) {
+ const handler = new DomHandler(callback, options, elementCallback);
+ return new Parser(handler, options);
+}
+export { default as Tokenizer, } from "./Tokenizer.js";
+/*
+ * All of the following exports exist for backwards-compatibility.
+ * They should probably be removed eventually.
+ */
+export * as ElementType from "domelementtype";
+import { getFeed } from "domutils";
+export { getFeed } from "domutils";
+const parseFeedDefaultOptions = { xmlMode: true };
+/**
+ * Parse a feed.
+ *
+ * @param feed The feed that should be parsed, as a string.
+ * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
+ */
+export function parseFeed(feed, options = parseFeedDefaultOptions) {
+ return getFeed(parseDOM(feed, options));
+}
+export * as DomUtils from "domutils";
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js.map
new file mode 100644
index 0000000..3aa7317
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AAEzD,OAAO,EACH,UAAU,GAKb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,UAAU;AACV,0BAA0B;AAC1B,UAAU,IAAI,cAAc,GAE/B,MAAM,YAAY,CAAC;AAIpB,iBAAiB;AAEjB;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAiB;IACzD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC;AACD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAiB;IACpD,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;AACD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,QAAyD,EACzD,OAAiB,EACjB,eAA4C;IAE5C,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACnE,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,OAAO,EACH,OAAO,IAAI,SAAS,GAEvB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAQ,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,uBAAuB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACrB,IAAY,EACZ,UAAmB,uBAAuB;IAE1C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/esm/package.json b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/package.json
new file mode 100644
index 0000000..089153b
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/esm/package.json
@@ -0,0 +1 @@
+{"type":"module"}
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts b/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts
new file mode 100644
index 0000000..9f08885
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts
@@ -0,0 +1,44 @@
+import { Parser, ParserOptions } from "./Parser.js";
+export { Parser, type ParserOptions } from "./Parser.js";
+import { DomHandlerOptions, ChildNode, Element, Document } from "domhandler";
+export { DomHandler, DomHandler as DefaultHandler, type DomHandlerOptions, } from "domhandler";
+export type Options = ParserOptions & DomHandlerOptions;
+/**
+ * Parses the data, returns the resulting document.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ */
+export declare function parseDocument(data: string, options?: Options): Document;
+/**
+ * Parses data, returns an array of the root nodes.
+ *
+ * Note that the root nodes still have a `Document` node as their parent.
+ * Use `parseDocument` to get the `Document` node instead.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ * @deprecated Use `parseDocument` instead.
+ */
+export declare function parseDOM(data: string, options?: Options): ChildNode[];
+/**
+ * Creates a parser instance, with an attached DOM handler.
+ *
+ * @param callback A callback that will be called once parsing has been completed.
+ * @param options Optional options for the parser and DOM builder.
+ * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
+ */
+export declare function createDomStream(callback: (error: Error | null, dom: ChildNode[]) => void, options?: Options, elementCallback?: (element: Element) => void): Parser;
+export { default as Tokenizer, type Callbacks as TokenizerCallbacks, } from "./Tokenizer.js";
+export * as ElementType from "domelementtype";
+import { Feed } from "domutils";
+export { getFeed } from "domutils";
+/**
+ * Parse a feed.
+ *
+ * @param feed The feed that should be parsed, as a string.
+ * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
+ */
+export declare function parseFeed(feed: string, options?: Options): Feed | null;
+export * as DomUtils from "domutils";
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts.map b/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts.map
new file mode 100644
index 0000000..4b15dd9
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAEH,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,QAAQ,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,UAAU,EAEV,UAAU,IAAI,cAAc,EAC5B,KAAK,iBAAiB,GACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAIxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAIvE;AACD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAErE;AACD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,IAAI,EACzD,OAAO,CAAC,EAAE,OAAO,EACjB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAC7C,MAAM,CAGR;AAED,OAAO,EACH,OAAO,IAAI,SAAS,EACpB,KAAK,SAAS,IAAI,kBAAkB,GACvC,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAW,IAAI,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAInC;;;;;GAKG;AACH,wBAAgB,SAAS,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAiC,GAC3C,IAAI,GAAG,IAAI,CAEb;AAED,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/index.js b/includes/external/addressbook/node_modules/htmlparser2/lib/index.js
new file mode 100644
index 0000000..5ae8205
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/index.js
@@ -0,0 +1,100 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DomUtils = exports.parseFeed = exports.getFeed = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0;
+var Parser_js_1 = require("./Parser.js");
+var Parser_js_2 = require("./Parser.js");
+Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_js_2.Parser; } });
+var domhandler_1 = require("domhandler");
+var domhandler_2 = require("domhandler");
+Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });
+// Old name for DomHandler
+Object.defineProperty(exports, "DefaultHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });
+// Helper methods
+/**
+ * Parses the data, returns the resulting document.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ */
+function parseDocument(data, options) {
+ var handler = new domhandler_1.DomHandler(undefined, options);
+ new Parser_js_1.Parser(handler, options).end(data);
+ return handler.root;
+}
+exports.parseDocument = parseDocument;
+/**
+ * Parses data, returns an array of the root nodes.
+ *
+ * Note that the root nodes still have a `Document` node as their parent.
+ * Use `parseDocument` to get the `Document` node instead.
+ *
+ * @param data The data that should be parsed.
+ * @param options Optional options for the parser and DOM builder.
+ * @deprecated Use `parseDocument` instead.
+ */
+function parseDOM(data, options) {
+ return parseDocument(data, options).children;
+}
+exports.parseDOM = parseDOM;
+/**
+ * Creates a parser instance, with an attached DOM handler.
+ *
+ * @param callback A callback that will be called once parsing has been completed.
+ * @param options Optional options for the parser and DOM builder.
+ * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
+ */
+function createDomStream(callback, options, elementCallback) {
+ var handler = new domhandler_1.DomHandler(callback, options, elementCallback);
+ return new Parser_js_1.Parser(handler, options);
+}
+exports.createDomStream = createDomStream;
+var Tokenizer_js_1 = require("./Tokenizer.js");
+Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } });
+/*
+ * All of the following exports exist for backwards-compatibility.
+ * They should probably be removed eventually.
+ */
+exports.ElementType = __importStar(require("domelementtype"));
+var domutils_1 = require("domutils");
+var domutils_2 = require("domutils");
+Object.defineProperty(exports, "getFeed", { enumerable: true, get: function () { return domutils_2.getFeed; } });
+var parseFeedDefaultOptions = { xmlMode: true };
+/**
+ * Parse a feed.
+ *
+ * @param feed The feed that should be parsed, as a string.
+ * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
+ */
+function parseFeed(feed, options) {
+ if (options === void 0) { options = parseFeedDefaultOptions; }
+ return (0, domutils_1.getFeed)(parseDOM(feed, options));
+}
+exports.parseFeed = parseFeed;
+exports.DomUtils = __importStar(require("domutils"));
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/lib/index.js.map b/includes/external/addressbook/node_modules/htmlparser2/lib/index.js.map
new file mode 100644
index 0000000..1eb465e
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoD;AACpD,yCAAyD;AAAhD,mGAAA,MAAM,OAAA;AAEf,yCAMoB;AAEpB,yCAKoB;AAJhB,wGAAA,UAAU,OAAA;AACV,0BAA0B;AAC1B,4GAAA,UAAU,OAAkB;AAMhC,iBAAiB;AAEjB;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,OAAiB;IACzD,IAAM,OAAO,GAAG,IAAI,uBAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,kBAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC;AAJD,sCAIC;AACD;;;;;;;;;GASG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAiB;IACpD,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;AAFD,4BAEC;AACD;;;;;;GAMG;AACH,SAAgB,eAAe,CAC3B,QAAyD,EACzD,OAAiB,EACjB,eAA4C;IAE5C,IAAM,OAAO,GAAG,IAAI,uBAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACnE,OAAO,IAAI,kBAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAPD,0CAOC;AAED,+CAGwB;AAFpB,0HAAA,OAAO,OAAa;AAIxB;;;GAGG;AACH,8DAA8C;AAE9C,qCAAyC;AAEzC,qCAAmC;AAA1B,mGAAA,OAAO,OAAA;AAEhB,IAAM,uBAAuB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAElD;;;;;GAKG;AACH,SAAgB,SAAS,CACrB,IAAY,EACZ,OAA0C;IAA1C,wBAAA,EAAA,iCAA0C;IAE1C,OAAO,IAAA,kBAAO,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AALD,8BAKC;AAED,qDAAqC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/htmlparser2/package.json b/includes/external/addressbook/node_modules/htmlparser2/package.json
new file mode 100644
index 0000000..10c686c
--- /dev/null
+++ b/includes/external/addressbook/node_modules/htmlparser2/package.json
@@ -0,0 +1,97 @@
+{
+ "name": "htmlparser2",
+ "description": "Fast & forgiving HTML/XML parser",
+ "version": "8.0.2",
+ "author": "Felix Boehm <me@feedic.com>",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "sideEffects": false,
+ "keywords": [
+ "html",
+ "parser",
+ "streams",
+ "xml",
+ "dom",
+ "rss",
+ "feed",
+ "atom"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/fb55/htmlparser2.git"
+ },
+ "directories": {
+ "lib": "lib/"
+ },
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "module": "lib/esm/index.js",
+ "exports": {
+ ".": {
+ "require": "./lib/index.js",
+ "import": "./lib/esm/index.js"
+ },
+ "./lib/WritableStream": {
+ "require": "./lib/WritableStream.js",
+ "import": "./lib/esm/WritableStream.js"
+ }
+ },
+ "files": [
+ "lib/**/*"
+ ],
+ "scripts": {
+ "test": "npm run test:jest && npm run lint",
+ "test:jest": "jest",
+ "lint": "npm run lint:es && npm run lint:prettier",
+ "lint:es": "eslint src",
+ "lint:prettier": "npm run format:prettier:raw -- --check",
+ "format": "npm run format:es && npm run format:prettier",
+ "format:es": "npm run lint:es -- --fix",
+ "format:prettier": "npm run format:prettier:raw -- --write",
+ "format:prettier:raw": "prettier '**/*.{ts,md,json,yml}'",
+ "build": "npm run build:cjs && npm run build:esm",
+ "build:cjs": "tsc --sourceRoot https://raw.githubusercontent.com/fb55/htmlparser2/$(git rev-parse HEAD)/src/",
+ "build:esm": "npm run build:cjs -- --module esnext --target es2019 --outDir lib/esm && echo '{\"type\":\"module\"}' > lib/esm/package.json",
+ "prepare": "npm run build"
+ },
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ },
+ "devDependencies": {
+ "@types/jest": "^29.5.0",
+ "@types/node": "^18.15.5",
+ "@typescript-eslint/eslint-plugin": "^5.56.0",
+ "@typescript-eslint/parser": "^5.56.0",
+ "eslint": "^8.36.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-plugin-n": "^15.6.1",
+ "eslint-plugin-unicorn": "^46.0.0",
+ "jest": "^29.5.0",
+ "prettier": "^2.8.6",
+ "ts-jest": "^29.0.5",
+ "typescript": "^4.9.5"
+ },
+ "jest": {
+ "preset": "ts-jest",
+ "testEnvironment": "node",
+ "coverageProvider": "v8",
+ "moduleNameMapper": {
+ "^(.*)\\.js$": [
+ "$1",
+ "$1.js"
+ ]
+ }
+ },
+ "prettier": {
+ "tabWidth": 4
+ }
+}