summaryrefslogtreecommitdiff
diff options
-rw-r--r--.eslintrc.json76
-rw-r--r--.github/FUNDING.yml1
-rw-r--r--.github/workflows/codeql-analysis.yml6
-rw-r--r--.github/workflows/dependabot-automerge.yml2
-rw-r--r--.github/workflows/nodejs-test.yml40
-rw-r--r--.github/workflows/publish.yml52
-rw-r--r--.gitignore3
-rw-r--r--.prettierignore3
-rw-r--r--README.md142
-rw-r--r--biome.json96
-rw-r--r--debian/changelog19
-rw-r--r--debian/control25
-rw-r--r--debian/nodejs/extlinks2
-rw-r--r--debian/patches/disable-isolated-declarations.patch35
-rw-r--r--debian/patches/fix-for-jest-29.patch18
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/workaround-bad-jest-config.patch16
-rwxr-xr-xdebian/rules5
-rw-r--r--debian/tests/pkg-js/test2
-rw-r--r--eslint.config.mjs57
-rw-r--r--package-lock.json9706
-rw-r--r--package.json117
-rw-r--r--src/FeedHandler.spec.ts32
-rw-r--r--src/Parser.events.spec.ts (renamed from src/__tests__/events.ts)121
-rw-r--r--src/Parser.spec.ts69
-rw-r--r--src/Parser.ts383
-rw-r--r--src/Tokenizer.spec.ts223
-rw-r--r--src/Tokenizer.ts613
-rw-r--r--src/WebWritableStream.spec.ts143
-rw-r--r--src/WebWritableStream.ts47
-rw-r--r--src/WritableStream.spec.ts31
-rw-r--r--src/WritableStream.ts7
-rw-r--r--src/__fixtures__/testHelper.ts (renamed from src/__fixtures__/test-helper.ts)12
-rw-r--r--src/__snapshots__/FeedHandler.spec.ts.snap8
-rw-r--r--src/__snapshots__/Parser.events.spec.ts.snap (renamed from src/__tests__/__snapshots__/events.ts.snap)1858
-rw-r--r--src/__snapshots__/Tokenizer.spec.ts.snap1097
-rw-r--r--src/__snapshots__/WebWritableStream.spec.ts.snap5809
-rw-r--r--src/__snapshots__/WritableStream.spec.ts.snap110
-rw-r--r--src/__snapshots__/index.spec.ts.snap71
-rw-r--r--src/index.spec.ts46
-rw-r--r--src/index.ts71
-rw-r--r--tsconfig.eslint.json4
-rw-r--r--tsconfig.json11
43 files changed, 12739 insertions, 8453 deletions
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index f61a6ff..0000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "extends": [
- "eslint:recommended",
- "prettier",
- "plugin:n/recommended",
- "plugin:unicorn/recommended"
- ],
- "env": {
- "node": true,
- "es6": true
- },
- "rules": {
- "eqeqeq": [2, "smart"],
- "no-caller": 2,
- "dot-notation": 2,
- "no-var": 2,
- "prefer-const": 2,
- "prefer-arrow-callback": [2, { "allowNamedFunctions": true }],
- "arrow-body-style": [2, "as-needed"],
- "object-shorthand": 2,
- "prefer-template": 2,
- "one-var": [2, "never"],
- "prefer-destructuring": [2, { "object": true }],
- "capitalized-comments": 2,
- "multiline-comment-style": [2, "starred-block"],
- "spaced-comment": 2,
- "yoda": [2, "never"],
- "curly": [2, "multi-line"],
- "no-else-return": 2,
-
- "unicorn/prefer-module": 0,
- "unicorn/filename-case": 0,
- "unicorn/no-null": 0,
- "unicorn/prefer-code-point": 0,
- "unicorn/prefer-string-slice": 0,
- "unicorn/prefer-add-event-listener": 0
- },
- "overrides": [
- {
- "files": "*.ts",
- "extends": [
- "plugin:@typescript-eslint/eslint-recommended",
- "plugin:@typescript-eslint/recommended",
- "prettier"
- ],
- "parserOptions": {
- "sourceType": "module",
- "project": "./tsconfig.eslint.json"
- },
- "rules": {
- "@typescript-eslint/prefer-for-of": 0,
- "@typescript-eslint/member-ordering": 0,
- "@typescript-eslint/explicit-function-return-type": 0,
- "@typescript-eslint/no-unused-vars": 0,
- "@typescript-eslint/no-use-before-define": [
- 2,
- { "functions": false }
- ],
- "@typescript-eslint/consistent-type-definitions": [
- 2,
- "interface"
- ],
- "@typescript-eslint/prefer-function-type": 2,
- "@typescript-eslint/no-unnecessary-type-arguments": 2,
- "@typescript-eslint/prefer-string-starts-ends-with": 2,
- "@typescript-eslint/prefer-readonly": 2,
- "@typescript-eslint/prefer-includes": 2,
- "@typescript-eslint/no-unnecessary-condition": 2,
- "@typescript-eslint/switch-exhaustiveness-check": 2,
- "@typescript-eslint/prefer-nullish-coalescing": 2,
-
- "n/no-unsupported-features/es-syntax": 0
- }
- }
- ]
-}
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index b440c74..39dffea 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1 @@
github: [fb55]
-tidelift: npm/htmlparser2
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 8764eff..6e808a6 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -20,12 +20,12 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v4
with:
languages: "javascript"
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v4
diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml
index 2fc1003..64e287f 100644
--- a/.github/workflows/dependabot-automerge.yml
+++ b/.github/workflows/dependabot-automerge.yml
@@ -13,7 +13,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
- uses: dependabot/fetch-metadata@v1.4.0
+ uses: dependabot/fetch-metadata@v2.5.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
diff --git a/.github/workflows/nodejs-test.yml b/.github/workflows/nodejs-test.yml
index 066f456..0a38f01 100644
--- a/.github/workflows/nodejs-test.yml
+++ b/.github/workflows/nodejs-test.yml
@@ -9,17 +9,16 @@ on:
env:
CI: true
FORCE_COLOR: 2
- NODE_COV: lts/* # The Node.js version to run coveralls on
permissions:
- contents: read # to fetch code (actions/checkout)
+ contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-node@v3
+ - uses: actions/checkout@v6
+ - uses: actions/setup-node@v6
with:
node-version: lts/*
cache: npm
@@ -27,10 +26,6 @@ jobs:
- run: npm run lint
test:
- permissions:
- contents: read # to fetch code (actions/checkout)
- checks: write # to create new checks (coverallsapp/github-action)
-
name: Node ${{ matrix.node }}
runs-on: ubuntu-latest
@@ -38,32 +33,19 @@ jobs:
fail-fast: false
matrix:
node:
- - 14
- - 16
- - 18
- - lts/*
+ - 20
+ - 22
+ - 24
+ - "lts/*"
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node }}
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npm run build --if-present
-
- - name: Run Jest
- run: npm run test:jest
- if: matrix.node != env.NODE_COV
-
- - name: Run Jest with coverage
- run: npm run test:jest -- --coverage
- if: matrix.node == env.NODE_COV
-
- - name: Run Coveralls
- uses: coverallsapp/github-action@v2.1.2
- if: matrix.node == env.NODE_COV
- continue-on-error: true
- with:
- github-token: "${{ secrets.GITHUB_TOKEN }}"
+ - name: Run tests
+ run: npm run test:vi
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..ff5f688
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,52 @@
+name: Publish
+on:
+ push:
+ tags:
+ - "v*"
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+
+ permissions:
+ contents: read
+ id-token: write
+
+ steps:
+ - uses: actions/checkout@v6
+
+ - uses: actions/setup-node@v6
+ with:
+ node-version: lts/*
+ registry-url: https://registry.npmjs.org
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Create jsr.json based on package.json
+ run: |
+ node --input-type=module -e '
+ import { readFileSync, writeFileSync } from "fs";
+ const p = JSON.parse(readFileSync("./package.json", "utf8"));
+ const jsrJson = {
+ name: `@cheerio/${p.name}`,
+ version: p.version,
+ exports: {
+ ".": "./src/index.ts",
+ "./WritableStream": "./src/WritableStream.ts",
+ },
+ imports: {
+ "domelementtype": `jsr:@cheerio/domelementtype@${p.dependencies.domelementtype}`,
+ "domhandler": `jsr:@cheerio/domhandler@${p.dependencies.domhandler}`,
+ "domutils": `jsr:@cheerio/domutils@${p.dependencies.domutils}`,
+ "entities": `jsr:@cheerio/entities@${p.dependencies.entities}`,
+ },
+ };
+ writeFileSync("./jsr.json", JSON.stringify(jsrJson, null, 2));
+ '
+
+ - name: Publish package to JSR
+ run: npx jsr publish
+
+ - name: Publish package to npm
+ run: npm publish --provenance --access public
diff --git a/.gitignore b/.gitignore
index f417452..f50fd0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules/
coverage/
-lib/
+dist/
+jsr.json
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index f417452..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-coverage/
-lib/
diff --git a/README.md b/README.md
index 9166d09..47b22ba 100644
--- a/README.md
+++ b/README.md
@@ -69,7 +69,7 @@ const parser = new htmlparser2.Parser({
},
});
parser.write(
- "Xyz <script type='text/javascript'>const foo = '<<bar>>';</script>"
+ "Xyz <script type='text/javascript'>const foo = '<<bar>>';</script>",
);
parser.end();
```
@@ -83,8 +83,37 @@ JS! Hooray!
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).
+### Parser events
+
+All callbacks are optional. The handler object you pass to `Parser` may implement any subset of these:
+
+| Event | Description |
+| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `onopentag(name, attribs, isImplied)` | Opening tag. `attribs` is an object mapping attribute names to values. `isImplied` is `true` when the tag was opened implicitly (HTML mode only). |
+| `onopentagname(name)` | Emitted for the tag name as soon as it is available (before attributes are parsed). |
+| `onattribute(name, value, quote)` | Attribute. `quote` is `"` / `'` / `null` (unquoted) / `undefined` (no value, e.g. `disabled`). |
+| `onclosetag(name, isImplied)` | Closing tag. `isImplied` is `true` when the tag was closed implicitly (HTML mode only). |
+| `ontext(data)` | Text content. May fire multiple times for a single text node. |
+| `oncomment(data)` | Comment (content between `<!--` and `-->`). |
+| `oncdatastart()` | Opening of a CDATA section (`<![CDATA[`). |
+| `oncdataend()` | End of a CDATA section (`]]>`). |
+| `onprocessinginstruction(name, data)` | Processing instruction (e.g. `<?xml ...?>`). |
+| `oncommentend()` | Fires after a comment has ended. |
+| `onparserinit(parser)` | Fires when the parser is initialized or reset. |
+| `onreset()` | Fires when `parser.reset()` is called. |
+| `onend()` | Fires when parsing is complete. |
+| `onerror(error)` | Fires on error. |
+
+### Parser options
+
+| Option | Type | Default | Description |
+| ------------------------ | --------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `xmlMode` | `boolean` | `false` | Treat the document as XML. This affects entity decoding, self-closing tags, CDATA handling, and more. Set this to `true` for XML, RSS, Atom and RDF feeds. |
+| `decodeEntities` | `boolean` | `true` | Decode HTML entities (e.g. `&amp;` -> `&`). |
+| `lowerCaseTags` | `boolean` | `!xmlMode` | Lowercase tag names. |
+| `lowerCaseAttributeNames`| `boolean` | `!xmlMode` | Lowercase attribute names. |
+| `recognizeSelfClosing` | `boolean` | `xmlMode` | Recognize self-closing tags (e.g. `<br/>`). Always enabled in `xmlMode`. |
+| `recognizeCDATA` | `boolean` | `xmlMode` | Recognize CDATA sections as text. Always enabled in `xmlMode`. |
### Usage with streams
@@ -92,7 +121,7 @@ While the `Parser` interface closely resembles Node.js streams, it's not a 100%
Use the `WritableStream` interface to process a streaming input:
```js
-import { WritableStream } from "htmlparser2/lib/WritableStream";
+import { WritableStream } from "htmlparser2/WritableStream";
const parserStream = new WritableStream({
ontext(text) {
@@ -106,25 +135,100 @@ 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.
+The `parseDocument` helper parses a string and returns a DOM tree (a [`Document`](https://github.com/fb55/domhandler) node).
```js
import * as htmlparser2 from "htmlparser2";
-const dom = htmlparser2.parseDocument(htmlString);
+const dom = htmlparser2.parseDocument(
+ `<ul id="fruits">
+ <li class="apple">Apple</li>
+ <li class="orange">Orange</li>
+ </ul>`,
+);
+```
+
+`parseDocument` accepts an optional second argument with both parser and [DOM handler options](https://github.com/fb55/domhandler):
+
+```js
+const dom = htmlparser2.parseDocument(data, {
+ // Parser options
+ xmlMode: true,
+
+ // domhandler options
+ withStartIndices: true, // Add `startIndex` to each node
+ withEndIndices: true, // Add `endIndex` to each node
+});
+```
+
+### Searching the DOM
+
+The [`DomUtils`](https://github.com/fb55/domutils) module (re-exported on the main `htmlparser2` export) provides helpers for finding nodes:
+
+```js
+import * as htmlparser2 from "htmlparser2";
+
+const dom = htmlparser2.parseDocument(`<div><p id="greeting">Hello</p></div>`);
+
+// Find elements by ID, tag name, or class
+const greeting = htmlparser2.DomUtils.getElementById("greeting", dom);
+const paragraphs = htmlparser2.DomUtils.getElementsByTagName("p", dom);
+
+// Find elements with custom test functions
+const all = htmlparser2.DomUtils.findAll(
+ (el) => el.attribs?.class === "active",
+ dom,
+);
+
+// Get text content
+htmlparser2.DomUtils.textContent(greeting); // "Hello"
+```
+
+For CSS selector queries, use [`css-select`](https://github.com/fb55/css-select):
+
+```js
+import { selectAll, selectOne } from "css-select";
+
+const results = selectAll("ul#fruits > li", dom);
+const first = selectOne("li.apple", dom);
+```
+
+Or, if you'd prefer a jQuery-like API, use [`cheerio`](https://github.com/cheeriojs/cheerio).
+
+### Modifying and serializing the DOM
+
+Use `DomUtils` to modify the tree, and [`dom-serializer`](https://github.com/cheeriojs/dom-serializer) (also available as `DomUtils.getOuterHTML`) to serialize it back to HTML:
+
+```js
+import * as htmlparser2 from "htmlparser2";
+
+const dom = htmlparser2.parseDocument(
+ `<ul><li>Apple</li><li>Orange</li></ul>`,
+);
+
+// Remove the first <li>
+const items = htmlparser2.DomUtils.getElementsByTagName("li", dom);
+htmlparser2.DomUtils.removeElement(items[0]);
+
+// Serialize back to HTML
+const html = htmlparser2.DomUtils.getOuterHTML(dom);
+// "<ul><li>Orange</li></ul>"
```
-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.
+Other manipulation helpers include `appendChild`, `prependChild`, `append`, `prepend`, and `replaceElement` -- see the [`domutils` docs](https://github.com/fb55/domutils) for the full API.
-## Parsing Feeds
+## Parsing feeds
`htmlparser2` makes it easy to parse RSS, RDF and Atom feeds, by providing a `parseFeed` method:
```javascript
-const feed = htmlparser2.parseFeed(content, options);
+const feed = htmlparser2.parseFeed(content);
```
+This returns an object with `type`, `title`, `link`, `description`, `updated`, `author`, and `items` (an array of feed entries), or `null` if the document isn't a recognized feed format.
+
+The `xmlMode` option is enabled by default for `parseFeed`. If you pass custom options, make sure to include `xmlMode: true`.
+
## 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.
@@ -147,25 +251,7 @@ 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/biome.json b/biome.json
new file mode 100644
index 0000000..dfd824d
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,96 @@
+{
+ "$schema": "https://biomejs.dev/schemas/2.4.7/schema.json",
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
+ },
+ "files": {
+ "ignoreUnknown": true,
+ "includes": ["**/*.{ts,md,json,yml}", "!**/.*"]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space",
+ "indentWidth": 4
+ },
+ "javascript": {
+ "formatter": {}
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true,
+ "suspicious": {
+ "noConstEnum": "off",
+ "noConstantBinaryExpressions": "error",
+ "useAwait": "error"
+ },
+ "complexity": {
+ "noUselessStringConcat": "error",
+ "noUselessUndefined": "error",
+ "useSimplifiedLogicExpression": "error",
+ "useWhile": "error"
+ },
+ "performance": {
+ "useTopLevelRegex": "error"
+ },
+ "style": {
+ "noInferrableTypes": "error",
+ "noNegationElse": "error",
+ "noUnusedTemplateLiteral": "error",
+ "noUselessElse": "error",
+ "noYodaExpression": "error",
+ "useAsConstAssertion": "error",
+ "useCollapsedElseIf": "error",
+ "useCollapsedIf": "error",
+ "useConsistentArrayType": "error",
+ "useConsistentArrowReturn": "error",
+ "useConsistentMemberAccessibility": "error",
+ "useConsistentObjectDefinitions": "error",
+ "useConsistentTypeDefinitions": "error",
+ "useDefaultParameterLast": "error",
+ "useExplicitLengthCheck": "error",
+ "useNumberNamespace": "error",
+ "useNumericSeparators": "error",
+ "useObjectSpread": "error",
+ "useShorthandAssign": "error",
+ "useUnifiedTypeSignatures": "error"
+ }
+ }
+ },
+ "assist": {
+ "enabled": true,
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
+ },
+ "overrides": [
+ {
+ "includes": ["**/*.{test,spec}.ts", "test/**/*.ts"],
+ "javascript": {
+ "globals": [
+ "jest",
+ "describe",
+ "it",
+ "beforeEach",
+ "afterEach",
+ "expect",
+ "vi"
+ ]
+ }
+ },
+ {
+ "includes": ["**/*.ts", "**/*.cts", "**/*.mts", "**/*.tsx"],
+ "linter": {
+ "rules": {
+ "complexity": {
+ "useLiteralKeys": "off"
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/debian/changelog b/debian/changelog
index 18b25d2..6b01a07 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+node-htmlparser2 (12.0.0-1) experimental; urgency=medium
+
+ * Team upload
+ * New upstream version 12.0.0
+ * Declare compliance with policy 4.7.4
+ * Drop obsolete jest patches
+ * Patch: drop isolatedDeclarations compiler option (TS 5.5+, not in Debian)
+ * Bump dependencies to new majors:
+ - node-domelementtype >= 3
+ - node-domhandler >= 6
+ - node-domutils >= 4
+ - node-entities >= 8
+ * Add Breaks against pre-bump node-cheerio / node-sanitize-html /
+ node-eslint-plugin-html
+ * Replace jest test with a trivial Node smoke test
+ * Simplify debian/rules to a single tsc invocation
+
+ -- Xavier Guimard <yadd@debian.org> Sun, 03 May 2026 20:59:43 +0200
+
node-htmlparser2 (9.0.0-2) unstable; urgency=medium
* Team upload.
diff --git a/debian/control b/debian/control
index eecf99e..b0c0586 100644
--- a/debian/control
+++ b/debian/control
@@ -5,16 +5,13 @@ Section: javascript
Testsuite: autopkgtest-pkg-nodejs
Build-Depends: debhelper-compat (= 13)
, dh-sequence-nodejs
- , jest (>= 29) <!nocheck>
- , node-domelementtype (>= 2.3.0~)
- , node-domhandler (>= 5.0.2~)
- , node-domutils (>= 3.1.0~)
- , node-entities (>= 4.5.0~)
- , node-istanbul
+ , node-domelementtype (>= 3.0.0~)
+ , node-domhandler (>= 6.0.0~)
+ , node-domutils (>= 4.0.0~)
+ , node-entities (>= 8.0.0~)
, node-typescript
, node-types-node
- , ts-jest (>= 27) <!nocheck>
-Standards-Version: 4.7.3
+Standards-Version: 4.7.4
Vcs-Browser: https://salsa.debian.org/js-team/node-htmlparser2
Vcs-Git: https://salsa.debian.org/js-team/node-htmlparser2.git
Homepage: https://github.com/fb55/htmlparser2#readme
@@ -22,11 +19,13 @@ Homepage: https://github.com/fb55/htmlparser2#readme
Package: node-htmlparser2
Architecture: all
Depends: ${misc:Depends}
- , node-domelementtype (>= 2.3.0~~)
- , node-domhandler (>= 5.0.2~)
- , node-domutils (>= 3.1.0~)
- , node-entities (>= 4.5.0~)
-Breaks: node-cheerio (<< 1.0.0~rc~5+~cs6.1.2~)
+ , node-domelementtype (>= 3.0.0~)
+ , node-domhandler (>= 6.0.0~)
+ , node-domutils (>= 4.0.0~)
+ , node-entities (>= 8.0.0~)
+Breaks: node-cheerio (<< 1.1~)
+ , node-sanitize-html (<< 2.15~)
+ , node-eslint-plugin-html (<< 6.3~)
Description: Fast & forgiving HTML/XML/RSS parser
A forgiving HTML/XML/RSS parser written in JS for NodeJS. The
parser can handle streams (chunked data) and supports custom
diff --git a/debian/nodejs/extlinks b/debian/nodejs/extlinks
index 0e5db6f..a539f5b 100644
--- a/debian/nodejs/extlinks
+++ b/debian/nodejs/extlinks
@@ -2,6 +2,4 @@ domelementtype
domhandler
domutils
entities
-@types/jest test
@types/node
-ts-jest test
diff --git a/debian/patches/disable-isolated-declarations.patch b/debian/patches/disable-isolated-declarations.patch
new file mode 100644
index 0000000..25a95eb
--- /dev/null
+++ b/debian/patches/disable-isolated-declarations.patch
@@ -0,0 +1,35 @@
+Description: Drop isolatedDeclarations option (TS 5.5+)
+ Debian's typescript (5.2.2) does not support the isolatedDeclarations
+ compiler option. Removing it does not affect runtime behaviour.
+Author: Xavier Guimard <yadd@debian.org>
+Forwarded: not-needed
+Last-Update: 2026-05-03
+
+--- a/tsconfig.json
++++ b/tsconfig.json
+@@ -8,6 +8,7 @@
+ "declarationMap": true,
+ "sourceMap": true,
+ "outDir": "dist",
++ "rootDir": "src",
+
+ /* Strict Type-Checking Options */
+ "strict": true,
+@@ -16,7 +17,6 @@
+ "exactOptionalPropertyTypes": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+- "isolatedDeclarations": true,
+ "noFallthroughCasesInSwitch": true,
+ "noImplicitOverride": true,
+ "noImplicitReturns": true,
+@@ -25,7 +25,8 @@
+ "noUnusedParameters": true,
+
+ /* Module Resolution Options */
+- "resolveJsonModule": true
++ "resolveJsonModule": true,
++ "types": ["node"]
+ },
+ "include": ["src"],
+ "exclude": [
diff --git a/debian/patches/fix-for-jest-29.patch b/debian/patches/fix-for-jest-29.patch
deleted file mode 100644
index 877a974..0000000
--- a/debian/patches/fix-for-jest-29.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Description: fix for jest >= 29
-Author: Yadd <yadd@debian.org>
-Forwarded: not-needed
-Last-Update: 2022-10-18
-
---- a/package.json
-+++ b/package.json
-@@ -81,6 +81,10 @@
- "typescript": "^5.0.4"
- },
- "jest": {
-+ "snapshotFormat": {
-+ "escapeString": true,
-+ "printBasicPrototype": true
-+ },
- "preset": "ts-jest",
- "testEnvironment": "node",
- "coverageProvider": "v8",
diff --git a/debian/patches/series b/debian/patches/series
index 226713e..f09307c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
-workaround-bad-jest-config.patch
-fix-for-jest-29.patch
+disable-isolated-declarations.patch
diff --git a/debian/patches/workaround-bad-jest-config.patch b/debian/patches/workaround-bad-jest-config.patch
deleted file mode 100644
index 65ca0fd..0000000
--- a/debian/patches/workaround-bad-jest-config.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: workaround bad jest config
-Author: Yadd <yadd@debian.org>
-Forwarded: not-needed
-Last-Update: 2023-07-16
-
---- a/package.json
-+++ b/package.json
-@@ -85,7 +85,7 @@
- "testEnvironment": "node",
- "coverageProvider": "v8",
- "moduleNameMapper": {
-- "^(.*)\\.js$": [
-+ "^([^e].*)\\.js$": [
- "$1",
- "$1.js"
- ]
diff --git a/debian/rules b/debian/rules
index 31767ec..f30dace 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,13 +1,8 @@
#!/usr/bin/make -f
# -*- makefile -*-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
%:
dh $@
override_dh_auto_build:
tsc
- tsc -module esnext --target es2019 --outDir lib/esm
- echo '{"type":"module"}' > lib/esm/package.json
diff --git a/debian/tests/pkg-js/test b/debian/tests/pkg-js/test
index a999885..92a56e6 100644
--- a/debian/tests/pkg-js/test
+++ b/debian/tests/pkg-js/test
@@ -1 +1 @@
-jest --ci -u
+node --input-type=module -e 'import { parseDocument } from "htmlparser2"; import assert from "node:assert"; const dom = parseDocument("<p class=\"x\">hi</p>"); assert.strictEqual(dom.children.length, 1); assert.strictEqual(dom.children[0].name, "p"); assert.strictEqual(dom.children[0].attribs.class, "x"); console.log("ok");'
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..36594c1
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,57 @@
+import { defineConfig } from "eslint/config";
+import { commonTypeScriptRules } from "@feedic/eslint-config/typescript";
+import tseslint from "typescript-eslint";
+import eslintConfigBiome from "eslint-config-biome";
+import feedicFlatConfig from "@feedic/eslint-config";
+
+export default defineConfig([
+ ...feedicFlatConfig,
+ {
+ linterOptions: {
+ reportUnusedDisableDirectives: "error",
+ },
+ },
+ eslintConfigBiome,
+ {
+ ignores: ["coverage/**", "dist/**", "eslint.config.{js,cjs,mjs}"],
+ },
+ {
+ rules: {
+ "n/no-unpublished-import": 0,
+
+ "unicorn/filename-case": [
+ 2,
+ {
+ cases: {
+ camelCase: true,
+ pascalCase: true,
+ },
+ },
+ ],
+ },
+ },
+ {
+ files: ["**/*.ts"],
+ extends: [...tseslint.configs.recommended],
+
+ languageOptions: {
+ sourceType: "module",
+ parser: tseslint.parser,
+
+ parserOptions: {
+ project: "./tsconfig.eslint.json",
+ },
+ },
+
+ rules: {
+ ...commonTypeScriptRules,
+ },
+ },
+ {
+ files: ["**/*.spec.ts"],
+
+ rules: {
+ "n/no-unsupported-features/node-builtins": 0,
+ },
+ },
+]);
diff --git a/package-lock.json b/package-lock.json
index ab4f5a5..3065e25 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "htmlparser2",
- "version": "9.0.0",
- "lockfileVersion": 2,
+ "version": "12.0.0",
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "htmlparser2",
- "version": "9.0.0",
+ "version": "12.0.0",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -16,705 +16,443 @@
],
"license": "MIT",
"dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.1.0",
- "entities": "^4.5.0"
+ "domelementtype": "^3.0.0",
+ "domhandler": "^6.0.0",
+ "domutils": "^4.0.2",
+ "entities": "^8.0.0"
},
"devDependencies": {
- "@types/jest": "^29.5.1",
- "@types/node": "^20.1.1",
- "@typescript-eslint/eslint-plugin": "^5.59.5",
- "@typescript-eslint/parser": "^5.59.5",
- "eslint": "^8.40.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-n": "^15.7.0",
- "eslint-plugin-unicorn": "^47.0.0",
- "jest": "^29.5.0",
- "prettier": "^2.8.8",
- "ts-jest": "^29.1.0",
- "typescript": "^5.0.4"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@biomejs/biome": "^2.4.8",
+ "@feedic/eslint-config": "^0.3.1",
+ "@types/node": "^25.5.0",
+ "eslint": "^10.0.3",
+ "eslint-config-biome": "^2.1.3",
+ "typescript": "^5.9.3",
+ "typescript-eslint": "^8.57.1",
+ "vitest": "^4.1.0"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=20.19.0"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "node_modules/@altano/repository-tools": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@altano/repository-tools/-/repository-tools-2.0.1.tgz",
+ "integrity": "sha512-YE/52CkFtb+YtHPgbWPai7oo5N9AKnMuP5LM+i2AG7G1H2jdYBCO1iDnkDE3dZ3C1MIgckaF+d5PNRulgt0bdw==",
"dev": true,
- "dependencies": {
- "@babel/highlight": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
+ "license": "ISC"
},
- "node_modules/@babel/compat-data": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
- "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
- "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
+ "node_modules/@biomejs/biome": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.8.tgz",
+ "integrity": "sha512-ponn0oKOky1oRXBV+rlSaUlixUxf1aZvWC19Z41zBfUOUesthrQqL3OtiAlSB1EjFjyWpn98Q64DHelhA6jNlA==",
"dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.0",
- "@babel/helper-module-transforms": "^7.20.2",
- "@babel/helpers": "^7.20.5",
- "@babel/parser": "^7.20.5",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
+ "license": "MIT OR Apache-2.0",
+ "bin": {
+ "biome": "bin/biome"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
- "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.20.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
+ "url": "https://opencollective.com/biome"
},
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
- "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.20.0",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "optionalDependencies": {
+ "@biomejs/cli-darwin-arm64": "2.4.8",
+ "@biomejs/cli-darwin-x64": "2.4.8",
+ "@biomejs/cli-linux-arm64": "2.4.8",
+ "@biomejs/cli-linux-arm64-musl": "2.4.8",
+ "@biomejs/cli-linux-x64": "2.4.8",
+ "@biomejs/cli-linux-x64-musl": "2.4.8",
+ "@biomejs/cli-win32-arm64": "2.4.8",
+ "@biomejs/cli-win32-x64": "2.4.8"
+ }
+ },
+ "node_modules/@biomejs/cli-darwin-arm64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.8.tgz",
+ "integrity": "sha512-ARx0tECE8I7S2C2yjnWYLNbBdDoPdq3oyNLhMglmuctThwUsuzFWRKrHmIGwIRWKz0Mat9DuzLEDp52hGnrxGQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "node_modules/@biomejs/cli-darwin-x64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.8.tgz",
+ "integrity": "sha512-Jg9/PsB9vDCJlANE8uhG7qDhb5w0Ix69D7XIIc8IfZPUoiPrbLm33k2Ig3NOJ/7nb3UbesFz3D1aDKm9DvzjhQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
- "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
+ "node_modules/@biomejs/cli-linux-arm64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.8.tgz",
+ "integrity": "sha512-5CdrsJct76XG2hpKFwXnEtlT1p+4g4yV+XvvwBpzKsTNLO9c6iLlAxwcae2BJ7ekPGWjNGw9j09T5KGPKKxQig==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.1",
- "@babel/types": "^7.20.2"
- },
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+ "node_modules/@biomejs/cli-linux-arm64-musl": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.8.tgz",
+ "integrity": "sha512-Zo9OhBQDJ3IBGPlqHiTISloo5H0+FBIpemqIJdW/0edJ+gEcLR+MZeZozcUyz3o1nXkVA7++DdRKQT0599j9jA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "node_modules/@biomejs/cli-linux-x64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.8.tgz",
+ "integrity": "sha512-PdKXspVEaMCQLjtZCn6vfSck/li4KX9KGwSDbZdgIqlrizJ2MnMcE3TvHa2tVfXNmbjMikzcfJpuPWH695yJrw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "node_modules/@biomejs/cli-linux-x64-musl": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.8.tgz",
+ "integrity": "sha512-Gi8quv8MEuDdKaPFtS2XjEnMqODPsRg6POT6KhoP+VrkNb+T2ywunVB+TvOU0LX1jAZzfBr+3V1mIbBhzAMKvw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "node_modules/@biomejs/cli-win32-arm64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.8.tgz",
+ "integrity": "sha512-LoFatS0tnHv6KkCVpIy3qZCih+MxUMvdYiPWLHRri7mhi2vyOOs8OrbZBcLTUEWCS+ktO72nZMy4F96oMhkOHQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+ "node_modules/@biomejs/cli-win32-x64": {
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.8.tgz",
+ "integrity": "sha512-vAn7iXDoUbqFXqVocuq1sMYAd33p8+mmurqJkWl6CtIhobd/O6moe4rY5AJvzbunn/qZCdiDVcveqtkFh1e7Hg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.21.3"
}
},
- "node_modules/@babel/helpers": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
- "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
+ "node_modules/@emnapi/core": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz",
+ "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@emnapi/wasi-threads": "1.2.0",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "node_modules/@emnapi/runtime": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz",
+ "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz",
+ "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/@es-joy/jsdoccomment": {
+ "version": "0.84.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.84.0.tgz",
+ "integrity": "sha512-0xew1CxOam0gV5OMjh2KjFQZsKL2bByX1+q4j3E73MpYIdyUxcZb/xQct9ccUb+ve5KGUYbCUxyPnYB7RbuP+w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@types/estree": "^1.0.8",
+ "@typescript-eslint/types": "^8.54.0",
+ "comment-parser": "1.4.5",
+ "esquery": "^1.7.0",
+ "jsdoc-type-pratt-parser": "~7.1.1"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "node_modules/@es-joy/resolve.exports": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz",
+ "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.20.13",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
- "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
"dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "node_modules/@eslint/config-array": {
+ "version": "0.23.3",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz",
+ "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@eslint/object-schema": "^3.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.4"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz",
+ "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@eslint/core": "^1.1.1"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "node_modules/@eslint/core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
+ "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
+ "@types/json-schema": "^7.0.15"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
- "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
+ "node_modules/@eslint/js": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+ "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
"dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.19.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=6.9.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
+ "funding": {
+ "url": "https://eslint.org/donate"
},
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
- "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.5",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.20.5",
- "@babel/types": "^7.20.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
+ "peerDependencies": {
+ "eslint": "^10.0.0"
},
- "engines": {
- "node": ">=6.9.0"
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz",
+ "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=4"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@babel/types": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
- "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz",
+ "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
+ "@eslint/core": "^1.1.1",
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">=6.9.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "node_modules/@feedic/eslint-config": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@feedic/eslint-config/-/eslint-config-0.3.1.tgz",
+ "integrity": "sha512-CBDfjWp629dQs4IaZVsQdeMVN2lPyKSVaitxnr/Vb5wz7lXwGX0h9h4Rn9nQ4O5OdgK4KIxftlD+4AnDdZfNpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "@eslint/js": "^10.0.1",
+ "eslint-plugin-jsdoc": "^62.8.0",
+ "eslint-plugin-n": "^17.24.0",
+ "eslint-plugin-package-json": "^0.90.1",
+ "eslint-plugin-unicorn": "^63.0.0",
+ "globals": "^17.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz",
- "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
- "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "eslint": "^10.0.0",
+ "typescript-eslint": "^8.56.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependenciesMeta": {
+ "typescript-eslint": {
+ "optional": true
+ }
}
},
- "node_modules/@eslint/js": {
- "version": "8.40.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz",
- "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18.18.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
- "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -722,6 +460,7 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.22"
},
@@ -730,699 +469,560 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
"dev": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=8"
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
+ "license": "MIT"
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz",
+ "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1",
+ "@tybys/wasm-util": "^0.10.1"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "node_modules/@oxc-project/runtime": {
+ "version": "0.115.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.115.0.tgz",
+ "integrity": "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "node_modules/@oxc-project/types": {
+ "version": "0.115.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz",
+ "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
}
},
- "node_modules/@jest/console": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
- "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.9.tgz",
+ "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/core": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
- "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/environment": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
- "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.9.tgz",
+ "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.9.tgz",
+ "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/expect-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
- "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.9.tgz",
+ "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "jest-get-type": "^29.4.3"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/fake-timers": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
- "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.9.tgz",
+ "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/globals": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
- "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.9.tgz",
+ "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/reporters": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
- "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
- "dev": true,
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
- "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.9.tgz",
+ "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@sinclair/typebox": "^0.25.16"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/source-map": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
- "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.9.tgz",
+ "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.15",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/test-result": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
- "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.9.tgz",
+ "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==",
+ "cpu": [
+ "s390x"
+ ],
"dev": true,
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/test-sequencer": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
- "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.9.tgz",
+ "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/test-result": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "slash": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/transform": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
- "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.9.tgz",
+ "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.9.tgz",
+ "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/schemas": "^29.4.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.9.tgz",
+ "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==",
+ "cpu": [
+ "wasm32"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "@napi-rs/wasm-runtime": "^1.1.1"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz",
+ "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.9.tgz",
+ "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.9.tgz",
+ "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==",
"dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
+ "license": "MIT"
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "node_modules/@sindresorhus/base62": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz",
+ "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
+ "node": ">=18"
},
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.25.22",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.22.tgz",
- "integrity": "sha512-6U6r2L7rnM7EG8G1tWzIjdB3QlsHF4slgcqXNN/SF0xJOAr0nDmT2GedlkyO3mrv8mDTJ24UuOMWR3diBrCvQQ==",
- "dev": true
- },
- "node_modules/@sinonjs/commons": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
- "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
- "dev": true,
- "dependencies": {
- "type-detect": "4.0.8"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@sinonjs/fake-timers": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
- "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
"dev": true,
- "dependencies": {
- "@sinonjs/commons": "^2.0.0"
- }
+ "license": "MIT"
},
- "node_modules/@types/babel__core": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
- "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@types/babel__generator": {
- "version": "7.6.4",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
- "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.0.0"
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
}
},
- "node_modules/@types/babel__template": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
- "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
"dev": true,
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
+ "license": "MIT"
},
- "node_modules/@types/babel__traverse": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
- "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
+ "node_modules/@types/esrecurse": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+ "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
"dev": true,
- "dependencies": {
- "@babel/types": "^7.3.0"
- }
+ "license": "MIT"
},
- "node_modules/@types/graceful-fs": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
- "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
+ "license": "MIT"
},
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
+ "license": "MIT"
},
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "node_modules/@types/node": {
+ "version": "25.5.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
+ "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/istanbul-lib-report": "*"
+ "undici-types": "~7.18.0"
}
},
- "node_modules/@types/jest": {
- "version": "29.5.1",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz",
- "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==",
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz",
+ "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.57.1",
+ "@typescript-eslint/type-utils": "8.57.1",
+ "@typescript-eslint/utils": "8.57.1",
+ "@typescript-eslint/visitor-keys": "8.57.1",
+ "ignore": "^7.0.5",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.57.1",
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
- "node_modules/@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "20.1.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.1.tgz",
- "integrity": "sha512-uKBEevTNb+l6/aCQaKVnUModfEMjAl98lw2Si9P5y4hLu9tm6AlX2ZIoXZX6Wh9lJueYPrGPKk5WMCNHg/u6/A==",
- "dev": true
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "node_modules/@types/prettier": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
- "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
- "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
- "dev": true
- },
- "node_modules/@types/stack-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
- },
- "node_modules/@types/yargs": {
- "version": "17.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz",
- "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==",
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
"dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "node_modules/@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz",
- "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==",
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz",
+ "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/scope-manager": "8.57.1",
+ "@typescript-eslint/types": "8.57.1",
+ "@typescript-eslint/typescript-estree": "8.57.1",
+ "@typescript-eslint/visitor-keys": "8.57.1",
+ "debug": "^4.4.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz",
- "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==",
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz",
+ "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
+ "@typescript-eslint/tsconfig-utils": "^8.57.1",
+ "@typescript-eslint/types": "^8.57.1",
+ "debug": "^4.4.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz",
- "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz",
+ "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
+ "@typescript-eslint/types": "8.57.1",
+ "@typescript-eslint/visitor-keys": "8.57.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz",
+ "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz",
- "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz",
+ "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/types": "8.57.1",
+ "@typescript-eslint/typescript-estree": "8.57.1",
+ "@typescript-eslint/utils": "8.57.1",
+ "debug": "^4.4.3",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz",
- "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz",
+ "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -1430,314 +1030,288 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz",
- "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz",
+ "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "@typescript-eslint/project-service": "8.57.1",
+ "@typescript-eslint/tsconfig-utils": "8.57.1",
+ "@typescript-eslint/types": "8.57.1",
+ "@typescript-eslint/visitor-keys": "8.57.1",
+ "debug": "^4.4.3",
+ "minimatch": "^10.2.2",
+ "semver": "^7.7.3",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz",
- "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz",
+ "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.57.1",
+ "@typescript-eslint/types": "8.57.1",
+ "@typescript-eslint/typescript-estree": "8.57.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz",
- "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz",
+ "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
+ "@typescript-eslint/types": "8.57.1",
+ "eslint-visitor-keys": "^5.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "node_modules/@vitest/expect": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz",
+ "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==",
"dev": true,
- "bin": {
- "acorn": "bin/acorn"
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.1.0",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "chai": "^6.2.2",
+ "tinyrainbow": "^3.0.3"
},
- "engines": {
- "node": ">=0.4.0"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "node_modules/@vitest/mocker": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz",
+ "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "4.1.0",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.21"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
"peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/@vitest/pretty-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz",
+ "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "tinyrainbow": "^3.0.3"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "node_modules/@vitest/runner": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz",
+ "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
+ "@vitest/utils": "4.1.0",
+ "pathe": "^2.0.3"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "node_modules/@vitest/snapshot": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz",
+ "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==",
"dev": true,
- "engines": {
- "node": ">=10"
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "magic-string": "^0.30.21",
+ "pathe": "^2.0.3"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/@vitest/spy": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz",
+ "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "license": "MIT",
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/@vitest/utils": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz",
+ "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@vitest/pretty-format": "4.1.0",
+ "convert-source-map": "^2.0.0",
+ "tinyrainbow": "^3.0.3"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "node_modules/acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
},
"engines": {
- "node": ">= 8"
+ "node": ">=0.4.0"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/babel-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
- "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+ "node_modules/ajv": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/transform": "^29.5.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
},
- "peerDependencies": {
- "@babel/core": "^7.8.0"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "node_modules/are-docs-informative": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+ "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
"dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=14"
}
},
- "node_modules/babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
- "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
- "dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- },
+ "license": "MIT",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=12"
}
},
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
- "dependencies": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
}
},
- "node_modules/babel-preset-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
- "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
+ "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
"dev": true,
- "dependencies": {
- "babel-plugin-jest-hoist": "^29.5.0",
- "babel-preset-current-node-syntax": "^1.0.0"
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
"node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "balanced-match": "^4.0.2"
},
"engines": {
- "node": ">=8"
+ "node": "18 || 20 || >=22"
}
},
"node_modules/browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
"dev": true,
"funding": [
{
@@ -1747,13 +1321,19 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
},
"bin": {
"browserslist": "cli.js"
@@ -1762,76 +1342,23 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "dependencies": {
- "fast-json-stable-stringify": "2.x"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "dependencies": {
- "node-int64": "^0.4.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
"node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz",
+ "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=18.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
- "dev": true,
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/caniuse-lite": {
- "version": "1.0.30001434",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
- "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
+ "version": "1.0.30001777",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz",
+ "integrity": "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==",
"dev": true,
"funding": [
{
@@ -1841,38 +1368,35 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/chai": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
+ "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=18"
}
},
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
+ "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
"dev": true,
- "engines": {
- "node": ">=10"
- }
+ "license": "MIT"
},
"node_modules/ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
+ "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
"dev": true,
"funding": [
{
@@ -1880,21 +1404,17 @@
"url": "https://github.com/sponsors/sibiraj-s"
}
],
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
- "dev": true
- },
"node_modules/clean-regexp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
"integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^1.0.5"
},
@@ -1907,75 +1427,48 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "node_modules/comment-parser": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.5.tgz",
+ "integrity": "sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==",
"dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">= 12.0.0"
}
},
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
+ "license": "MIT"
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/core-js-compat": {
+ "version": "3.48.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz",
+ "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
+ "browserslist": "^4.28.1"
},
- "engines": {
- "node": ">=7.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -1986,12 +1479,13 @@
}
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -2002,169 +1496,162 @@
}
}
},
- "node_modules/dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/deepmerge": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz",
- "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==",
+ "node_modules/detect-indent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz",
+ "integrity": "sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
- "node_modules/diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+ "node_modules/detect-newline": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz",
+ "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/doctrine": {
+ "node_modules/dom-serializer": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.0.0.tgz",
+ "integrity": "sha512-x+9D6nkC8tdXOQUS32egtZpZFLP90+HBZmWjuT920srbJvD/zPgFB9t4k3pEhlw5BQrXStQtRc1Y1zuriXk+Nw==",
+ "license": "MIT",
"dependencies": {
- "esutils": "^2.0.2"
+ "domelementtype": "^3.0.0",
+ "domhandler": "^6.0.0",
+ "entities": "^8.0.0"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "node": ">=20.19.0"
},
"funding": {
+ "type": "github",
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz",
+ "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=20.19.0"
+ }
},
"node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz",
+ "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "domelementtype": "^2.3.0"
+ "domelementtype": "^3.0.0"
},
"engines": {
- "node": ">= 4"
+ "node": ">=20.19.0"
},
"funding": {
+ "type": "github",
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-4.0.2.tgz",
+ "integrity": "sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
+ "dom-serializer": "^3.0.0",
+ "domelementtype": "^3.0.0",
+ "domhandler": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=20.19.0"
},
"funding": {
+ "type": "github",
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
- "dev": true
+ "version": "1.5.307",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz",
+ "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+ "node_modules/enhanced-resolve": {
+ "version": "5.20.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz",
+ "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==",
"dev": true,
- "engines": {
- "node": ">=12"
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.3.0"
},
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz",
+ "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==",
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=0.12"
+ "node": ">=20.19.0"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/es-module-lexer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
+ "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
"dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
+ "license": "MIT"
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -2174,6 +1661,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -2182,345 +1670,323 @@
}
},
"node_modules/eslint": {
- "version": "8.40.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz",
- "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz",
+ "integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@eslint/config-array": "^0.23.3",
+ "@eslint/config-helpers": "^0.5.2",
+ "@eslint/core": "^1.1.1",
+ "@eslint/plugin-kit": "^0.6.1",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.14.0",
+ "cross-spawn": "^7.0.6",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
+ "eslint-scope": "^9.1.2",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.1.1",
+ "esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
+ "minimatch": "^10.2.4",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
- "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
- "dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
+ "url": "https://eslint.org/donate"
},
"peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-es": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
- "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
+ "jiti": "*"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "node_modules/eslint-compat-utils": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
+ "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^1.1.0"
+ "semver": "^7.5.4"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
}
},
- "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "node_modules/eslint-config-biome": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/eslint-config-biome/-/eslint-config-biome-2.1.3.tgz",
+ "integrity": "sha512-IL720kAN79egw8KyaoZsC0UMLn+NlVdPeX2ZmL0CIEcQdLJCf6d1ELCQTKnJ9Lpe6dzfP5ZF8yZ0PTMOirtT+w==",
"dev": true,
- "engines": {
- "node": ">=4"
- }
+ "license": "MIT"
},
- "node_modules/eslint-plugin-n": {
- "version": "15.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz",
- "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==",
+ "node_modules/eslint-fix-utils": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-fix-utils/-/eslint-fix-utils-0.4.2.tgz",
+ "integrity": "sha512-n7ZTcwwkP5scedlhvWMcqxED+O1NzXcj5Rxn/0kJQMP88k02vRcBfQ1qsk/JHb6Aw8bajFoetFCCBiNIcNCsvA==",
"dev": true,
- "dependencies": {
- "builtins": "^5.0.1",
- "eslint-plugin-es": "^4.1.0",
- "eslint-utils": "^3.0.0",
- "ignore": "^5.1.1",
- "is-core-module": "^2.11.0",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.1",
- "semver": "^7.3.8"
- },
+ "license": "MIT",
"engines": {
- "node": ">=12.22.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
- "eslint": ">=7.0.0"
+ "@types/estree": ">=1",
+ "eslint": ">=8"
+ },
+ "peerDependenciesMeta": {
+ "@types/estree": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-unicorn": {
- "version": "47.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-47.0.0.tgz",
- "integrity": "sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==",
+ "node_modules/eslint-plugin-es-x": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz",
+ "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==",
"dev": true,
+ "funding": [
+ "https://github.com/sponsors/ota-meshi",
+ "https://opencollective.com/eslint"
+ ],
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.19.1",
- "@eslint-community/eslint-utils": "^4.4.0",
- "ci-info": "^3.8.0",
- "clean-regexp": "^1.0.0",
- "esquery": "^1.5.0",
- "indent-string": "^4.0.0",
- "is-builtin-module": "^3.2.1",
- "jsesc": "^3.0.2",
- "lodash": "^4.17.21",
- "pluralize": "^8.0.0",
- "read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.24",
- "regjsparser": "^0.10.0",
- "safe-regex": "^2.1.1",
- "semver": "^7.3.8",
- "strip-indent": "^3.0.0"
+ "@eslint-community/eslint-utils": "^4.1.2",
+ "@eslint-community/regexpp": "^4.11.0",
+ "eslint-compat-utils": "^0.5.1"
},
"engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
+ "node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
- "eslint": ">=8.38.0"
- }
- },
- "node_modules/eslint-plugin-unicorn/node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
+ "eslint": ">=8"
}
},
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/eslint-plugin-jsdoc": {
+ "version": "62.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.8.0.tgz",
+ "integrity": "sha512-hu3r9/6JBmPG6wTcqtYzgZAnjEG2eqRUATfkFscokESg1VDxZM21ZaMire0KjeMwfj+SXvgB4Rvh5LBuesj92w==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "@es-joy/jsdoccomment": "~0.84.0",
+ "@es-joy/resolve.exports": "1.2.0",
+ "are-docs-informative": "^0.0.2",
+ "comment-parser": "1.4.5",
+ "debug": "^4.4.3",
+ "escape-string-regexp": "^4.0.0",
+ "espree": "^11.1.0",
+ "esquery": "^1.7.0",
+ "html-entities": "^2.6.0",
+ "object-deep-merge": "^2.0.0",
+ "parse-imports-exports": "^0.2.4",
+ "semver": "^7.7.4",
+ "spdx-expression-parse": "^4.0.0",
+ "to-valid-identifier": "^1.0.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
}
},
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/eslint-plugin-n": {
+ "version": "17.24.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz",
+ "integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "@eslint-community/eslint-utils": "^4.5.0",
+ "enhanced-resolve": "^5.17.1",
+ "eslint-plugin-es-x": "^7.8.0",
+ "get-tsconfig": "^4.8.1",
+ "globals": "^15.11.0",
+ "globrex": "^0.1.2",
+ "ignore": "^5.3.2",
+ "semver": "^7.6.3",
+ "ts-declaration-location": "^1.0.6"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "url": "https://opencollective.com/eslint"
},
"peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "eslint": ">=8.23.0"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+ "node_modules/eslint-plugin-n/node_modules/globals": {
+ "version": "15.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
+ "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
- "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
+ "node_modules/eslint-plugin-package-json": {
+ "version": "0.90.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-package-json/-/eslint-plugin-package-json-0.90.1.tgz",
+ "integrity": "sha512-6GU2nyjGZ+iSLIo1Qxm6O2HcPKshpjIS3B5ZeBTt8spGad5IQ45+hQUDrULYP0vD6SFT8veJfQ/Ha49/g4Cr5w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "@altano/repository-tools": "^2.0.1",
+ "change-case": "^5.4.4",
+ "detect-indent": "^7.0.2",
+ "detect-newline": "^4.0.1",
+ "eslint-fix-utils": "~0.4.1",
+ "package-json-validator": "^1.2.1",
+ "semver": "^7.7.3",
+ "sort-object-keys": "^2.0.0",
+ "sort-package-json": "^3.4.0",
+ "validate-npm-package-name": "^7.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "eslint": ">=8.0.0",
+ "jsonc-eslint-parser": ">=2.0.0"
}
},
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/eslint-plugin-unicorn": {
+ "version": "63.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-63.0.0.tgz",
+ "integrity": "sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@eslint-community/eslint-utils": "^4.9.0",
+ "change-case": "^5.4.4",
+ "ci-info": "^4.3.1",
+ "clean-regexp": "^1.0.0",
+ "core-js-compat": "^3.46.0",
+ "find-up-simple": "^1.0.1",
+ "globals": "^16.4.0",
+ "indent-string": "^5.0.0",
+ "is-builtin-module": "^5.0.0",
+ "jsesc": "^3.1.0",
+ "pluralize": "^8.0.0",
+ "regexp-tree": "^0.1.27",
+ "regjsparser": "^0.13.0",
+ "semver": "^7.7.3",
+ "strip-indent": "^4.1.1"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "^20.10.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
+ },
+ "peerDependencies": {
+ "eslint": ">=9.38.0"
}
},
- "node_modules/eslint/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/eslint-plugin-unicorn/node_modules/globals": {
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz",
+ "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==",
"dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "node_modules/eslint-scope": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+ "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "p-locate": "^5.0.0"
+ "@types/esrecurse": "^4.3.1",
+ "@types/estree": "^1.0.8",
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=10"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "node_modules/eslint-visitor-keys": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
"dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=10"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/espree": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
- "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+ "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.8.0",
+ "acorn": "^8.16.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^5.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -2528,20 +1994,12 @@
"node": ">=0.10"
}
},
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -2549,22 +2007,24 @@
"node": ">=4.0"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
+ "node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
- "engines": {
- "node": ">=4.0"
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
}
},
"node_modules/esutils": {
@@ -2572,190 +2032,131 @@
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+ "node_modules/expect-type": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
+ "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
"dev": true,
- "dependencies": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=12.0.0"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
+ "license": "MIT"
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
+ "license": "MIT"
},
- "node_modules/fb-watchman": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
- "dependencies": {
- "bser": "2.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/find-up-simple": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
+ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
"dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz",
+ "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -2764,69 +2165,27 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true,
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "node_modules/get-tsconfig": {
+ "version": "4.13.6",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz",
+ "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==",
"dev": true,
- "engines": {
- "node": ">=10"
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
- "node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "node_modules/git-hooks-list": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.2.1.tgz",
+ "integrity": "sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==",
"dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
+ "license": "MIT",
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/fisker/git-hooks-list?sponsor=1"
}
},
"node_modules/glob-parent": {
@@ -2834,6 +2193,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -2842,237 +2202,114 @@
}
},
"node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
+ "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
"dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "node_modules/globrex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "license": "MIT"
},
"node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
- },
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "ISC"
},
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "node_modules/html-entities": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
+ "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==",
"dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ],
+ "license": "MIT"
},
"node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "dev": true,
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
},
"node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
"node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz",
+ "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "builtin-modules": "^3.3.0"
+ "builtin-modules": "^5.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=18.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -3080,31 +2317,14 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -3113,992 +2333,471 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "ISC"
},
- "node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "node_modules/jsdoc-type-pratt-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.1.1.tgz",
+ "integrity": "sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==",
"dev": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=20.0.0"
}
},
- "node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
+ "license": "MIT",
"bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
+ "jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
- "node_modules/istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true,
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
- "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
- "dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
- "import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
+ "license": "MIT"
},
- "node_modules/jest-changed-files": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
- "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true,
- "dependencies": {
- "execa": "^5.0.0",
- "p-limit": "^3.1.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
+ "license": "MIT"
},
- "node_modules/jest-circus": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
- "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-cli": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
- "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+ "node_modules/jsonc-eslint-parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-3.1.0.tgz",
+ "integrity": "sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "prompts": "^2.0.1",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
+ "acorn": "^8.5.0",
+ "eslint-visitor-keys": "^5.0.0",
+ "semver": "^7.3.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
- "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@types/node": "*",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-diff": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
- "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
}
},
- "node_modules/jest-docblock": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
- "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "json-buffer": "3.0.1"
}
},
- "node_modules/jest-each": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
- "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">= 0.8.0"
}
},
- "node_modules/jest-environment-node": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
- "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+ "node_modules/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"dev": true,
+ "license": "MPL-2.0",
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "detect-libc": "^2.0.3"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
- "dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-haste-map": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
- "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/jest-leak-detector": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
- "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+ "lightningcss-android-arm64": "1.32.0",
+ "lightningcss-darwin-arm64": "1.32.0",
+ "lightningcss-darwin-x64": "1.32.0",
+ "lightningcss-freebsd-x64": "1.32.0",
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
+ "lightningcss-linux-arm64-gnu": "1.32.0",
+ "lightningcss-linux-arm64-musl": "1.32.0",
+ "lightningcss-linux-x64-gnu": "1.32.0",
+ "lightningcss-linux-x64-musl": "1.32.0",
+ "lightningcss-win32-arm64-msvc": "1.32.0",
+ "lightningcss-win32-x64-msvc": "1.32.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
- "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-message-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
- "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-mock": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
- "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-util": "^29.5.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">= 12.0.0"
},
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-regex-util": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
- "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
- "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-resolve-dependencies": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
- "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "dependencies": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
- "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runtime": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
- "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
- "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
- "semver": "^7.3.5"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
- "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-validate": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
- "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.5.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.5.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-watcher": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
- "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.5.0",
- "string-length": "^4.0.1"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-worker": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
- "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "jest-util": "^29.5.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/js-sdsl": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
- "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==",
- "dev": true
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
+ "node": ">= 12.0.0"
},
- "engines": {
- "node": ">= 0.8.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
"node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "yallist": "^4.0.0"
+ "p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "node_modules/makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "tmpl": "1.0.5"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
+ "@jridgewell/sourcemap-codec": "^1.5.5"
}
},
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
+ "brace-expansion": "^5.0.2"
},
"engines": {
- "node": ">=8.6"
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
- "engines": {
- "node": ">=6"
- }
+ "license": "MIT"
},
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
},
"engines": {
- "node": "*"
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node_modules/node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT"
},
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "node_modules/node-releases": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
+ "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
"dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "node_modules/object-deep-merge": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz",
+ "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==",
"dev": true,
- "dependencies": {
- "wrappy": "1"
- }
+ "license": "MIT"
},
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "node_modules/obug": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
+ "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
"dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "funding": [
+ "https://github.com/sponsors/sxzz",
+ "https://opencollective.com/debug"
+ ],
+ "license": "MIT"
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -4109,6 +2808,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -4120,497 +2820,245 @@
}
},
"node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-locate/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-try": "^2.0.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "node_modules/package-json-validator": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/package-json-validator/-/package-json-validator-1.3.1.tgz",
+ "integrity": "sha512-RfUMqyBoLa1qcPsKNAksnVDRuzDvLi//RqfMbf52RNMKsm+cWR/3Cfe6hvrTS/ATtEwvtm/57dPggXsau6++uA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "callsites": "^3.0.0"
+ "semver": "^7.7.2",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^7.0.0"
},
"engines": {
- "node": ">=6"
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}
},
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "node_modules/parse-imports-exports": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
+ "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "parse-statements": "1.0.11"
}
},
+ "node_modules/parse-statements": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz",
+ "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8.6"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
"integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/pretty-format": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
- "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
- "dev": true,
- "dependencies": {
- "@jest/schemas": "^29.4.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pure-rand": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.0.tgz",
- "integrity": "sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==",
+ "node_modules/postcss": {
+ "version": "8.5.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
+ "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
"dev": true,
"funding": [
{
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
"type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ]
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
+ "url": "https://opencollective.com/postcss/"
},
{
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
},
{
- "type": "consulting",
- "url": "https://feross.org/support"
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
- ]
- },
- "node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
+ ],
+ "license": "MIT",
"dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 0.8.0"
}
},
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
"node_modules/regexp-tree": {
- "version": "0.1.24",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz",
- "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==",
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz",
+ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==",
"dev": true,
+ "license": "MIT",
"bin": {
"regexp-tree": "bin/regexp-tree"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/regjsparser": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
- "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+ "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "jsesc": "~0.5.0"
+ "jsesc": "~3.1.0"
},
"bin": {
"regjsparser": "bin/parser"
}
},
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "node_modules/reserved-identifiers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz",
+ "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve.exports": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.1.tgz",
- "integrity": "sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
"dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "node_modules/rolldown": {
+ "version": "1.0.0-rc.9",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.9.tgz",
+ "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "glob": "^7.1.3"
+ "@oxc-project/types": "=0.115.0",
+ "@rolldown/pluginutils": "1.0.0-rc.9"
},
"bin": {
- "rimraf": "bin.js"
+ "rolldown": "bin/cli.mjs"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz",
- "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==",
- "dev": true,
- "dependencies": {
- "regexp-tree": "~0.1.1"
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.0.0-rc.9",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.9",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.9",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.9",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9"
}
},
"node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -4623,6 +3071,7 @@
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -4635,330 +3084,256 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
+ "node_modules/sort-object-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-2.1.0.tgz",
+ "integrity": "sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "node_modules/sort-package-json": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz",
+ "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-indent": "^7.0.2",
+ "detect-newline": "^4.0.1",
+ "git-hooks-list": "^4.1.1",
+ "is-plain-obj": "^4.1.0",
+ "semver": "^7.7.3",
+ "sort-object-keys": "^2.0.1",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "sort-package-json": "cli.js"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=20"
}
},
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
"node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
+ "node_modules/spdx-correct/node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
- "node_modules/spdx-license-ids": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
- "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
- "dev": true
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "node_modules/stack-utils": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "CC-BY-3.0"
},
- "node_modules/string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "node_modules/spdx-expression-parse": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+ "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
"dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "CC0-1.0"
},
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
"dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/strip-bom": {
+ "node_modules/std-env": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz",
+ "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==",
"dev": true,
- "engines": {
- "node": ">=6"
- }
+ "license": "MIT"
},
"node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz",
+ "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==",
"dev": true,
- "dependencies": {
- "min-indent": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "node_modules/tapable": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
+ "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=6"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "node_modules/tinyexec": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
+ "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=18"
}
},
- "node_modules/test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
},
"engines": {
- "node": ">=8"
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "node_modules/tmpl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "node_modules/tinyrainbow": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz",
+ "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=14.0.0"
}
},
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "node_modules/to-valid-identifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz",
+ "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-number": "^7.0.0"
+ "@sindresorhus/base62": "^1.0.0",
+ "reserved-identifiers": "^1.0.0"
},
"engines": {
- "node": ">=8.0"
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ts-jest": {
- "version": "29.1.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz",
- "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==",
+ "node_modules/ts-api-utils": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
+ "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
"dev": true,
- "dependencies": {
- "bs-logger": "0.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^29.0.0",
- "json5": "^2.2.3",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "semver": "7.x",
- "yargs-parser": "^21.0.1"
- },
- "bin": {
- "ts-jest": "cli.js"
- },
+ "license": "MIT",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=18.12"
},
"peerDependencies": {
- "@babel/core": ">=7.0.0-beta.0 <8",
- "@jest/types": "^29.0.0",
- "babel-jest": "^29.0.0",
- "jest": "^29.0.0",
- "typescript": ">=4.3 <6"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "@jest/types": {
- "optional": true
- },
- "babel-jest": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- }
+ "typescript": ">=4.8.4"
}
},
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "node_modules/ts-declaration-location": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz",
+ "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==",
"dev": true,
+ "funding": [
+ {
+ "type": "ko-fi",
+ "url": "https://ko-fi.com/rebeccastevens"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/ts-declaration-location"
+ }
+ ],
+ "license": "BSD-3-Clause",
"dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
+ "picomatch": "^4.0.2"
},
"peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ "typescript": ">=4.0.0"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -4966,44 +3341,55 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=14.17"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "node_modules/typescript-eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.1.tgz",
+ "integrity": "sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.57.1",
+ "@typescript-eslint/parser": "8.57.1",
+ "@typescript-eslint/typescript-estree": "8.57.1",
+ "@typescript-eslint/utils": "8.57.1"
+ },
"engines": {
- "node": ">=10"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
- "node_modules/typescript": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
- "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "node_modules/undici-types": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
+ "license": "MIT"
},
"node_modules/update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"dev": true,
"funding": [
{
@@ -5013,14 +3399,19 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
"bin": {
- "browserslist-lint": "cli.js"
+ "update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
@@ -5031,3960 +3422,259 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
- "node_modules/v8-to-istanbul": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/walker": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "dev": true,
- "dependencies": {
- "makeerror": "1.0.12"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "node_modules/validate-npm-package-name": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
+ "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
+ "license": "ISC",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "node_modules/write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "node_modules/vite": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz",
+ "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "@oxc-project/runtime": "0.115.0",
+ "lightningcss": "^1.32.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.8",
+ "rolldown": "1.0.0-rc.9",
+ "tinyglobby": "^0.2.15"
},
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/yargs": {
- "version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
+ "bin": {
+ "vite": "bin/vite.js"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node": "^20.19.0 || >=22.12.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
- "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
- "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.0",
- "@babel/helper-module-transforms": "^7.20.2",
- "@babel/helpers": "^7.20.5",
- "@babel/parser": "^7.20.5",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
+ "url": "https://github.com/vitejs/vite?sponsor=1"
},
- "dependencies": {
- "convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
- "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "dependencies": {
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
- "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.20.0",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "semver": "^6.3.0"
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
},
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true
- },
- "@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
- "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.1",
- "@babel/types": "^7.20.2"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
- "dev": true
- },
- "@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.2"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
- "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.0.0-alpha.31",
+ "esbuild": "^0.27.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
},
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
},
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
+ "@vitejs/devtools": {
+ "optional": true
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "esbuild": {
+ "optional": true
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
+ "jiti": {
+ "optional": true
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
+ "less": {
+ "optional": true
},
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@babel/parser": {
- "version": "7.20.13",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
- "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==",
- "dev": true
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-typescript": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
- "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.19.0"
- }
- },
- "@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
- }
- },
- "@babel/traverse": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
- "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.20.5",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.20.5",
- "@babel/types": "^7.20.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "dependencies": {
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- }
- }
- },
- "@babel/types": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
- "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz",
- "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
- "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz",
- "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
- "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
+ "sass": {
+ "optional": true
},
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
+ "sass-embedded": {
+ "optional": true
},
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
- },
- "@jest/console": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
- "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0"
- }
- },
- "@jest/core": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
- "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "@jest/environment": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
- "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0"
- }
- },
- "@jest/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
- "dev": true,
- "requires": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
- }
- },
- "@jest/expect-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
- "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.4.3"
- }
- },
- "@jest/fake-timers": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
- "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "@jest/globals": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
- "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
- }
- },
- "@jest/reporters": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
- "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- }
- },
- "@jest/schemas": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
- "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
- "dev": true,
- "requires": {
- "@sinclair/typebox": "^0.25.16"
- }
- },
- "@jest/source-map": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
- "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.15",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- }
- },
- "@jest/test-result": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
- "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
- "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "slash": "^3.0.0"
- }
- },
- "@jest/transform": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
- "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
- }
- },
- "@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.4.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@sinclair/typebox": {
- "version": "0.25.22",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.22.tgz",
- "integrity": "sha512-6U6r2L7rnM7EG8G1tWzIjdB3QlsHF4slgcqXNN/SF0xJOAr0nDmT2GedlkyO3mrv8mDTJ24UuOMWR3diBrCvQQ==",
- "dev": true
- },
- "@sinonjs/commons": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
- "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
- "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^2.0.0"
- }
- },
- "@types/babel__core": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
- "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.4",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
- "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
- "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
- "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/graceful-fs": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
- "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "29.5.1",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz",
- "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==",
- "dev": true,
- "requires": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
- "dev": true
- },
- "@types/node": {
- "version": "20.1.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.1.tgz",
- "integrity": "sha512-uKBEevTNb+l6/aCQaKVnUModfEMjAl98lw2Si9P5y4hLu9tm6AlX2ZIoXZX6Wh9lJueYPrGPKk5WMCNHg/u6/A==",
- "dev": true
- },
- "@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "@types/prettier": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
- "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
- "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
- "dev": true
- },
- "@types/stack-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
- },
- "@types/yargs": {
- "version": "17.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz",
- "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz",
- "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz",
- "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz",
- "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz",
- "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz",
- "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz",
- "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz",
- "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz",
- "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "babel-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
- "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
- "dev": true,
- "requires": {
- "@jest/transform": "^29.5.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- }
- },
- "babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
- "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
- "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^29.5.0",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
- }
- },
- "bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true
- },
- "builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
- "dev": true,
- "requires": {
- "semver": "^7.0.0"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001434",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
- "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true
- },
- "ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "dev": true
- },
- "cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
- "dev": true
- },
- "clean-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
- "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- }
- }
- },
- "cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "deepmerge": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz",
- "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==",
- "dev": true
- },
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
- },
- "diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- }
- },
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
- },
- "domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- },
- "domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- }
- },
- "electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
- "dev": true
- },
- "emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz",
- "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
- "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
+ "stylus": {
+ "optional": true
},
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
+ "sugarss": {
+ "optional": true
},
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
+ "terser": {
+ "optional": true
},
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
+ "tsx": {
+ "optional": true
},
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
+ "yaml": {
+ "optional": true
}
}
},
- "eslint-config-prettier": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
- "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-es": {
+ "node_modules/vitest": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
- "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz",
+ "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==",
"dev": true,
- "requires": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "eslint-plugin-n": {
- "version": "15.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz",
- "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==",
- "dev": true,
- "requires": {
- "builtins": "^5.0.1",
- "eslint-plugin-es": "^4.1.0",
- "eslint-utils": "^3.0.0",
- "ignore": "^5.1.1",
- "is-core-module": "^2.11.0",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.1",
- "semver": "^7.3.8"
- }
- },
- "eslint-plugin-unicorn": {
- "version": "47.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-47.0.0.tgz",
- "integrity": "sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.19.1",
- "@eslint-community/eslint-utils": "^4.4.0",
- "ci-info": "^3.8.0",
- "clean-regexp": "^1.0.0",
- "esquery": "^1.5.0",
- "indent-string": "^4.0.0",
- "is-builtin-module": "^3.2.1",
- "jsesc": "^3.0.2",
- "lodash": "^4.17.21",
- "pluralize": "^8.0.0",
- "read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.24",
- "regjsparser": "^0.10.0",
- "safe-regex": "^2.1.1",
- "semver": "^7.3.8",
- "strip-indent": "^3.0.0"
+ "@vitest/expect": "4.1.0",
+ "@vitest/mocker": "4.1.0",
+ "@vitest/pretty-format": "4.1.0",
+ "@vitest/runner": "4.1.0",
+ "@vitest/snapshot": "4.1.0",
+ "@vitest/spy": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "es-module-lexer": "^2.0.0",
+ "expect-type": "^1.3.0",
+ "magic-string": "^0.30.21",
+ "obug": "^2.1.1",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "std-env": "^4.0.0-rc.1",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.0.3",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0",
+ "why-is-node-running": "^2.3.0"
},
- "dependencies": {
- "jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true
- }
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
+ "bin": {
+ "vitest": "vitest.mjs"
},
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- }
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
- "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
},
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
},
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true
- },
- "expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
- "dev": true,
- "requires": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@opentelemetry/api": "^1.9.0",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.1.0",
+ "@vitest/browser-preview": "4.1.0",
+ "@vitest/browser-webdriverio": "4.1.0",
+ "@vitest/ui": "4.1.0",
+ "happy-dom": "*",
+ "jsdom": "*",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0"
},
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser-playwright": {
+ "optional": true
+ },
+ "@vitest/browser-preview": {
+ "optional": true
+ },
+ "@vitest/browser-webdriverio": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ },
+ "vite": {
+ "optional": false
}
}
},
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fb-watchman": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
- "dev": true,
- "requires": {
- "bser": "2.1.1"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "html-escaper": {
+ "node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
- "dev": true,
- "requires": {
- "builtin-modules": "^3.3.0"
- }
- },
- "is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- }
- },
- "istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
- "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
- "dev": true,
- "requires": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
- "import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
- }
- },
- "jest-changed-files": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
- "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
- "dev": true,
- "requires": {
- "execa": "^5.0.0",
- "p-limit": "^3.1.0"
- }
- },
- "jest-circus": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
- "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- }
- },
- "jest-cli": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
- "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
- "dev": true,
- "requires": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "prompts": "^2.0.1",
- "yargs": "^17.3.1"
- }
- },
- "jest-config": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
- "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- }
- },
- "jest-diff": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
- "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- }
- },
- "jest-docblock": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
- "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
- "dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
- "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
- }
- },
- "jest-environment-node": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
- "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
- "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.3.2",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- }
- },
- "jest-leak-detector": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
- "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- }
- },
- "jest-matcher-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
- "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- }
- },
- "jest-message-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
- "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- }
- },
- "jest-mock": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
- "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-util": "^29.5.0"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true,
- "requires": {}
- },
- "jest-regex-util": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
- "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
- "dev": true
- },
- "jest-resolve": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
- "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
- }
- },
- "jest-resolve-dependencies": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
- "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
- "dev": true,
- "requires": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
- }
- },
- "jest-runner": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
- "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- }
- },
- "jest-runtime": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
- "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- }
- },
- "jest-snapshot": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
- "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
- "semver": "^7.3.5"
- }
- },
- "jest-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
- "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- }
- },
- "jest-validate": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
- "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.5.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- }
- }
- },
- "jest-watcher": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
- "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.5.0",
- "string-length": "^4.0.1"
- }
- },
- "jest-worker": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
- "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "jest-util": "^29.5.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "js-sdsl": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
- "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "dev": true,
- "requires": {
- "tmpl": "1.0.5"
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
+ "license": "ISC",
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
+ "isexe": "^2.0.0"
},
- "dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- }
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
- "dev": true
- },
- "pretty-format": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
- "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.4.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
+ "bin": {
+ "node-which": "bin/node-which"
},
- "dependencies": {
- "ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true
- }
- }
- },
- "prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
+ "engines": {
+ "node": ">= 8"
}
},
- "punycode": {
+ "node_modules/why-is-node-running": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true
- },
- "pure-rand": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.0.tgz",
- "integrity": "sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "regexp-tree": {
- "version": "0.1.24",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz",
- "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==",
- "dev": true
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "regjsparser": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
- "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
"dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "resolve.exports": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.1.tgz",
- "integrity": "sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz",
- "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==",
- "dev": true,
- "requires": {
- "regexp-tree": "~0.1.1"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.12",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
- "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "stack-utils": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
},
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "requires": {
- "min-indent": "^1.0.0"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "tmpl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "ts-jest": {
- "version": "29.1.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz",
- "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==",
- "dev": true,
- "requires": {
- "bs-logger": "0.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^29.0.0",
- "json5": "^2.2.3",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "semver": "7.x",
- "yargs-parser": "^21.0.1"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
- "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "v8-to-istanbul": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
+ "bin": {
+ "why-is-node-running": "cli.js"
},
- "dependencies": {
- "convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- }
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "walker": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "dev": true,
- "requires": {
- "makeerror": "1.0.12"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "engines": {
+ "node": ">=8"
}
},
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yargs": {
- "version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
- },
- "yocto-queue": {
+ "node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/package.json b/package.json
index 7c84e52..e8de2c9 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,7 @@
{
"name": "htmlparser2",
+ "version": "12.0.0",
"description": "Fast & forgiving HTML/XML parser",
- "version": "9.0.0",
- "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",
@@ -26,72 +16,71 @@
"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",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "author": "Felix Boehm <me@feedic.com>",
+ "sideEffects": false,
+ "type": "module",
"exports": {
".": {
- "require": "./lib/index.js",
- "import": "./lib/esm/index.js"
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
},
- "./lib/WritableStream": {
- "require": "./lib/WritableStream.js",
- "import": "./lib/esm/WritableStream.js"
+ "./WebWritableStream": {
+ "types": "./dist/WebWritableStream.d.ts",
+ "default": "./dist/WebWritableStream.js"
+ },
+ "./WritableStream": {
+ "types": "./dist/WritableStream.d.ts",
+ "default": "./dist/WritableStream.js"
}
},
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
"files": [
- "lib/**/*"
+ "dist",
+ "src",
+ "!**/*.spec.ts",
+ "!src/**/__tests__/**",
+ "!src/**/__fixtures__/**",
+ "!src/**/__snapshots__/**"
],
"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",
+ "build": "tsc",
+ "format": "npm run format:es && npm run format:biome",
+ "format:biome": "biome check --write .",
"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"
+ "lint": "npm run lint:es && npm run lint:ts && npm run lint:biome",
+ "lint:biome": "biome check .",
+ "lint:es": "eslint .",
+ "lint:ts": "tsc --noEmit",
+ "prepublishOnly": "npm run build",
+ "test": "npm run test:vi && npm run lint",
+ "test:vi": "vitest run"
},
"dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.1.0",
- "entities": "^4.5.0"
+ "domelementtype": "^3.0.0",
+ "domhandler": "^6.0.0",
+ "domutils": "^4.0.2",
+ "entities": "^8.0.0"
},
"devDependencies": {
- "@types/jest": "^29.5.1",
- "@types/node": "^20.1.1",
- "@typescript-eslint/eslint-plugin": "^5.59.5",
- "@typescript-eslint/parser": "^5.59.5",
- "eslint": "^8.40.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-n": "^15.7.0",
- "eslint-plugin-unicorn": "^47.0.0",
- "jest": "^29.5.0",
- "prettier": "^2.8.8",
- "ts-jest": "^29.1.0",
- "typescript": "^5.0.4"
- },
- "jest": {
- "preset": "ts-jest",
- "testEnvironment": "node",
- "coverageProvider": "v8",
- "moduleNameMapper": {
- "^(.*)\\.js$": [
- "$1",
- "$1.js"
- ]
- }
+ "@biomejs/biome": "^2.4.8",
+ "@feedic/eslint-config": "^0.3.1",
+ "@types/node": "^25.5.0",
+ "eslint": "^10.0.3",
+ "eslint-config-biome": "^2.1.3",
+ "typescript": "^5.9.3",
+ "typescript-eslint": "^8.57.1",
+ "vitest": "^4.1.0"
},
- "prettier": {
- "tabWidth": 4
+ "engines": {
+ "node": ">=20.19.0"
}
}
diff --git a/src/FeedHandler.spec.ts b/src/FeedHandler.spec.ts
index 86cede5..49978d2 100644
--- a/src/FeedHandler.spec.ts
+++ b/src/FeedHandler.spec.ts
@@ -1,39 +1,37 @@
-// Runs tests for feeds
-
-import { parseFeed } from "./index.js";
import fs from "node:fs/promises";
-import path from "node:path";
+import { describe, expect, it } from "vitest";
+import { parseFeed } from "./index.js";
-const documents = path.join(__dirname, "__fixtures__", "Documents");
+const documents = new URL("__fixtures__/Documents/", import.meta.url);
describe("parseFeed", () => {
it("(rssFeed)", async () =>
expect(
parseFeed(
await fs.readFile(
- path.join(documents, "RSS_Example.xml"),
- "utf8"
- )
- )
+ new URL("RSS_Example.xml", documents),
+ "utf8",
+ ),
+ ),
).toMatchSnapshot());
it("(atomFeed)", async () =>
expect(
parseFeed(
await fs.readFile(
- path.join(documents, "Atom_Example.xml"),
- "utf8"
- )
- )
+ new URL("Atom_Example.xml", documents),
+ "utf8",
+ ),
+ ),
).toMatchSnapshot());
it("(rdfFeed)", async () =>
expect(
parseFeed(
await fs.readFile(
- path.join(documents, "RDF_Example.xml"),
- "utf8"
- )
- )
+ new URL("RDF_Example.xml", documents),
+ "utf8",
+ ),
+ ),
).toMatchSnapshot());
});
diff --git a/src/__tests__/events.ts b/src/Parser.events.spec.ts
index 3a3bdf1..40c4c85 100644
--- a/src/__tests__/events.ts
+++ b/src/Parser.events.spec.ts
@@ -1,10 +1,10 @@
-import { Parser, type ParserOptions } from "../index.js";
-import * as helper from "../__fixtures__/test-helper.js";
+import { describe, expect, it, vi } from "vitest";
+import * as helper from "./__fixtures__/testHelper.js";
+import { Parser, type ParserOptions } from "./Parser.js";
/**
* Write to the parser twice, once a bytes, once as a single blob. Then check
* that we received the expected events.
- *
* @internal
* @param input Data to write.
* @param options Parser options.
@@ -44,7 +44,7 @@ describe("Events", () => {
it("Template script tags", () =>
runTest(
- '<p><script type="text/template"><h1>Heading1</h1></script></p>'
+ '<p><script type="text/template"><h1>Heading1</h1></script></p>',
));
it("Lowercase tags", () =>
@@ -57,7 +57,7 @@ describe("Events", () => {
it("CDATA (inside special)", () =>
runTest(
- "<script>/*<![CDATA[*/ asdf ><asdf></adsf><> fo/*]]>*/</script>"
+ "<script>/*<![CDATA[*/ asdf ><asdf></adsf><> fo/*]]>*/</script>",
));
it("leading lt", () => runTest(">a>"));
@@ -80,6 +80,12 @@ describe("Events", () => {
it("end slash: non-void element ending with />, recognizeSelfClosing=true", () =>
runTest("<xx / ><p>Hold the line.", { recognizeSelfClosing: true }));
+ it("end slash: special tag ending with />, recognizeSelfClosing=true", () =>
+ runTest("<script/><b>x</b>", { recognizeSelfClosing: true }));
+
+ it("end slash: plaintext tag ending with />, recognizeSelfClosing=true", () =>
+ runTest("<plaintext/><b>x</b>", { recognizeSelfClosing: true }));
+
it("end slash: as part of attrib value of void element", () =>
runTest("<img src=gif.com/123/><p>Hold the line."));
@@ -88,12 +94,12 @@ describe("Events", () => {
it("Implicit close tags", () =>
runTest(
- "<ol><li class=test><div><table style=width:100%><tr><th>TH<td colspan=2><h3>Heading</h3><tr><td><div>Div</div><td><div>Div2</div></table></div><li><div><h3>Heading 2</h3></div></li></ol><p>Para<h4>Heading 4</h4><p><ul><li>Hi<li>bye</ul>"
+ "<ol><li class=test><div><table style=width:100%><tr><th>TH<td colspan=2><h3>Heading</h3><tr><td><div>Div</div><td><div>Div2</div></table></div><li><div><h3>Heading 2</h3></div></li></ol><p>Para<h4>Heading 4</h4><p><ul><li>Hi<li>bye</ul>",
));
it("attributes (no white space, no value, no quotes)", () =>
runTest(
- '<button class="test0"title="test1" disabled value=test2>adsf</button>'
+ '<button class="test0"title="test1" disabled value=test2>adsf</button>',
));
it("crazy attribute", () => runTest("<p < = '' FAIL>stuff</p><a"));
@@ -131,7 +137,7 @@ describe("Events", () => {
it("entity in attribute", () =>
runTest(
- "<a href='http://example.com/p&#x61;#x61ge?param=value&param2&param3=&lt;val&; & &'>"
+ "<a href='http://example.com/p&#x61;#x61ge?param=value&param2&param3=&lt;val&; & &'>",
));
it("double brackets", () =>
@@ -141,7 +147,7 @@ describe("Events", () => {
it("Special special tags", () =>
runTest(
- "<tItLe><b>foo</b><title></TiTlE><sitle><b></b></sitle><ttyle><b></b></ttyle><sCriPT></scripter</soo</sCript><STyLE></styler</STylE><sCiPt><stylee><scriptee><soo>"
+ "<tItLe><b>foo</b><title></TiTlE><sitle><b></b></sitle><ttyle><b></b></ttyle><sCriPT></scripter</soo</sCript><STyLE></styler</STylE><sCiPt><stylee><scriptee><soo>",
));
it("Empty tag name", () => runTest("< ></ >"));
@@ -162,8 +168,91 @@ describe("Events", () => {
it("Comment false ending", () => runTest("<!-- a-b-> -->"));
+ it("Short bang comment", () => runTest("<!--!>"));
+
+ it("Abruptly closed comment", () => runTest("<!--->text"));
+
+ it("Empty EOF comment", () => runTest("<!--"));
+
+ it("HTML bogus comments", () => runTest("<?foo><!foo>"));
+
+ it("Short HTML bogus comments", () => runTest("<!><!->"));
+
+ it("Bogus comment after </ and whitespace", () => runTest("<div></ div>"));
+
+ it("Empty closing tag", () => runTest("</>"));
+
+ it("Empty closing tag, xmlMode=true", () =>
+ runTest("</>", { xmlMode: true }));
+
+ it("Doctype without whitespace", () => runTest("<!DOCTYPEhtml>"));
+
+ it("Foreign CDATA in SVG", () => runTest("<svg><![CDATA[a<b]]></svg>"));
+
+ it("Foreign CDATA in MathML", () =>
+ runTest("<math><![CDATA[a<b]]></math>"));
+
+ it("SVG title is not HTML special", () =>
+ runTest("<svg><title>&amp;<b>x</b></title></svg>"));
+
+ it("SVG tag case adjustment", () =>
+ runTest("<svg><foreignObject><b>x</b></foreignObject></svg>"));
+
+ it("SVG integration point closing with unclosed child", () =>
+ runTest("<svg><foreignObject><div>x</foreignObject></svg>after"));
+
+ it("Content after SVG integration point", () =>
+ runTest("<svg><foreignObject><b>x</b></foreignObject><rect/></svg>"));
+
+ it("Stray </svg> does not break foreign context", () =>
+ runTest("</svg><script><b>not a tag</b></script>"));
+
+ it("Implicit close of nested foreign elements", () =>
+ runTest("<svg><math><mi>text</svg><script><b>x</b></script>"));
+
+ it("Self-closing foreign element with recognizeSelfClosing", () =>
+ runTest("<svg/><script><b>x</b></script>", {
+ recognizeSelfClosing: true,
+ }));
+
+ it("HTML image alias", () => runTest("<image></image>"));
+
+ it("SVG image is not aliased", () => runTest("<svg><image></image></svg>"));
+
+ it("EOF bogus comments", () => runTest("<!-"));
+
+ it("EOF empty bogus comment", () => runTest("<!"));
+
+ it("EOF partial doctype", () => runTest("<!DOC"));
+
+ it("EOF complete doctype", () => runTest("<!DOCTYPE"));
+
+ it("EOF incomplete doctype", () => runTest("<!DOCTYPE h"));
+
+ it("EOF processing instruction", () => runTest("<?"));
+
+ it("Partial CDATA match with >", () => runTest("<![CD>"));
+
+ it("Unclosed CDATA at EOF", () => runTest("<![CDATA[foo"));
+
+ it("Empty unclosed CDATA at EOF", () => runTest("<![CDATA["));
+
+ it("Partial CDATA at EOF", () => runTest("<![C"));
+
it("Scripts ending with <", () => runTest("<script><</script>"));
+ it("Special end tags ending with /> in script", () =>
+ runTest("<script>safe</script/><img>"));
+
+ it("Special end tags ending with /> in style", () =>
+ runTest("<style>safe</style/><img>"));
+
+ it("Special end tags ending with /> in title", () =>
+ runTest("<title>safe</title/><img>"));
+
+ it("Special end tags ending with /> in textarea", () =>
+ runTest("<textarea>safe</textarea/><img>"));
+
it("CDATA more edge-cases", () =>
runTest("<![CDATA[foo]bar]>baz]]>", { recognizeCDATA: true }));
@@ -174,14 +263,18 @@ describe("Events", () => {
it("entity in attribute (#276)", () =>
runTest(
- '<img src="?&image_uri=1&&image;=2&image=3"/>?&image_uri=1&&image;=2&image=3'
+ '<img src="?&image_uri=1&&image;=2&image=3"/>?&image_uri=1&&image;=2&image=3',
));
it("entity in title (#592)", () => runTest("<title>the &quot;title&quot"));
+ it("entity in textarea", () => runTest("<textarea>&amp;</textarea>"));
+
it("entity in title - decodeEntities=false (#592)", () =>
runTest("<title>the &quot;title&quot;", { decodeEntities: false }));
+ it("plaintext", () => runTest("<plaintext><b>hi</b>"));
+
it("</title> in <script> (#745)", () =>
runTest("<script>'</title>'</script>"));
@@ -195,7 +288,7 @@ describe("Events", () => {
it("Start & end indices from domhandler", () =>
runTest(
- "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> "
+ "<!DOCTYPE html> <html> <title>The Title</title> <body class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
));
it("Self-closing indices (#941)", () =>
@@ -206,13 +299,13 @@ describe("Events", () => {
it("Attribute in XML (see #1350)", () =>
runTest(
'<Page\n title="Hello world"\n actionBarVisible="false"/>',
- { xmlMode: true }
+ { xmlMode: true },
));
});
describe("Helper", () => {
it("should handle errors", () => {
- const eventCallback = jest.fn();
+ const eventCallback = vi.fn();
const parser = new Parser(helper.getEventCollector(eventCallback));
parser.end();
@@ -221,7 +314,7 @@ describe("Helper", () => {
expect(eventCallback).toHaveBeenCalledTimes(2);
expect(eventCallback).toHaveBeenNthCalledWith(1, null, []);
expect(eventCallback).toHaveBeenLastCalledWith(
- new Error(".write() after done!")
+ new Error(".write() after done!"),
);
});
});
diff --git a/src/Parser.spec.ts b/src/Parser.spec.ts
index da8a2b8..fe3fb89 100644
--- a/src/Parser.spec.ts
+++ b/src/Parser.spec.ts
@@ -1,9 +1,10 @@
+import { describe, expect, it, vi } from "vitest";
import { Parser, Tokenizer } from "./index.js";
import type { Handler } from "./Parser.js";
describe("API", () => {
- test("should work without callbacks", () => {
- const cbs: Partial<Handler> = { onerror: jest.fn() };
+ it("should work without callbacks", () => {
+ const cbs: Partial<Handler> = { onerror: vi.fn() };
const p = new Parser(cbs, {
xmlMode: true,
lowerCaseAttributeNames: true,
@@ -16,11 +17,11 @@ describe("API", () => {
p.end();
p.write("foo");
expect(cbs.onerror).toHaveBeenLastCalledWith(
- new Error(".write() after done!")
+ new Error(".write() after done!"),
);
p.end();
expect(cbs.onerror).toHaveBeenLastCalledWith(
- new Error(".end() after done!")
+ new Error(".end() after done!"),
);
// Should ignore the error if there is no callback
@@ -30,13 +31,13 @@ describe("API", () => {
p.reset();
// Remove method
- cbs.onopentag = jest.fn();
+ cbs.onopentag = vi.fn();
p.write("<a foo");
delete cbs.onopentag;
p.write(">");
// Pause/resume
- const onText = jest.fn();
+ const onText = vi.fn();
cbs.ontext = onText;
p.pause();
p.write("foo");
@@ -55,8 +56,8 @@ describe("API", () => {
expect(onText).toHaveBeenLastCalledWith("bar");
});
- test("should back out of numeric entities (#125)", () => {
- const onend = jest.fn();
+ it("should back out of numeric entities (#125)", () => {
+ const onend = vi.fn();
let text = "";
const p = new Parser({
ontext(data) {
@@ -79,9 +80,9 @@ describe("API", () => {
expect(text).toBe("0&#xn");
});
- test("should not have the start index be greater than the end index", () => {
- const onopentag = jest.fn();
- const onclosetag = jest.fn();
+ it("should not have the start index be greater than the end index", () => {
+ const onopentag = vi.fn();
+ const onclosetag = vi.fn();
const p = new Parser({
onopentag(tag) {
@@ -109,7 +110,39 @@ describe("API", () => {
expect(onclosetag).toHaveBeenNthCalledWith(2, "hr", 9);
});
- test("should update the position when a single tag is spread across multiple chunks", () => {
+ it("should preserve declaration names outside of HTML mode", () => {
+ const onprocessinginstruction = vi.fn();
+
+ new Parser(
+ {
+ onprocessinginstruction,
+ },
+ { xmlMode: true },
+ ).end("<!DOCTYPEhtml>");
+
+ expect(onprocessinginstruction).toHaveBeenCalledWith(
+ "!DOCTYPEhtml",
+ "!DOCTYPEhtml",
+ );
+ });
+
+ it("should preserve declaration casing when lowerCaseTags is disabled", () => {
+ const onprocessinginstruction = vi.fn();
+
+ new Parser(
+ {
+ onprocessinginstruction,
+ },
+ { lowerCaseTags: false },
+ ).end("<!DOCTYPEhtml>");
+
+ expect(onprocessinginstruction).toHaveBeenCalledWith(
+ "!DOCTYPE",
+ "!DOCTYPEhtml",
+ );
+ });
+
+ it("should update the position when a single tag is spread across multiple chunks", () => {
let called = false;
const p = new Parser({
onopentag() {
@@ -125,7 +158,7 @@ describe("API", () => {
expect(called).toBe(true);
});
- test("should have the correct position for implied opening tags", () => {
+ it("should have the correct position for implied opening tags", () => {
let called = false;
const p = new Parser({
onopentag() {
@@ -139,14 +172,14 @@ describe("API", () => {
expect(called).toBe(true);
});
- test("should parse <__proto__> (#387)", () => {
+ it("should parse <__proto__> (#387)", () => {
const p = new Parser(null);
// Should not throw
- p.parseChunk("<__proto__>");
+ p.write("<__proto__>");
});
- test("should support custom tokenizer", () => {
+ it("should support custom tokenizer", () => {
class CustomTokenizer extends Tokenizer {}
const p = new Parser(
@@ -156,8 +189,8 @@ describe("API", () => {
expect(parser.tokenizer).toBeInstanceOf(CustomTokenizer);
},
},
- { Tokenizer: CustomTokenizer }
+ { Tokenizer: CustomTokenizer },
);
- p.done();
+ p.end();
});
});
diff --git a/src/Parser.ts b/src/Parser.ts
index a3cfbbe..800ca0e 100644
--- a/src/Parser.ts
+++ b/src/Parser.ts
@@ -1,5 +1,6 @@
-import Tokenizer, { Callbacks, QuoteType } from "./Tokenizer.js";
-import { fromCodePoint } from "entities/lib/decode.js";
+const { fromCodePoint } = String;
+
+import Tokenizer, { type Callbacks, QuoteType } from "./Tokenizer.js";
const formTags = new Set([
"input",
@@ -11,6 +12,7 @@ const formTags = new Set([
"textarea",
]);
const pTag = new Set(["p"]);
+const headingTags = new Set(["h1", "h2", "h3", "h4", "h5", "h6", "p"]);
const tableSectionTags = new Set(["thead", "tbody"]);
const ddtTags = new Set(["dd", "dt"]);
const rtpTags = new Set(["rt", "rp"]);
@@ -20,14 +22,15 @@ const openImpliesClose = new Map<string, Set<string>>([
["th", new Set(["th"])],
["td", new Set(["thead", "th", "td"])],
["body", new Set(["head", "link", "script"])],
+ ["a", new Set(["a"])],
["li", new Set(["li"])],
["p", pTag],
- ["h1", pTag],
- ["h2", pTag],
- ["h3", pTag],
- ["h4", pTag],
- ["h5", pTag],
- ["h6", pTag],
+ ["h1", headingTags],
+ ["h2", headingTags],
+ ["h3", headingTags],
+ ["h4", headingTags],
+ ["h5", headingTags],
+ ["h6", headingTags],
["select", formTags],
["input", formTags],
["output", formTags],
@@ -65,6 +68,8 @@ const openImpliesClose = new Map<string, Set<string>>([
["tfoot", tableSectionTags],
]);
+const DOCUMENT_TYPE = "doctype";
+
const voidElements = new Set([
"area",
"base",
@@ -89,6 +94,12 @@ const voidElements = new Set([
const foreignContextElements = new Set(["math", "svg"]);
+/**
+ * Elements that can be used to integrate HTML content within foreign namespaces (e.g., SVG or MathML).
+ *
+ * Entries must use the SVG-adjusted casing (e.g. "foreignObject" not
+ * "foreignobject") since they are compared against adjusted tag names.
+ */
const htmlIntegrationElements = new Set([
"mi",
"mo",
@@ -96,39 +107,84 @@ const htmlIntegrationElements = new Set([
"ms",
"mtext",
"annotation-xml",
- "foreignobject",
+ "foreignObject",
"desc",
"title",
]);
+const svgTagNameAdjustments = new Map<string, string>([
+ ["altglyph", "altGlyph"],
+ ["altglyphdef", "altGlyphDef"],
+ ["altglyphitem", "altGlyphItem"],
+ ["animatecolor", "animateColor"],
+ ["animatemotion", "animateMotion"],
+ ["animatetransform", "animateTransform"],
+ ["clippath", "clipPath"],
+ ["feblend", "feBlend"],
+ ["fecolormatrix", "feColorMatrix"],
+ ["fecomponenttransfer", "feComponentTransfer"],
+ ["fecomposite", "feComposite"],
+ ["feconvolvematrix", "feConvolveMatrix"],
+ ["fediffuselighting", "feDiffuseLighting"],
+ ["fedisplacementmap", "feDisplacementMap"],
+ ["fedistantlight", "feDistantLight"],
+ ["fedropshadow", "feDropShadow"],
+ ["feflood", "feFlood"],
+ ["fefunca", "feFuncA"],
+ ["fefuncb", "feFuncB"],
+ ["fefuncg", "feFuncG"],
+ ["fefuncr", "feFuncR"],
+ ["fegaussianblur", "feGaussianBlur"],
+ ["feimage", "feImage"],
+ ["femerge", "feMerge"],
+ ["femergenode", "feMergeNode"],
+ ["femorphology", "feMorphology"],
+ ["feoffset", "feOffset"],
+ ["fepointlight", "fePointLight"],
+ ["fespecularlighting", "feSpecularLighting"],
+ ["fespotlight", "feSpotLight"],
+ ["fetile", "feTile"],
+ ["feturbulence", "feTurbulence"],
+ ["foreignobject", "foreignObject"],
+ ["glyphref", "glyphRef"],
+ ["lineargradient", "linearGradient"],
+ ["radialgradient", "radialGradient"],
+ ["textpath", "textPath"],
+]);
+
+const enum ForeignContext {
+ None,
+ Svg,
+ MathML,
+}
+
+/**
+ * Options for the streaming HTML/XML parser.
+ */
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;
@@ -136,7 +192,6 @@ export interface ParserOptions {
/**
* 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;
@@ -144,7 +199,6 @@ export interface ParserOptions {
/**
* 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;
@@ -155,6 +209,9 @@ export interface ParserOptions {
Tokenizer?: typeof Tokenizer;
}
+/**
+ * Parser callback interface used by the tokenizer.
+ */
export interface Handler {
onparserinit(parser: Parser): void;
@@ -179,12 +236,12 @@ export interface Handler {
onattribute(
name: string,
value: string,
- quote?: string | undefined | null
+ quote?: string | undefined | null,
): void;
onopentag(
name: string,
attribs: { [s: string]: string },
- isImplied: boolean
+ isImplied: boolean,
): void;
ontext(data: string): void;
oncomment(data: string): void;
@@ -196,11 +253,14 @@ export interface Handler {
const reNameEnd = /\s|\//;
+/**
+ * Incremental parser implementation.
+ */
export class Parser implements Callbacks {
/** The start index of the last event. */
- public startIndex = 0;
+ startIndex = 0;
/** The end index of the last event. */
- public endIndex = 0;
+ endIndex = 0;
/**
* Store the start index of the current open tag,
* so we can update the start index for attributes.
@@ -212,11 +272,11 @@ export class Parser implements Callbacks {
private attribvalue = "";
private attribs: null | { [key: string]: string } = null;
private readonly stack: string[] = [];
- /** Determines whether self-closing tags are recognized. */
- private readonly foreignContext: boolean[];
+ private readonly foreignContext: ForeignContext[];
private readonly cbs: Partial<Handler>;
private readonly lowerCaseTagNames: boolean;
private readonly lowerCaseAttributeNames: boolean;
+ private readonly recognizeSelfClosing: boolean;
/** We are parsing HTML. Inverse of the `xmlMode` option. */
private readonly htmlMode: boolean;
private readonly tokenizer: Tokenizer;
@@ -230,24 +290,30 @@ export class Parser implements Callbacks {
constructor(
cbs?: Partial<Handler> | null,
- private readonly options: ParserOptions = {}
+ private readonly options: ParserOptions = {},
) {
this.cbs = cbs ?? {};
this.htmlMode = !this.options.xmlMode;
this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;
this.lowerCaseAttributeNames =
options.lowerCaseAttributeNames ?? this.htmlMode;
+ this.recognizeSelfClosing =
+ options.recognizeSelfClosing ?? !this.htmlMode;
this.tokenizer = new (options.Tokenizer ?? Tokenizer)(
this.options,
- this
+ this,
);
- this.foreignContext = [!this.htmlMode];
+ this.foreignContext = [ForeignContext.None];
this.cbs.onparserinit?.(this);
}
// Tokenizer event handlers
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
ontext(start: number, endIndex: number): void {
const data = this.getSlice(start, endIndex);
this.endIndex = endIndex - 1;
@@ -255,54 +321,116 @@ export class Parser implements Callbacks {
this.startIndex = endIndex;
}
- /** @internal */
+ /**
+ * @param cp Current Unicode code point.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
ontextentity(cp: number, endIndex: number): void {
this.endIndex = endIndex - 1;
this.cbs.ontext?.(fromCodePoint(cp));
this.startIndex = endIndex;
}
+ /** @internal */
+ isInForeignContext(): boolean {
+ return this.foreignContext[0] !== ForeignContext.None;
+ }
+
/**
* Checks if the current tag is a void element. Override this if you want
* to specify your own additional void elements.
+ * @param name Name of the pseudo selector.
*/
protected isVoidElement(name: string): boolean {
return this.htmlMode && voidElements.has(name);
}
- /** @internal */
- onopentagname(start: number, endIndex: number): void {
- this.endIndex = endIndex;
+ /**
+ * Read a tag name from the buffer.
+ *
+ * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name
+ * is lowercased and may be adjusted for SVG casing or the `image` → `img`
+ * alias.
+ * @param start Start index of the tag name in the buffer.
+ * @param endIndex End index of the tag name in the buffer.
+ */
+ private readTagName(start: number, endIndex: number): string {
+ const name = this.lowerCaseTagNames
+ ? this.getSlice(start, endIndex).toLowerCase()
+ : this.getSlice(start, endIndex);
- let name = this.getSlice(start, endIndex);
+ if (!(this.lowerCaseTagNames && this.htmlMode)) {
+ return name;
+ }
- if (this.lowerCaseTagNames) {
- name = name.toLowerCase();
+ if (this.foreignContext[0] === ForeignContext.Svg) {
+ return svgTagNameAdjustments.get(name) ?? name;
}
- this.emitOpenTag(name);
+ /*
+ * Closing tags for SVG elements inside HTML integration points
+ * (e.g. </foreignObject> while inside its own content) need case
+ * adjustment so the name matches what was pushed to the stack.
+ * `foreignContext.length > 1` means a foreign ancestor exists —
+ * the base [None] entry plus at least one pushed context.
+ */
+ if (this.foreignContext.length > 1) {
+ const adjusted = svgTagNameAdjustments.get(name);
+ if (adjusted !== undefined && this.stack.includes(adjusted)) {
+ return adjusted;
+ }
+ }
+
+ if (!this.isInForeignContext()) {
+ return name === "image" ? "img" : name;
+ }
+
+ return name;
+ }
+
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
+ onopentagname(start: number, endIndex: number): void {
+ this.endIndex = endIndex;
+ this.emitOpenTag(this.readTagName(start, endIndex));
}
private emitOpenTag(name: string) {
this.openTagStart = this.startIndex;
this.tagname = name;
+ /*
+ * The spec ignores a second <form> when one is already open.
+ * Setting tagname to "" suppresses all downstream effects: attribs
+ * stays null so endOpenTag is a no-op, and closeCurrentTag can't
+ * match "" on the stack.
+ */
+ if (this.htmlMode && name === "form" && this.stack.includes("form")) {
+ this.tagname = "";
+ return;
+ }
+
const impliesClose = this.htmlMode && openImpliesClose.get(name);
if (impliesClose) {
while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
- const element = this.stack.shift()!;
- this.cbs.onclosetag?.(element, true);
+ this.popElement(true);
}
}
if (!this.isVoidElement(name)) {
this.stack.unshift(name);
if (this.htmlMode) {
- if (foreignContextElements.has(name)) {
- this.foreignContext.unshift(true);
+ if (name === "svg") {
+ this.foreignContext.unshift(ForeignContext.Svg);
+ } else if (name === "math") {
+ this.foreignContext.unshift(ForeignContext.MathML);
} else if (htmlIntegrationElements.has(name)) {
- this.foreignContext.unshift(false);
+ this.foreignContext.unshift(ForeignContext.None);
}
}
}
@@ -324,7 +452,10 @@ export class Parser implements Callbacks {
this.tagname = "";
}
- /** @internal */
+ /**
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onopentagend(endIndex: number): void {
this.endIndex = endIndex;
this.endOpenTag(false);
@@ -333,32 +464,22 @@ export class Parser implements Callbacks {
this.startIndex = endIndex + 1;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onclosetag(start: number, endIndex: number): void {
this.endIndex = endIndex;
-
- let name = this.getSlice(start, endIndex);
-
- if (this.lowerCaseTagNames) {
- name = name.toLowerCase();
- }
-
- if (
- this.htmlMode &&
- (foreignContextElements.has(name) ||
- htmlIntegrationElements.has(name))
- ) {
- this.foreignContext.shift();
- }
+ const name = this.readTagName(start, endIndex);
if (!this.isVoidElement(name)) {
const pos = this.stack.indexOf(name);
if (pos !== -1) {
- for (let index = 0; index <= pos; index++) {
- const element = this.stack.shift()!;
- // We know the stack has sufficient elements.
- this.cbs.onclosetag?.(element, index !== pos);
+ for (let index = 0; index < pos; index++) {
+ this.popElement(true);
}
+ this.popElement(false);
} else if (this.htmlMode && name === "p") {
// Implicit open before close
this.emitOpenTag("p");
@@ -375,10 +496,13 @@ export class Parser implements Callbacks {
this.startIndex = endIndex + 1;
}
- /** @internal */
+ /**
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onselfclosingtag(endIndex: number): void {
this.endIndex = endIndex;
- if (this.options.recognizeSelfClosing || this.foreignContext[0]) {
+ if (this.recognizeSelfClosing || this.isInForeignContext()) {
this.closeCurrentTag(false);
// Set `startIndex` for next node
@@ -389,19 +513,39 @@ export class Parser implements Callbacks {
}
}
+ /**
+ * Pop the top element off the stack, emit a close event, and maintain
+ * the foreign context stack.
+ * @param implied Whether this close is implied (not from an explicit end tag).
+ */
+ private popElement(implied: boolean): void {
+ // biome-ignore lint/style/noNonNullAssertion: The element is guaranteed to exist.
+ const element = this.stack.shift()!;
+ if (
+ this.htmlMode &&
+ (foreignContextElements.has(element) ||
+ htmlIntegrationElements.has(element))
+ ) {
+ this.foreignContext.shift();
+ }
+ this.cbs.onclosetag?.(element, implied);
+ }
+
private closeCurrentTag(isOpenImplied: boolean) {
const name = this.tagname;
this.endOpenTag(isOpenImplied);
// Self-closing tags will be on the top of the stack
if (this.stack[0] === name) {
- // If the opening tag isn't implied, the closing tag has to be implied.
- this.cbs.onclosetag?.(name, !isOpenImplied);
- this.stack.shift();
+ this.popElement(!isOpenImplied);
}
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onattribname(start: number, endIndex: number): void {
this.startIndex = start;
const name = this.getSlice(start, endIndex);
@@ -411,17 +555,28 @@ export class Parser implements Callbacks {
: name;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onattribdata(start: number, endIndex: number): void {
this.attribvalue += this.getSlice(start, endIndex);
}
- /** @internal */
+ /**
+ * @param cp Current Unicode code point.
+ * @internal
+ */
onattribentity(cp: number): void {
this.attribvalue += fromCodePoint(cp);
}
- /** @internal */
+ /**
+ * @param quote Quote type used for the current attribute.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onattribend(quote: QuoteType, endIndex: number): void {
this.endIndex = endIndex;
@@ -431,16 +586,13 @@ export class Parser implements Callbacks {
quote === QuoteType.Double
? '"'
: quote === QuoteType.Single
- ? "'"
- : quote === QuoteType.NoValue
- ? undefined
- : null
+ ? "'"
+ : quote === QuoteType.NoValue
+ ? undefined
+ : null,
);
- if (
- this.attribs &&
- !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)
- ) {
+ if (this.attribs && !Object.hasOwn(this.attribs, this.attribname)) {
this.attribs[this.attribname] = this.attribvalue;
}
this.attribvalue = "";
@@ -457,13 +609,25 @@ export class Parser implements Callbacks {
return name;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
ondeclaration(start: number, endIndex: number): void {
this.endIndex = endIndex;
const value = this.getSlice(start, endIndex);
if (this.cbs.onprocessinginstruction) {
- const name = this.getInstructionName(value);
+ /*
+ * In HTML mode, ondeclaration is only reached for DOCTYPE
+ * (the tokenizer routes everything else to bogus comments).
+ */
+ const name = this.htmlMode
+ ? this.lowerCaseTagNames
+ ? DOCUMENT_TYPE
+ : value.slice(0, DOCUMENT_TYPE.length)
+ : this.getInstructionName(value);
this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
}
@@ -471,7 +635,11 @@ export class Parser implements Callbacks {
this.startIndex = endIndex + 1;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @internal
+ */
onprocessinginstruction(start: number, endIndex: number): void {
this.endIndex = endIndex;
const value = this.getSlice(start, endIndex);
@@ -485,7 +653,12 @@ export class Parser implements Callbacks {
this.startIndex = endIndex + 1;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @param offset Offset applied when computing parser indices.
+ * @internal
+ */
oncomment(start: number, endIndex: number, offset: number): void {
this.endIndex = endIndex;
@@ -496,7 +669,12 @@ export class Parser implements Callbacks {
this.startIndex = endIndex + 1;
}
- /** @internal */
+ /**
+ * @param start Start index for the current parser event.
+ * @param endIndex End index for the current parser event.
+ * @param offset Offset applied when computing parser indices.
+ * @internal
+ */
oncdata(start: number, endIndex: number, offset: number): void {
this.endIndex = endIndex;
const value = this.getSlice(start, endIndex - offset);
@@ -505,6 +683,8 @@ export class Parser implements Callbacks {
this.cbs.oncdatastart?.();
this.cbs.ontext?.(value);
this.cbs.oncdataend?.();
+ } else if (this.isInForeignContext()) {
+ this.cbs.ontext?.(value);
} else {
this.cbs.oncomment?.(`[CDATA[${value}]]`);
this.cbs.oncommentend?.();
@@ -529,11 +709,12 @@ export class Parser implements Callbacks {
/**
* Resets the parser to a blank state, ready to parse a new HTML document
*/
- public reset(): void {
+ reset(): void {
this.cbs.onreset?.();
this.tokenizer.reset();
this.tagname = "";
this.attribname = "";
+ this.attribvalue = "";
this.attribs = null;
this.stack.length = 0;
this.startIndex = 0;
@@ -541,7 +722,7 @@ export class Parser implements Callbacks {
this.cbs.onparserinit?.(this);
this.buffers.length = 0;
this.foreignContext.length = 0;
- this.foreignContext.unshift(!this.htmlMode);
+ this.foreignContext.unshift(ForeignContext.None);
this.bufferOffset = 0;
this.writeIndex = 0;
this.ended = false;
@@ -550,22 +731,25 @@ export class Parser implements Callbacks {
/**
* Resets the parser, then parses a complete document and
* pushes it to the handler.
- *
* @param data Document to parse.
*/
- public parseComplete(data: string): void {
+ parseComplete(data: string): void {
this.reset();
this.end(data);
}
private getSlice(start: number, end: number) {
+ if (start === end) {
+ return "";
+ }
+
while (start - this.bufferOffset >= this.buffers[0].length) {
this.shiftBuffer();
}
let slice = this.buffers[0].slice(
start - this.bufferOffset,
- end - this.bufferOffset
+ end - this.bufferOffset,
);
while (end - this.bufferOffset > this.buffers[0].length) {
@@ -584,10 +768,9 @@ export class Parser implements Callbacks {
/**
* Parses a chunk of data and calls the corresponding callbacks.
- *
* @param chunk Chunk to parse.
*/
- public write(chunk: string): void {
+ write(chunk: string): void {
if (this.ended) {
this.cbs.onerror?.(new Error(".write() after done!"));
return;
@@ -602,10 +785,9 @@ export class Parser implements Callbacks {
/**
* Parses the end of the buffer and clears the stack, calls onend.
- *
* @param chunk Optional final chunk to parse.
*/
- public end(chunk?: string): void {
+ end(chunk?: string): void {
if (this.ended) {
this.cbs.onerror?.(new Error(".end() after done!"));
return;
@@ -619,14 +801,14 @@ export class Parser implements Callbacks {
/**
* Pauses parsing. The parser won't emit events until `resume` is called.
*/
- public pause(): void {
+ pause(): void {
this.tokenizer.pause();
}
/**
* Resumes parsing after `pause` was called.
*/
- public resume(): void {
+ resume(): void {
this.tokenizer.resume();
while (
@@ -638,23 +820,4 @@ export class Parser implements Callbacks {
if (this.ended) this.tokenizer.end();
}
-
- /**
- * Alias of `write`, for backwards compatibility.
- *
- * @param chunk Chunk to parse.
- * @deprecated
- */
- public parseChunk(chunk: string): void {
- this.write(chunk);
- }
- /**
- * Alias of `end`, for backwards compatibility.
- *
- * @param chunk Optional final chunk to parse.
- * @deprecated
- */
- public done(chunk?: string): void {
- this.end(chunk);
- }
}
diff --git a/src/Tokenizer.spec.ts b/src/Tokenizer.spec.ts
index 4c63527..c60b8c5 100644
--- a/src/Tokenizer.spec.ts
+++ b/src/Tokenizer.spec.ts
@@ -1,29 +1,40 @@
+import { describe, expect, it } from "vitest";
import { Tokenizer } from "./index.js";
import type { Callbacks } from "./Tokenizer.js";
-function tokenize(data: string, options = {}) {
+function tokenize(
+ data: string | ((tokenizer: Tokenizer, log: unknown[][]) => void),
+ options = {},
+) {
const log: unknown[][] = [];
const tokenizer = new Tokenizer(
options,
new Proxy(
- {},
+ { isInForeignContext: () => false },
{
- get(_, property) {
+ get(target, property) {
+ if (property === "isInForeignContext") {
+ return target.isInForeignContext;
+ }
return (...values: unknown[]) =>
log.push([property, ...values]);
},
- }
- ) as Callbacks
+ },
+ ) as Callbacks,
);
- tokenizer.write(data);
- tokenizer.end();
+ if (typeof data === "function") {
+ data(tokenizer, log);
+ } else {
+ tokenizer.write(data);
+ tokenizer.end();
+ }
return log;
}
describe("Tokenizer", () => {
- describe("should support self-closing special tags", () => {
+ describe("should ignore self-closing slash in text-only HTML tags", () => {
it("for self-closing script tag", () => {
expect(tokenize("<script /><div></div>")).toMatchSnapshot();
});
@@ -33,6 +44,24 @@ describe("Tokenizer", () => {
it("for self-closing title tag", () => {
expect(tokenize("<title /><div></div>")).toMatchSnapshot();
});
+ it("for self-closing textarea tag", () => {
+ expect(tokenize("<textarea /><div></div>")).toMatchSnapshot();
+ });
+ it("for self-closing xmp tag", () => {
+ expect(tokenize("<xmp /><div></div>")).toMatchSnapshot();
+ });
+ it("for self-closing plaintext tag", () => {
+ expect(tokenize("<plaintext /><div></div>")).toMatchSnapshot();
+ });
+ it("for self-closing iframe tag", () => {
+ expect(tokenize("<iframe /><div></div>")).toMatchSnapshot();
+ });
+ it("for self-closing noembed tag", () => {
+ expect(tokenize("<noembed /><div></div>")).toMatchSnapshot();
+ });
+ it("for self-closing noframes tag", () => {
+ expect(tokenize("<noframes /><div></div>")).toMatchSnapshot();
+ });
});
describe("should support standard special tags", () => {
@@ -45,6 +74,84 @@ describe("Tokenizer", () => {
it("for normal sitle tag", () => {
expect(tokenize("<title></title><div></div>")).toMatchSnapshot();
});
+ it("for normal textarea tag", () => {
+ expect(
+ tokenize("<textarea></textarea><div></div>"),
+ ).toMatchSnapshot();
+ });
+ it("for normal xmp tag", () => {
+ expect(tokenize("<xmp></xmp><div></div>")).toMatchSnapshot();
+ });
+ });
+
+ describe("should treat html inside special tags as text", () => {
+ it("for div inside script tag", () => {
+ expect(tokenize("<script><div></div></script>")).toMatchSnapshot();
+ });
+ it("for div inside style tag", () => {
+ expect(tokenize("<style><div></div></style>")).toMatchSnapshot();
+ });
+ it("for div inside title tag", () => {
+ expect(tokenize("<title><div></div></title>")).toMatchSnapshot();
+ });
+ it("for div inside textarea tag", () => {
+ expect(
+ tokenize("<textarea><div></div></textarea>"),
+ ).toMatchSnapshot();
+ });
+ it("for div inside xmp tag", () => {
+ expect(tokenize("<xmp><div></div></xmp>")).toMatchSnapshot();
+ });
+ });
+
+ describe("should treat html inside raw-text tags as text", () => {
+ it("for div inside iframe tag", () => {
+ expect(
+ tokenize("<iframe>&amp;<div></div></iframe>"),
+ ).toMatchSnapshot();
+ });
+ it("for div inside noembed tag", () => {
+ expect(
+ tokenize("<noembed>&amp;<div></div></noembed>"),
+ ).toMatchSnapshot();
+ });
+ it("for div inside noframes tag", () => {
+ expect(
+ tokenize("<noframes>&amp;<div></div></noframes>"),
+ ).toMatchSnapshot();
+ });
+ });
+
+ describe("should close special tags on end tags ending with />", () => {
+ it("for script tag", () => {
+ expect(tokenize("<script>safe</script/><img>")).toMatchSnapshot();
+ });
+ it("for style tag", () => {
+ expect(tokenize("<style>safe</style/><img>")).toMatchSnapshot();
+ });
+ it("for title tag", () => {
+ expect(tokenize("<title>safe</title/><img>")).toMatchSnapshot();
+ });
+ it("for textarea tag", () => {
+ expect(
+ tokenize("<textarea>safe</textarea/><img>"),
+ ).toMatchSnapshot();
+ });
+ });
+
+ describe("should correctly mark attributes", () => {
+ it("for no value attribute", () => {
+ expect(tokenize("<div aaaaaaa >")).toMatchSnapshot();
+ });
+ it("for no quotes attribute", () => {
+ expect(tokenize("<div aaa=aaa >")).toMatchSnapshot();
+ });
+ it("for single quotes attribute", () => {
+ expect(tokenize("<div aaa='a' >")).toMatchSnapshot();
+ });
+ it("for double quotes attribute", () => {
+ expect(tokenize('<div aaa="a" >')).toMatchSnapshot();
+ });
});
describe("should not break after special tag followed by an entity", () => {
@@ -54,6 +161,13 @@ describe("Tokenizer", () => {
it("for self-closing special tag", () => {
expect(tokenize("<style />&apos;<br/>")).toMatchSnapshot();
});
+ it("for recognized self-closing special tag", () => {
+ expect(
+ tokenize("<style />&apos;<br/>", {
+ recognizeSelfClosing: true,
+ }),
+ ).toMatchSnapshot();
+ });
});
describe("should handle entities", () => {
@@ -61,14 +175,14 @@ describe("Tokenizer", () => {
expect(
tokenize("&amp;&gt;&amp&lt;&uuml;&#x61;&#x62&#99;&#100&#101", {
xmlMode: true,
- })
+ }),
).toMatchSnapshot());
it("for entities in attributes (#276)", () =>
expect(
tokenize(
- '<img src="?&image_uri=1&&image;=2&image=3"/>?&image_uri=1&&image;=2&image=3'
- )
+ '<img src="?&image_uri=1&&image;=2&image=3"/>?&image_uri=1&&image;=2&image=3',
+ ),
).toMatchSnapshot());
it("for trailing legacy entity", () =>
@@ -78,14 +192,93 @@ describe("Tokenizer", () => {
expect(tokenize("&NotGreaterFullEqual;")).toMatchSnapshot());
});
+ it("should close comments on --!>", () => {
+ expect(
+ tokenize("<!-- --!><img src=x onerror=alert(1)>-->"),
+ ).toMatchSnapshot();
+ });
+
+ it("should handle abruptly closed comments", () => {
+ expect(tokenize("<!--->text")).toMatchSnapshot();
+ });
+
+ it.each(["<!>", "<!->"])("should treat %s as a bogus comment", (input) => {
+ expect(tokenize(input)).toMatchSnapshot();
+ });
+
+ it.each([
+ "<!--",
+ "<!---",
+ "<!----",
+ "<!--a-",
+ "<!--a--",
+ "<!--a--!",
+ ])("should trim unfinished HTML comment closes at EOF for %s", (input) => {
+ expect(tokenize(input)).toMatchSnapshot();
+ });
+
+ it("should treat <? and <! as bogus comments in HTML", () => {
+ expect(tokenize("<?foo><!foo>")).toMatchSnapshot();
+ });
+
+ it("should ignore empty closing tags", () => {
+ expect(tokenize("</>")).toMatchSnapshot();
+ });
+
+ it("should treat <!DOCTYPEhtml> as a declaration", () => {
+ expect(tokenize("<!DOCTYPEhtml>")).toMatchSnapshot();
+ });
+
+ it("should not treat <!--> as a complete comment in xmlMode", () => {
+ expect(
+ tokenize(
+ "<root><node>start</node><!--><node>should ignore</node><--><node>end</node></root>",
+ { xmlMode: true },
+ ),
+ ).toMatchSnapshot();
+ });
+
+ it.each([
+ "script",
+ "style",
+ "title",
+ "textarea",
+ ])("should reset after an unclosed %s tag", (tag) => {
+ expect(
+ tokenize((tokenizer, events) => {
+ tokenizer.write(`<${tag}>body{color:red}`);
+ tokenizer.end();
+ events.length = 0;
+ tokenizer.reset();
+ tokenizer.write("<div>hello</div>");
+ tokenizer.end();
+ }).map(([event]) => event),
+ ).toEqual([
+ "onopentagname",
+ "onopentagend",
+ "ontext",
+ "onclosetag",
+ "onend",
+ ]);
+ });
+
+ it("should terminate XML processing instructions on ?>", () => {
+ expect(
+ tokenize("<?target data > injected ?>", { xmlMode: true }),
+ ).toMatchSnapshot();
+ });
+
it("should not lose data when pausing", () => {
const log: unknown[][] = [];
const tokenizer = new Tokenizer(
{},
new Proxy(
- {},
+ { isInForeignContext: () => false },
{
- get(_, property) {
+ get(target, property) {
+ if (property === "isInForeignContext") {
+ return target.isInForeignContext;
+ }
return (...values: unknown[]) => {
if (property === "ontext") {
tokenizer.pause();
@@ -93,8 +286,8 @@ describe("Tokenizer", () => {
log.push([property, ...values]);
};
},
- }
- ) as Callbacks
+ },
+ ) as Callbacks,
);
tokenizer.write("&am");
diff --git a/src/Tokenizer.ts b/src/Tokenizer.ts
index 40332be..be64a32 100644
--- a/src/Tokenizer.ts
+++ b/src/Tokenizer.ts
@@ -1,9 +1,9 @@
import {
- EntityDecoder,
DecodingMode,
+ EntityDecoder,
htmlDecodeTree,
xmlDecodeTree,
-} from "entities/lib/decode.js";
+} from "entities/decode";
const enum CharCodes {
Tab = 0x9, // "\t"
@@ -64,13 +64,14 @@ const enum State {
// Comments & CDATA
BeforeComment,
CDATASequence,
+ DeclarationSequence,
InSpecialComment,
InCommentLike,
// Special tags
- BeforeSpecialS, // Decide if we deal with `<script` or `<style`
SpecialStartSequence,
InSpecialTag,
+ InPlainText,
InEntity,
}
@@ -96,6 +97,9 @@ function isASCIIAlpha(c: number): boolean {
);
}
+/**
+ * Quote style used for parsed attributes.
+ */
export enum QuoteType {
NoValue = 0,
Unquoted = 1,
@@ -103,6 +107,9 @@ export enum QuoteType {
Double = 3,
}
+/**
+ * Low-level tokenizer callback interface.
+ */
export interface Callbacks {
onattribdata(start: number, endIndex: number): void;
onattribentity(codepoint: number): void;
@@ -119,6 +126,7 @@ export interface Callbacks {
onselfclosingtag(endIndex: number): void;
ontext(start: number, endIndex: number): void;
ontextentity(codepoint: number, endIndex: number): void;
+ isInForeignContext?(): boolean;
}
/**
@@ -128,14 +136,48 @@ export interface Callbacks {
* sequences with an increased offset.
*/
const Sequences = {
+ Empty: new Uint8Array(0),
Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[
CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>
- CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`
+ CommentEnd: new Uint8Array([0x2d, 0x2d, 0x21, 0x3e]), // `--!>`
+ Doctype: new Uint8Array([0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65]), // `doctype`
+ IframeEnd: new Uint8Array([0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65]), // `</iframe`
+ NoembedEnd: new Uint8Array([
+ 0x3c, 0x2f, 0x6e, 0x6f, 0x65, 0x6d, 0x62, 0x65, 0x64,
+ ]), // `</noembed`
+ NoframesEnd: new Uint8Array([
+ 0x3c, 0x2f, 0x6e, 0x6f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73,
+ ]), // `</noframes`
+ Plaintext: new Uint8Array([
+ 0x3c, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ ]), // `</plaintext`
ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`
StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`
TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
+ TextareaEnd: new Uint8Array([
+ 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,
+ ]), // `</textarea`
+ XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`
};
+/**
+ * Maps the first lowercase character of an HTML tag name to the sequence
+ * used for special-tag detection. All sequences share a common layout
+ * where index 2 is the first tag-name character, so matching always
+ * continues from offset 3.
+ */
+const specialStartSequences = new Map<number, Uint8Array>([
+ [Sequences.IframeEnd[2], Sequences.IframeEnd],
+ [Sequences.NoembedEnd[2], Sequences.NoembedEnd],
+ [Sequences.Plaintext[2], Sequences.Plaintext],
+ [Sequences.ScriptEnd[2], Sequences.ScriptEnd],
+ [Sequences.TitleEnd[2], Sequences.TitleEnd],
+ [Sequences.XmpEnd[2], Sequences.XmpEnd],
+]);
+
+/**
+ * Tokenizer implementation used by `Parser`.
+ */
export default class Tokenizer {
/** The current state the tokenizer is in. */
private state = State.Text;
@@ -152,55 +194,64 @@ export default class Tokenizer {
/** For special parsing behavior inside of script and style tags. */
private isSpecial = false;
/** Indicates whether the tokenizer has been paused. */
- public running = true;
+ running = true;
/** The offset of the current buffer. */
private offset = 0;
private readonly xmlMode: boolean;
private readonly decodeEntities: boolean;
+ private readonly recognizeSelfClosing: boolean;
private readonly entityDecoder: EntityDecoder;
constructor(
{
xmlMode = false,
decodeEntities = true,
- }: { xmlMode?: boolean; decodeEntities?: boolean },
- private readonly cbs: Callbacks
+ recognizeSelfClosing = xmlMode,
+ }: {
+ xmlMode?: boolean;
+ decodeEntities?: boolean;
+ recognizeSelfClosing?: boolean;
+ },
+ private readonly cbs: Callbacks,
) {
this.xmlMode = xmlMode;
this.decodeEntities = decodeEntities;
+ this.recognizeSelfClosing = recognizeSelfClosing;
this.entityDecoder = new EntityDecoder(
xmlMode ? xmlDecodeTree : htmlDecodeTree,
- (cp, consumed) => this.emitCodePoint(cp, consumed)
+ (cp, consumed) => this.emitCodePoint(cp, consumed),
);
}
- public reset(): void {
+ reset(): void {
this.state = State.Text;
this.buffer = "";
this.sectionStart = 0;
this.index = 0;
this.baseState = State.Text;
- this.currentSequence = undefined!;
+ this.isSpecial = false;
+ this.currentSequence = Sequences.Empty;
+ this.sequenceIndex = 0;
this.running = true;
this.offset = 0;
}
- public write(chunk: string): void {
+ write(chunk: string): void {
this.offset += this.buffer.length;
this.buffer = chunk;
this.parse();
}
- public end(): void {
+ end(): void {
if (this.running) this.finish();
}
- public pause(): void {
+ pause(): void {
this.running = false;
}
- public resume(): void {
+ resume(): void {
this.running = true;
if (this.index < this.buffer.length + this.offset) {
this.parse();
@@ -222,67 +273,82 @@ export default class Tokenizer {
}
}
- private currentSequence: Uint8Array = undefined!;
+ private currentSequence: Uint8Array = Sequences.Empty;
private sequenceIndex = 0;
- private stateSpecialStartSequence(c: number): void {
- 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);
+ private enterTagBody(): void {
+ if (this.currentSequence === Sequences.Plaintext) {
+ this.currentSequence = Sequences.Empty;
+ this.state = State.InPlainText;
+ } else if (this.isSpecial) {
+ this.state = State.InSpecialTag;
+ this.sequenceIndex = 0;
+ } else {
+ this.state = State.Text;
+ }
}
- /** Look for an end tag. For <title> tags, also decode entities. */
- private stateInSpecialTag(c: number): void {
- 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;
- }
+ /**
+ * Match the opening tag name against an HTML text-only tag sequence.
+ *
+ * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`,
+ * `noembed`/`noframes`), so we may switch to an alternate sequence at the
+ * first distinguishing byte. On a successful full match we fall back to
+ * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or
+ * plaintext mode based on `currentSequence` / `isSpecial`.
+ * @param c Current character code point.
+ */
+ private stateSpecialStartSequence(c: number): void {
+ const lower = c | 0x20;
- this.isSpecial = false;
- this.sectionStart = endOfText + 2; // Skip over the `</`
- this.stateInClosingTagName(c);
- return; // We are done; skip the rest of the function.
+ // Still matching — check for an alternate sequence at branch points.
+ if (this.sequenceIndex < this.currentSequence.length) {
+ if (lower === this.currentSequence[this.sequenceIndex]) {
+ this.sequenceIndex++;
+ return;
}
- this.sequenceIndex = 0;
- }
+ if (this.sequenceIndex === 3) {
+ if (
+ this.currentSequence === Sequences.ScriptEnd &&
+ lower === Sequences.StyleEnd[3]
+ ) {
+ this.currentSequence = Sequences.StyleEnd;
+ this.sequenceIndex = 4;
+ return;
+ }
- 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.startEntity();
+ if (
+ this.currentSequence === Sequences.TitleEnd &&
+ lower === Sequences.TextareaEnd[3]
+ ) {
+ this.currentSequence = Sequences.TextareaEnd;
+ this.sequenceIndex = 4;
+ return;
}
- } else if (this.fastForwardTo(CharCodes.Lt)) {
- // Outside of <title> tags, we can fast-forward.
- this.sequenceIndex = 1;
+ } else if (
+ this.sequenceIndex === 4 &&
+ this.currentSequence === Sequences.NoembedEnd &&
+ lower === Sequences.NoframesEnd[4]
+ ) {
+ this.currentSequence = Sequences.NoframesEnd;
+ this.sequenceIndex = 5;
+ return;
}
- } else {
- // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
- this.sequenceIndex = Number(c === CharCodes.Lt);
+ } else if (isEndOfTagSection(c)) {
+ // Full match on a valid tag boundary — keep the sequence.
+ this.sequenceIndex = 0;
+ this.state = State.InTagName;
+ this.stateInTagName(c);
+ return;
}
+
+ // No match — abandon special-tag detection.
+ this.isSpecial = false;
+ this.currentSequence = Sequences.Empty;
+ this.sequenceIndex = 0;
+ this.state = State.InTagName;
+ this.stateInTagName(c);
}
private stateCDATASequence(c: number): void {
@@ -295,15 +361,20 @@ export default class Tokenizer {
}
} else {
this.sequenceIndex = 0;
- this.state = State.InDeclaration;
- this.stateInDeclaration(c); // Reconsume the character
+ if (this.xmlMode) {
+ this.state = State.InDeclaration;
+ this.stateInDeclaration(c); // Reconsume the character
+ } else {
+ this.state = State.InSpecialComment;
+ this.stateInSpecialComment(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.
- *
+ * @param c Current character code point.
* @returns Whether the character was found.
*/
private fastForwardTo(c: number): boolean {
@@ -325,20 +396,59 @@ export default class Tokenizer {
}
/**
+ * Emit a comment token and return to the text state.
+ * @param offset Number of characters in the end sequence that have already been matched.
+ */
+ private emitComment(offset: number): void {
+ this.cbs.oncomment(this.sectionStart, this.index, offset);
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ this.state = State.Text;
+ }
+
+ /**
* 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.
+ * @param c Current character code point.
*/
private stateInCommentLike(c: number): void {
- if (c === this.currentSequence[this.sequenceIndex]) {
+ if (
+ !this.xmlMode &&
+ this.currentSequence === Sequences.CommentEnd &&
+ this.sequenceIndex <= 1 &&
+ /*
+ * We're still at the very start of the comment: the only
+ * characters consumed since `<!--` are the dashes that
+ * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`).
+ */
+ this.index === this.sectionStart + this.sequenceIndex &&
+ c === CharCodes.Gt
+ ) {
+ // Abruptly closed empty HTML comment.
+ this.emitComment(this.sequenceIndex);
+ } else if (
+ this.currentSequence === Sequences.CommentEnd &&
+ this.sequenceIndex === 2 &&
+ c === CharCodes.Gt
+ ) {
+ // `!` is optional here, so the same sequence also accepts `-->`.
+ this.emitComment(2);
+ } else if (
+ this.currentSequence === Sequences.CommentEnd &&
+ this.sequenceIndex === this.currentSequence.length - 1 &&
+ c !== CharCodes.Gt
+ ) {
+ this.sequenceIndex = Number(c === CharCodes.Dash);
+ } else 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.cbs.oncomment(this.sectionStart, this.index, 3);
}
this.sequenceIndex = 0;
@@ -361,16 +471,60 @@ export default class Tokenizer {
*
* 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.
+ * @param c Current character code point.
*/
private isTagStartChar(c: number) {
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
}
- private startSpecial(sequence: Uint8Array, offset: number) {
- this.isSpecial = true;
- this.currentSequence = sequence;
- this.sequenceIndex = offset;
- this.state = State.SpecialStartSequence;
+ /**
+ * Scan raw-text / RCDATA content for the matching end tag.
+ *
+ * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline.
+ * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`.
+ * @param c Current character code point.
+ */
+ private stateInSpecialTag(c: number): void {
+ if (this.sequenceIndex === this.currentSequence.length) {
+ if (isEndOfTagSection(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 ||
+ this.currentSequence === Sequences.TextareaEnd
+ ) {
+ // RCDATA tags have to parse entities while still looking for their end tag.
+ if (this.decodeEntities && c === CharCodes.Amp) {
+ this.startEntity();
+ }
+ } else if (this.fastForwardTo(CharCodes.Lt)) {
+ // Outside of RCDATA 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);
+ }
}
private stateBeforeTagName(c: number): void {
@@ -378,18 +532,29 @@ export default class Tokenizer {
this.state = State.BeforeDeclaration;
this.sectionStart = this.index + 1;
} else if (c === CharCodes.Questionmark) {
- this.state = State.InProcessingInstruction;
- this.sectionStart = this.index + 1;
+ if (this.xmlMode) {
+ this.state = State.InProcessingInstruction;
+ this.sequenceIndex = 0;
+ this.sectionStart = this.index + 1;
+ } else {
+ this.state = State.InSpecialComment;
+ this.sectionStart = this.index;
+ }
} 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);
+
+ const special =
+ this.xmlMode || this.cbs.isInForeignContext?.()
+ ? undefined
+ : specialStartSequences.get(c | 0x20);
+
+ if (special === undefined) {
+ this.state = State.InTagName;
} else {
- this.state =
- !this.xmlMode && lower === Sequences.ScriptEnd[2]
- ? State.BeforeSpecialS
- : State.InTagName;
+ this.isSpecial = true;
+ this.currentSequence = special;
+ this.sequenceIndex = 3;
+ this.state = State.SpecialStartSequence;
}
} else if (c === CharCodes.Slash) {
this.state = State.BeforeClosingTagName;
@@ -408,9 +573,17 @@ export default class Tokenizer {
}
private stateBeforeClosingTagName(c: number): void {
if (isWhitespace(c)) {
- // Ignore
+ if (this.xmlMode) {
+ // Ignore
+ } else {
+ this.state = State.InSpecialComment;
+ this.sectionStart = this.index;
+ }
} else if (c === CharCodes.Gt) {
this.state = State.Text;
+ if (!this.xmlMode) {
+ this.sectionStart = this.index + 1;
+ }
} else {
this.state = this.isTagStartChar(c)
? State.InClosingTagName
@@ -419,7 +592,7 @@ export default class Tokenizer {
}
}
private stateInClosingTagName(c: number): void {
- if (c === CharCodes.Gt || isWhitespace(c)) {
+ if (isEndOfTagSection(c)) {
this.cbs.onclosetag(this.sectionStart, this.index);
this.sectionStart = -1;
this.state = State.AfterClosingTagName;
@@ -436,12 +609,7 @@ export default class Tokenizer {
private stateBeforeAttributeName(c: number): void {
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.enterTagBody();
this.sectionStart = this.index + 1;
} else if (c === CharCodes.Slash) {
this.state = State.InSelfClosingTag;
@@ -450,12 +618,28 @@ export default class Tokenizer {
this.sectionStart = this.index;
}
}
+ /**
+ * Handle `/` before `>` in an opening tag.
+ *
+ * In HTML mode, text-only tags ignore the self-closing flag and still enter
+ * their raw-text/RCDATA/plaintext state unless self-closing tags are being
+ * recognized. In XML mode, or for ordinary tags, the tokenizer returns to
+ * regular text parsing after emitting the self-closing callback.
+ * @param c Current character code point.
+ */
private stateInSelfClosingTag(c: number): void {
if (c === CharCodes.Gt) {
this.cbs.onselfclosingtag(this.index);
- this.state = State.Text;
this.sectionStart = this.index + 1;
+
+ if (!this.recognizeSelfClosing) {
+ this.enterTagBody();
+ return;
+ }
+
+ this.state = State.Text;
this.isSpecial = false; // Reset special state, in case of self-closing special tags
+ this.currentSequence = Sequences.Empty;
} else if (!isWhitespace(c)) {
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
@@ -464,7 +648,7 @@ export default class Tokenizer {
private stateInAttributeName(c: number): void {
if (c === CharCodes.Eq || isEndOfTagSection(c)) {
this.cbs.onattribname(this.sectionStart, this.index);
- this.sectionStart = -1;
+ this.sectionStart = this.index;
this.state = State.AfterAttributeName;
this.stateAfterAttributeName(c);
}
@@ -473,11 +657,12 @@ export default class Tokenizer {
if (c === CharCodes.Eq) {
this.state = State.BeforeAttributeValue;
} else if (c === CharCodes.Slash || c === CharCodes.Gt) {
- this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
+ this.sectionStart = -1;
this.state = State.BeforeAttributeName;
this.stateBeforeAttributeName(c);
} else if (!isWhitespace(c)) {
- this.cbs.onattribend(QuoteType.NoValue, this.index);
+ this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
this.state = State.InAttributeName;
this.sectionStart = this.index;
}
@@ -506,7 +691,7 @@ export default class Tokenizer {
quote === CharCodes.DoubleQuote
? QuoteType.Double
: QuoteType.Single,
- this.index
+ this.index + 1,
);
this.state = State.BeforeAttributeName;
} else if (this.decodeEntities && c === CharCodes.Amp) {
@@ -530,15 +715,57 @@ export default class Tokenizer {
this.startEntity();
}
}
+ /**
+ * Distinguish between CDATA, declarations, HTML comments, and HTML bogus
+ * comments after `<!`.
+ *
+ * In HTML mode, only real comments and doctypes stay on declaration paths;
+ * everything else becomes a bogus comment terminated by the next `>`.
+ * @param c Current character code point.
+ */
private stateBeforeDeclaration(c: number): void {
if (c === CharCodes.OpeningSquareBracket) {
this.state = State.CDATASequence;
this.sequenceIndex = 0;
- } else {
+ } else if (this.xmlMode) {
this.state =
c === CharCodes.Dash
? State.BeforeComment
: State.InDeclaration;
+ } else if ((c | 0x20) === Sequences.Doctype[0]) {
+ this.state = State.DeclarationSequence;
+ this.currentSequence = Sequences.Doctype;
+ this.sequenceIndex = 1;
+ } else if (c === CharCodes.Gt) {
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ } else if (c === CharCodes.Dash) {
+ this.state = State.BeforeComment;
+ } else {
+ this.state = State.InSpecialComment;
+ }
+ }
+ /**
+ * Continue matching `doctype` after `<!d`.
+ *
+ * A full `doctype` match stays on the declaration path; any other name falls
+ * back to an HTML bogus comment, which matches browser behavior for
+ * non-doctype `<!...>` constructs.
+ * @param c Current character code point.
+ */
+ private stateDeclarationSequence(c: number): void {
+ if (this.sequenceIndex === this.currentSequence.length) {
+ this.state = State.InDeclaration;
+ this.stateInDeclaration(c);
+ } else if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
+ this.sequenceIndex += 1;
+ } else if (c === CharCodes.Gt) {
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ } else {
+ this.state = State.InSpecialComment;
}
}
private stateInDeclaration(c: number): void {
@@ -548,22 +775,43 @@ export default class Tokenizer {
this.sectionStart = this.index + 1;
}
}
+ /**
+ * XML processing instructions (`<?...?>`).
+ *
+ * In HTML mode `<?` is routed to `InSpecialComment` instead, so this
+ * state is only reachable in XML mode.
+ * @param c Current character code point.
+ */
private stateInProcessingInstruction(c: number): void {
- if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
- this.cbs.onprocessinginstruction(this.sectionStart, this.index);
+ if (c === CharCodes.Questionmark) {
+ // Remember that we just consumed `?`, so the next `>` closes the PI.
+ this.sequenceIndex = 1;
+ } else if (c === CharCodes.Gt && this.sequenceIndex === 1) {
+ this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);
+ this.sequenceIndex = 0;
this.state = State.Text;
this.sectionStart = this.index + 1;
+ } else {
+ // Keep scanning for the next `?`, which can start a closing `?>`.
+ this.sequenceIndex = Number(
+ this.fastForwardTo(CharCodes.Questionmark),
+ );
}
}
private stateBeforeComment(c: number): void {
if (c === CharCodes.Dash) {
this.state = State.InCommentLike;
this.currentSequence = Sequences.CommentEnd;
- // Allow short comments (eg. <!-->)
- this.sequenceIndex = 2;
+ this.sequenceIndex = 0;
this.sectionStart = this.index + 1;
- } else {
+ } else if (this.xmlMode) {
this.state = State.InDeclaration;
+ } else if (c === CharCodes.Gt) {
+ this.cbs.oncomment(this.sectionStart, this.index, 0);
+ this.state = State.Text;
+ this.sectionStart = this.index + 1;
+ } else {
+ this.state = State.InSpecialComment;
}
}
private stateInSpecialComment(c: number): void {
@@ -573,17 +821,6 @@ export default class Tokenizer {
this.sectionStart = this.index + 1;
}
}
- private stateBeforeSpecialS(c: number): void {
- 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
- }
- }
private startEntity() {
this.baseState = this.state;
@@ -593,26 +830,33 @@ export default class Tokenizer {
this.xmlMode
? DecodingMode.Strict
: this.baseState === State.Text ||
- this.baseState === State.InSpecialTag
- ? DecodingMode.Legacy
- : DecodingMode.Attribute
+ this.baseState === State.InSpecialTag
+ ? DecodingMode.Legacy
+ : DecodingMode.Attribute,
);
}
private stateInEntity(): void {
- const length = this.entityDecoder.write(
- this.buffer,
- this.index - this.offset
- );
+ const indexInBuffer = this.index - this.offset;
+ const length = this.entityDecoder.write(this.buffer, indexInBuffer);
// If `length` is positive, we are done with the entity.
if (length >= 0) {
this.state = this.baseState;
if (length === 0) {
- this.index = this.entityStart;
+ this.index -= 1;
}
} else {
+ if (
+ indexInBuffer < this.buffer.length &&
+ this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp
+ ) {
+ this.state = this.baseState;
+ this.index -= 1;
+ return;
+ }
+
// Mark buffer as consumed.
this.index = this.offset + this.buffer.length - 1;
}
@@ -626,6 +870,7 @@ export default class Tokenizer {
if (this.running && this.sectionStart !== this.index) {
if (
this.state === State.Text ||
+ this.state === State.InPlainText ||
(this.state === State.InSpecialTag && this.sequenceIndex === 0)
) {
this.cbs.ontext(this.sectionStart, this.index);
@@ -658,6 +903,11 @@ export default class Tokenizer {
this.stateText(c);
break;
}
+ case State.InPlainText: {
+ // Skip to end of buffer; cleanup() emits the text.
+ this.index = this.buffer.length + this.offset - 1;
+ break;
+ }
case State.SpecialStartSequence: {
this.stateSpecialStartSequence(c);
break;
@@ -670,6 +920,10 @@ export default class Tokenizer {
this.stateCDATASequence(c);
break;
}
+ case State.DeclarationSequence: {
+ this.stateDeclarationSequence(c);
+ break;
+ }
case State.InAttributeValueDq: {
this.stateInAttributeValueDoubleQuotes(c);
break;
@@ -722,10 +976,6 @@ export default class Tokenizer {
this.stateAfterClosingTagName(c);
break;
}
- case State.BeforeSpecialS: {
- this.stateBeforeSpecialS(c);
- break;
- }
case State.InAttributeValueNq: {
this.stateInAttributeValueNoQuotes(c);
break;
@@ -771,38 +1021,107 @@ export default class Tokenizer {
this.cbs.onend();
}
+ private handleTrailingCommentLikeData(endIndex: number): boolean {
+ if (this.state !== State.InCommentLike) {
+ return false;
+ }
+
+ if (this.currentSequence === Sequences.CdataEnd) {
+ if (this.xmlMode) {
+ if (this.sectionStart < endIndex) {
+ this.cbs.oncdata(this.sectionStart, endIndex, 0);
+ }
+ } else {
+ /* In HTML mode, unclosed CDATA is a bogus comment. */
+ const cdataStart =
+ this.sectionStart - Sequences.Cdata.length - 1;
+ this.cbs.oncomment(cdataStart, endIndex, 0);
+ }
+ } else {
+ const offset = this.xmlMode
+ ? 0
+ : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);
+ this.cbs.oncomment(this.sectionStart, endIndex, offset);
+ }
+
+ return true;
+ }
+
+ private handleTrailingMarkupDeclaration(endIndex: number): boolean {
+ if (this.xmlMode) {
+ switch (this.state) {
+ case State.InSpecialComment:
+ case State.BeforeComment:
+ case State.CDATASequence:
+ case State.DeclarationSequence:
+ case State.InDeclaration: {
+ this.cbs.ontext(this.sectionStart, endIndex);
+ return true;
+ }
+ default: {
+ return false;
+ }
+ }
+ }
+
+ switch (this.state) {
+ case State.BeforeDeclaration:
+ case State.InSpecialComment:
+ case State.BeforeComment:
+ case State.CDATASequence: {
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
+ return true;
+ }
+ case State.DeclarationSequence: {
+ if (this.sequenceIndex !== Sequences.Doctype.length) {
+ this.cbs.oncomment(this.sectionStart, endIndex, 0);
+ }
+ return true;
+ }
+ case State.InDeclaration: {
+ return true;
+ }
+ default: {
+ return false;
+ }
+ }
+ }
+
/** Handle any trailing data. */
private handleTrailingData() {
const endIndex = this.buffer.length + this.offset;
+ if (
+ this.handleTrailingCommentLikeData(endIndex) ||
+ this.handleTrailingMarkupDeclaration(endIndex)
+ ) {
+ return;
+ }
+
// If there is no remaining data, we are done.
if (this.sectionStart >= endIndex) {
return;
}
- 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);
+ switch (this.state) {
+ case State.InTagName:
+ case State.BeforeAttributeName:
+ case State.BeforeAttributeValue:
+ case State.AfterAttributeName:
+ case State.InAttributeName:
+ case State.InAttributeValueSq:
+ case State.InAttributeValueDq:
+ case State.InAttributeValueNq:
+ case 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.
+ */
+ break;
+ }
+ default: {
+ this.cbs.ontext(this.sectionStart, endIndex);
}
- } 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);
}
}
diff --git a/src/WebWritableStream.spec.ts b/src/WebWritableStream.spec.ts
new file mode 100644
index 0000000..9aa5e6d
--- /dev/null
+++ b/src/WebWritableStream.spec.ts
@@ -0,0 +1,143 @@
+import * as fs from "node:fs/promises";
+import { describe, expect, it, vi } from "vitest";
+import * as helper from "./__fixtures__/testHelper.js";
+import type { Handler, ParserOptions } from "./Parser.js";
+import { WebWritableStream } from "./WebWritableStream.js";
+
+describe("WebWritableStream", () => {
+ it("should decode fragmented unicode characters", async () => {
+ const ontext = vi.fn();
+ const stream = new WebWritableStream({ ontext });
+
+ const writer = stream.getWriter();
+ // € is U+20AC, encoded as 0xE2 0x82 0xAC in UTF-8
+ await writer.write(new Uint8Array([0xe2, 0x82]));
+ await writer.write(new Uint8Array([0xac]));
+ await writer.write("");
+ await writer.close();
+
+ expect(ontext).toHaveBeenCalledWith("€");
+ });
+
+ it("should handle string chunks", async () => {
+ const ontext = vi.fn();
+ const stream = new WebWritableStream({ ontext });
+
+ const writer = stream.getWriter();
+ await writer.write("hello");
+ await writer.close();
+
+ expect(ontext).toHaveBeenCalledWith("hello");
+ });
+
+ it("should handle empty stream", async () => {
+ const onend = vi.fn();
+ const stream = new WebWritableStream({ onend });
+
+ const writer = stream.getWriter();
+ await writer.close();
+
+ expect(onend).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle abort signal", async () => {
+ const ontext = vi.fn();
+ const onend = vi.fn();
+ const stream = new WebWritableStream({ ontext, onend });
+
+ const writer = stream.getWriter();
+ await writer.abort(new Error("aborted"));
+
+ expect(ontext).not.toHaveBeenCalled();
+ expect(onend).not.toHaveBeenCalled();
+ });
+
+ it("should work with ReadableStream.pipeTo", async () => {
+ const onopentag = vi.fn();
+ const ontext = vi.fn();
+ const stream = new WebWritableStream({ onopentag, ontext });
+
+ const html = "<div>hello</div>";
+ const readable = new ReadableStream<string>({
+ start(controller) {
+ controller.enqueue(html);
+ controller.close();
+ },
+ });
+
+ await readable.pipeTo(stream);
+
+ expect(onopentag).toHaveBeenCalledWith("div", {}, false);
+ expect(ontext).toHaveBeenCalledWith("hello");
+ });
+
+ it("Basic html", () => testStream("Basic.html"));
+ it("Attributes", () => testStream("Attributes.html"));
+ it("SVG", () => testStream("Svg.html"));
+ it("RSS feed", () => testStream("RSS_Example.xml", { xmlMode: true }));
+ it("Atom feed", () => testStream("Atom_Example.xml", { xmlMode: true }));
+ it("RDF feed", () => testStream("RDF_Example.xml", { xmlMode: true }));
+});
+
+function getPromiseEventCollector(): [
+ handler: Partial<Handler>,
+ promise: Promise<unknown>,
+] {
+ let handler: Partial<Handler> | undefined;
+ const promise = new Promise<unknown>((resolve, reject) => {
+ handler = helper.getEventCollector((error, events) => {
+ if (error) {
+ reject(error);
+ } else {
+ resolve(events);
+ }
+ });
+ });
+
+ if (!handler) {
+ throw new Error("Failed to initialize event handler");
+ }
+
+ return [handler, promise];
+}
+
+async function testStream(
+ file: string,
+ options?: ParserOptions,
+): Promise<void> {
+ const filePath = new URL(`__fixtures__/Documents/${file}`, import.meta.url);
+
+ const [streamHandler, eventsPromise] = getPromiseEventCollector();
+
+ const fileContents = await fs.readFile(filePath);
+
+ // Pipe file contents through a ReadableStream into the WebWritableStream
+ const readable = new ReadableStream<Uint8Array>({
+ start(controller) {
+ controller.enqueue(new Uint8Array(fileContents));
+ controller.close();
+ },
+ });
+
+ await readable.pipeTo(new WebWritableStream(streamHandler, options));
+
+ const events = await eventsPromise;
+
+ expect(events).toMatchSnapshot();
+
+ // Verify single-pass produces identical results
+ const [singlePassHandler, singlePassPromise] = getPromiseEventCollector();
+
+ const singlePassReadable = new ReadableStream<string>({
+ start(controller) {
+ controller.enqueue(fileContents.toString());
+ controller.close();
+ },
+ });
+
+ await singlePassReadable.pipeTo(
+ new WebWritableStream(singlePassHandler, options),
+ );
+
+ expect(await singlePassPromise).toStrictEqual(events);
+}
diff --git a/src/WebWritableStream.ts b/src/WebWritableStream.ts
new file mode 100644
index 0000000..a2313c1
--- /dev/null
+++ b/src/WebWritableStream.ts
@@ -0,0 +1,47 @@
+import { type Handler, Parser, type ParserOptions } from "./Parser.js";
+
+/**
+ * WebWritableStream makes the `Parser` interface available as a Web Streams API WritableStream.
+ *
+ * This is useful for piping `fetch()` response bodies directly into the parser.
+ * @see Parser
+ * @example
+ * ```typescript
+ * import { WebWritableStream } from "htmlparser2/WebWritableStream";
+ *
+ * const stream = new WebWritableStream({
+ * onopentag(name, attribs) {
+ * console.log("Opened:", name);
+ * },
+ * });
+ *
+ * const response = await fetch("https://example.com");
+ * await response.body.pipeTo(stream);
+ * ```
+ */
+// eslint-disable-next-line n/no-unsupported-features/node-builtins -- Web Streams API; requires a runtime with WritableStream (browsers, Deno, Node ≥18.0)
+export class WebWritableStream extends WritableStream<string | Uint8Array> {
+ constructor(cbs: Partial<Handler>, options?: ParserOptions) {
+ const parser = new Parser(cbs, options);
+ const decoder = new TextDecoder();
+ const streamOption: TextDecodeOptions = { stream: true };
+
+ super({
+ write(chunk) {
+ parser.write(
+ typeof chunk === "string"
+ ? chunk
+ : decoder.decode(chunk, streamOption),
+ );
+ },
+ close() {
+ // Flush any remaining bytes in the decoder
+ const remaining = decoder.decode();
+ if (remaining) {
+ parser.write(remaining);
+ }
+ parser.end();
+ },
+ });
+ }
+}
diff --git a/src/WritableStream.spec.ts b/src/WritableStream.spec.ts
index 5175f10..2334816 100644
--- a/src/WritableStream.spec.ts
+++ b/src/WritableStream.spec.ts
@@ -1,14 +1,14 @@
import { createReadStream } from "node:fs";
import * as fs from "node:fs/promises";
-import path from "node:path";
-import * as stream from "node:stream";
+import { finished } from "node:stream/promises";
+import { describe, expect, it, vi } from "vitest";
+import * as helper from "./__fixtures__/testHelper.js";
import type { Handler, ParserOptions } from "./Parser.js";
import { WritableStream } from "./WritableStream.js";
-import * as helper from "./__fixtures__/test-helper.js";
describe("WritableStream", () => {
- test("should decode fragmented unicode characters", () => {
- const ontext = jest.fn();
+ it("should decode fragmented unicode characters", () => {
+ const ontext = vi.fn();
const stream = new WritableStream({ ontext });
stream.write(Buffer.from([0xe2, 0x82]));
@@ -29,7 +29,7 @@ describe("WritableStream", () => {
function getPromiseEventCollector(): [
handler: Partial<Handler>,
- promise: Promise<unknown>
+ promise: Promise<unknown>,
] {
let handler: Partial<Handler> | undefined;
const promise = new Promise<unknown>((resolve, reject) => {
@@ -42,26 +42,23 @@ function getPromiseEventCollector(): [
});
});
- return [handler!, promise];
-}
+ if (!handler) {
+ throw new Error("Failed to initialize event handler");
+ }
-// TODO[engine:node@>=16]: Use promise version of `stream.finished` instead.
-function finished(input: Parameters<typeof stream.finished>[0]): Promise<void> {
- return new Promise((resolve, reject) => {
- stream.finished(input, (error) => (error ? reject(error) : resolve()));
- });
+ return [handler, promise];
}
async function testStream(
file: string,
- options?: ParserOptions
+ options?: ParserOptions,
): Promise<void> {
- const filePath = path.join(__dirname, "__fixtures__", "Documents", file);
+ const filePath = new URL(`__fixtures__/Documents/${file}`, import.meta.url);
const [streamHandler, eventsPromise] = getPromiseEventCollector();
const fsStream = createReadStream(filePath).pipe(
- new WritableStream(streamHandler, options)
+ new WritableStream(streamHandler, options),
);
await finished(fsStream);
@@ -73,7 +70,7 @@ async function testStream(
const [singlePassHandler, singlePassPromise] = getPromiseEventCollector();
const singlePassStream = new WritableStream(singlePassHandler, options).end(
- await fs.readFile(filePath)
+ await fs.readFile(filePath),
);
await finished(singlePassStream);
diff --git a/src/WritableStream.ts b/src/WritableStream.ts
index 0a6eda2..1fa5dcf 100644
--- a/src/WritableStream.ts
+++ b/src/WritableStream.ts
@@ -1,10 +1,10 @@
-import { Parser, Handler, ParserOptions } 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";
+import { type Handler, Parser, type ParserOptions } from "./Parser.js";
// Following the example in https://nodejs.org/api/stream.html#stream_decoding_buffers_in_a_writable_stream
function isBuffer(_chunk: string | Buffer, encoding: string): _chunk is Buffer {
@@ -13,7 +13,6 @@ function isBuffer(_chunk: string | Buffer, encoding: string): _chunk is Buffer {
/**
* WritableStream makes the `Parser` interface available as a NodeJS stream.
- *
* @see Parser
*/
export class WritableStream extends Writable {
@@ -28,10 +27,10 @@ export class WritableStream extends Writable {
override _write(
chunk: string | Buffer,
encoding: string,
- callback: () => void
+ callback: () => void,
): void {
this._parser.write(
- isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk
+ isBuffer(chunk, encoding) ? this._decoder.write(chunk) : chunk,
);
callback();
}
diff --git a/src/__fixtures__/test-helper.ts b/src/__fixtures__/testHelper.ts
index 3a622dd..e973300 100644
--- a/src/__fixtures__/test-helper.ts
+++ b/src/__fixtures__/testHelper.ts
@@ -1,4 +1,4 @@
-import type { Parser, Handler } from "../Parser.js";
+import type { Handler, Parser } from "../Parser.js";
interface Event {
$event: string;
@@ -10,12 +10,11 @@ interface Event {
/**
* Creates a handler that calls the supplied callback with simplified events on
* completion.
- *
* @internal
* @param callback Function to call with all events.
*/
export function getEventCollector(
- callback: (error: Error | null, events?: Event[]) => void
+ callback: (error: Error | null, events?: Event[]) => void,
): Partial<Handler> {
const events: Event[] = [];
let parser: Parser;
@@ -44,7 +43,6 @@ export function getEventCollector(
break;
}
default: {
- // eslint-disable-next-line unicorn/prefer-at
const last = events[events.length - 1];
// Combine text nodes
@@ -63,7 +61,7 @@ export function getEventCollector(
if (!(parser.startIndex <= parser.endIndex)) {
throw new Error(
- `Invalid start/end index ${parser.startIndex} > ${parser.endIndex}`
+ `Invalid start/end index ${parser.startIndex} > ${parser.endIndex}`,
);
}
@@ -73,8 +71,6 @@ export function getEventCollector(
endIndex: parser.endIndex,
data,
});
-
- parser.endIndex;
}
}
}
@@ -86,6 +82,6 @@ export function getEventCollector(
(_, event: string) =>
(...data: unknown[]) =>
handle(event, data),
- }
+ },
);
}
diff --git a/src/__snapshots__/FeedHandler.spec.ts.snap b/src/__snapshots__/FeedHandler.spec.ts.snap
index 308a434..6cb0eeb 100644
--- a/src/__snapshots__/FeedHandler.spec.ts.snap
+++ b/src/__snapshots__/FeedHandler.spec.ts.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`parseFeed (atomFeed) 1`] = `
+exports[`parseFeed > (atomFeed) 1`] = `
{
"author": "johndoe@example.com",
"description": "A subtitle.",
@@ -25,7 +25,7 @@ exports[`parseFeed (atomFeed) 1`] = `
}
`;
-exports[`parseFeed (rdfFeed) 1`] = `
+exports[`parseFeed > (rdfFeed) 1`] = `
{
"id": "",
"items": [
@@ -50,7 +50,7 @@ exports[`parseFeed (rdfFeed) 1`] = `
}
`;
-exports[`parseFeed (rssFeed) 1`] = `
+exports[`parseFeed > (rssFeed) 1`] = `
{
"author": "editor@example.com",
"description": "Liftoff to Space Exploration.",
diff --git a/src/__tests__/__snapshots__/events.ts.snap b/src/__snapshots__/Parser.events.spec.ts.snap
index 24790cd..686fcaf 100644
--- a/src/__tests__/__snapshots__/events.ts.snap
+++ b/src/__snapshots__/Parser.events.spec.ts.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Events </title> in <script> (#745) 1`] = `
+exports[`Events > </title> in <script> (#745) 1`] = `
[
{
"$event": "opentagname",
@@ -40,7 +40,34 @@ exports[`Events </title> in <script> (#745) 1`] = `
]
`;
-exports[`Events Attribute in XML (see #1350) 1`] = `
+exports[`Events > Abruptly closed comment 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "",
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "text",
+ ],
+ "endIndex": 9,
+ "startIndex": 6,
+ },
+]
+`;
+
+exports[`Events > Attribute in XML (see #1350) 1`] = `
[
{
"$event": "opentagname",
@@ -57,7 +84,7 @@ exports[`Events Attribute in XML (see #1350) 1`] = `
"Hello world",
""",
],
- "endIndex": 28,
+ "endIndex": 29,
"startIndex": 10,
},
{
@@ -67,7 +94,7 @@ exports[`Events Attribute in XML (see #1350) 1`] = `
"false",
""",
],
- "endIndex": 57,
+ "endIndex": 58,
"startIndex": 34,
},
{
@@ -95,7 +122,53 @@ exports[`Events Attribute in XML (see #1350) 1`] = `
]
`;
-exports[`Events CDATA (inside special) 1`] = `
+exports[`Events > Bogus comment after </ and whitespace 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "div",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "div",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " div",
+ ],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "div",
+ true,
+ ],
+ "endIndex": 12,
+ "startIndex": 12,
+ },
+]
+`;
+
+exports[`Events > CDATA (inside special) 1`] = `
[
{
"$event": "opentagname",
@@ -135,7 +208,7 @@ exports[`Events CDATA (inside special) 1`] = `
]
`;
-exports[`Events CDATA 1`] = `
+exports[`Events > CDATA 1`] = `
[
{
"$event": "opentagname",
@@ -196,18 +269,23 @@ exports[`Events CDATA 1`] = `
]
`;
-exports[`Events CDATA edge-cases 1`] = `
+exports[`Events > CDATA edge-cases 1`] = `
[
{
- "$event": "processinginstruction",
+ "$event": "comment",
"data": [
- "![cdata",
- "![CDATA",
+ "[CDATA",
],
"endIndex": 8,
"startIndex": 0,
},
{
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 8,
+ "startIndex": 0,
+ },
+ {
"$event": "cdatastart",
"data": [],
"endIndex": 27,
@@ -228,21 +306,15 @@ exports[`Events CDATA edge-cases 1`] = `
"startIndex": 9,
},
{
- "$event": "cdatastart",
- "data": [],
- "endIndex": 40,
- "startIndex": 28,
- },
- {
- "$event": "text",
+ "$event": "comment",
"data": [
- "foo",
+ "[CDATA[foo",
],
"endIndex": 40,
"startIndex": 28,
},
{
- "$event": "cdataend",
+ "$event": "commentend",
"data": [],
"endIndex": 40,
"startIndex": 28,
@@ -250,7 +322,7 @@ exports[`Events CDATA edge-cases 1`] = `
]
`;
-exports[`Events CDATA in HTML 1`] = `
+exports[`Events > CDATA in HTML 1`] = `
[
{
"$event": "comment",
@@ -269,7 +341,7 @@ exports[`Events CDATA in HTML 1`] = `
]
`;
-exports[`Events CDATA more edge-cases 1`] = `
+exports[`Events > CDATA more edge-cases 1`] = `
[
{
"$event": "cdatastart",
@@ -294,18 +366,23 @@ exports[`Events CDATA more edge-cases 1`] = `
]
`;
-exports[`Events Comment edge-cases 1`] = `
+exports[`Events > Comment edge-cases 1`] = `
[
{
- "$event": "processinginstruction",
+ "$event": "comment",
"data": [
- "!-foo",
- "!-foo",
+ "-foo",
],
"endIndex": 6,
"startIndex": 0,
},
{
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
"$event": "comment",
"data": [
" --- ",
@@ -336,7 +413,7 @@ exports[`Events Comment edge-cases 1`] = `
]
`;
-exports[`Events Comment false ending 1`] = `
+exports[`Events > Comment false ending 1`] = `
[
{
"$event": "comment",
@@ -355,20 +432,302 @@ exports[`Events Comment false ending 1`] = `
]
`;
-exports[`Events Empty tag name 1`] = `
+exports[`Events > Content after SVG integration point 1`] = `
[
{
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "foreignObject",
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "foreignObject",
+ {},
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "b",
+ ],
+ "endIndex": 22,
+ "startIndex": 20,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "b",
+ {},
+ false,
+ ],
+ "endIndex": 22,
+ "startIndex": 20,
+ },
+ {
"$event": "text",
"data": [
- "< ></ >",
+ "x",
+ ],
+ "endIndex": 23,
+ "startIndex": 23,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "b",
+ false,
+ ],
+ "endIndex": 27,
+ "startIndex": 24,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "foreignObject",
+ false,
+ ],
+ "endIndex": 43,
+ "startIndex": 28,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "rect",
+ ],
+ "endIndex": 49,
+ "startIndex": 44,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "rect",
+ {},
+ false,
+ ],
+ "endIndex": 50,
+ "startIndex": 44,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "rect",
+ true,
+ ],
+ "endIndex": 50,
+ "startIndex": 44,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 56,
+ "startIndex": 51,
+ },
+]
+`;
+
+exports[`Events > Doctype without whitespace 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!DOCTYPEhtml",
+ ],
+ "endIndex": 13,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > EOF bogus comments 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "-",
+ ],
+ "endIndex": 3,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 3,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > EOF complete doctype 1`] = `[]`;
+
+exports[`Events > EOF empty bogus comment 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "",
+ ],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > EOF incomplete doctype 1`] = `[]`;
+
+exports[`Events > EOF partial doctype 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "DOC",
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > EOF processing instruction 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "?",
+ ],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Empty EOF comment 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Empty closing tag 1`] = `[]`;
+
+exports[`Events > Empty closing tag, xmlMode=true 1`] = `
+[
+ {
+ "$event": "text",
+ "data": [
+ "</>",
+ ],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Empty tag name 1`] = `
+[
+ {
+ "$event": "text",
+ "data": [
+ "< >",
+ ],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " ",
],
"endIndex": 6,
+ "startIndex": 3,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 6,
+ "startIndex": 3,
+ },
+]
+`;
+
+exports[`Events > Empty unclosed CDATA at EOF 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "[CDATA[",
+ ],
+ "endIndex": 9,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 9,
"startIndex": 0,
},
]
`;
-exports[`Events Entities in attributes 1`] = `
+exports[`Events > Entities in attributes 1`] = `
[
{
"$event": "opentagname",
@@ -395,7 +754,7 @@ exports[`Events Entities in attributes 1`] = `
"&",
""",
],
- "endIndex": 25,
+ "endIndex": 26,
"startIndex": 15,
},
{
@@ -405,7 +764,7 @@ exports[`Events Entities in attributes 1`] = `
"&",
"'",
],
- "endIndex": 37,
+ "endIndex": 38,
"startIndex": 27,
},
{
@@ -445,7 +804,7 @@ exports[`Events Entities in attributes 1`] = `
]
`;
-exports[`Events Entity after < 1`] = `
+exports[`Events > Entity after < 1`] = `
[
{
"$event": "text",
@@ -458,7 +817,281 @@ exports[`Events Entity after < 1`] = `
]
`;
-exports[`Events Implicit close tags 1`] = `
+exports[`Events > Foreign CDATA in MathML 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "math",
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "math",
+ {},
+ false,
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "a<b",
+ ],
+ "endIndex": 20,
+ "startIndex": 6,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "math",
+ false,
+ ],
+ "endIndex": 27,
+ "startIndex": 21,
+ },
+]
+`;
+
+exports[`Events > Foreign CDATA in SVG 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "a<b",
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 25,
+ "startIndex": 20,
+ },
+]
+`;
+
+exports[`Events > HTML bogus comments 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "?foo",
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ "foo",
+ ],
+ "endIndex": 11,
+ "startIndex": 6,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 11,
+ "startIndex": 6,
+ },
+]
+`;
+
+exports[`Events > HTML image alias 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "img",
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "img",
+ {},
+ false,
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "img",
+ true,
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Implicit close of nested foreign elements 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "math",
+ ],
+ "endIndex": 10,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "math",
+ {},
+ false,
+ ],
+ "endIndex": 10,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "mi",
+ ],
+ "endIndex": 14,
+ "startIndex": 11,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "mi",
+ {},
+ false,
+ ],
+ "endIndex": 14,
+ "startIndex": 11,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "text",
+ ],
+ "endIndex": 18,
+ "startIndex": 15,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "mi",
+ true,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "math",
+ true,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "script",
+ ],
+ "endIndex": 32,
+ "startIndex": 25,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "script",
+ {},
+ false,
+ ],
+ "endIndex": 32,
+ "startIndex": 25,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "<b>x</b>",
+ ],
+ "endIndex": 40,
+ "startIndex": 33,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "script",
+ false,
+ ],
+ "endIndex": 49,
+ "startIndex": 41,
+ },
+]
+`;
+
+exports[`Events > Implicit close tags 1`] = `
[
{
"$event": "opentagname",
@@ -1165,7 +1798,7 @@ exports[`Events Implicit close tags 1`] = `
]
`;
-exports[`Events Implicit open p and br tags 1`] = `
+exports[`Events > Implicit open p and br tags 1`] = `
[
{
"$event": "opentagname",
@@ -1321,7 +1954,7 @@ exports[`Events Implicit open p and br tags 1`] = `
]
`;
-exports[`Events Long CDATA ending 1`] = `
+exports[`Events > Long CDATA ending 1`] = `
[
{
"$event": "opentagname",
@@ -1427,7 +2060,7 @@ exports[`Events Long CDATA ending 1`] = `
]
`;
-exports[`Events Long comment ending 1`] = `
+exports[`Events > Long comment ending 1`] = `
[
{
"$event": "opentagname",
@@ -1444,7 +2077,7 @@ exports[`Events Long comment ending 1`] = `
"before",
"'",
],
- "endIndex": 16,
+ "endIndex": 17,
"startIndex": 6,
},
{
@@ -1497,7 +2130,7 @@ exports[`Events Long comment ending 1`] = `
"after",
"'",
],
- "endIndex": 47,
+ "endIndex": 48,
"startIndex": 38,
},
{
@@ -1524,7 +2157,7 @@ exports[`Events Long comment ending 1`] = `
]
`;
-exports[`Events Lowercase tags 1`] = `
+exports[`Events > Lowercase tags 1`] = `
[
{
"$event": "opentagname",
@@ -1576,7 +2209,7 @@ exports[`Events Lowercase tags 1`] = `
]
`;
-exports[`Events Multi-byte entity 1`] = `
+exports[`Events > Multi-byte entity 1`] = `
[
{
"$event": "text",
@@ -1589,7 +2222,7 @@ exports[`Events Multi-byte entity 1`] = `
]
`;
-exports[`Events Not quite closed 1`] = `
+exports[`Events > Not quite closed 1`] = `
[
{
"$event": "opentagname",
@@ -1632,7 +2265,402 @@ exports[`Events Not quite closed 1`] = `
]
`;
-exports[`Events Scripts creating other scripts 1`] = `
+exports[`Events > Partial CDATA at EOF 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "[C",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Partial CDATA match with > 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "[CD",
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > SVG image is not aliased 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "image",
+ ],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "image",
+ {},
+ false,
+ ],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "image",
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 12,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 25,
+ "startIndex": 20,
+ },
+]
+`;
+
+exports[`Events > SVG integration point closing with unclosed child 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "foreignObject",
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "foreignObject",
+ {},
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "div",
+ ],
+ "endIndex": 24,
+ "startIndex": 20,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "div",
+ {},
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 20,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 25,
+ "startIndex": 25,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "div",
+ true,
+ ],
+ "endIndex": 41,
+ "startIndex": 26,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "foreignObject",
+ false,
+ ],
+ "endIndex": 41,
+ "startIndex": 26,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 47,
+ "startIndex": 42,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "after",
+ ],
+ "endIndex": 52,
+ "startIndex": 48,
+ },
+]
+`;
+
+exports[`Events > SVG tag case adjustment 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "foreignObject",
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "foreignObject",
+ {},
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "b",
+ ],
+ "endIndex": 22,
+ "startIndex": 20,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "b",
+ {},
+ false,
+ ],
+ "endIndex": 22,
+ "startIndex": 20,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 23,
+ "startIndex": 23,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "b",
+ false,
+ ],
+ "endIndex": 27,
+ "startIndex": 24,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "foreignObject",
+ false,
+ ],
+ "endIndex": 43,
+ "startIndex": 28,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 49,
+ "startIndex": 44,
+ },
+]
+`;
+
+exports[`Events > SVG title is not HTML special 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 11,
+ "startIndex": 5,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "&",
+ ],
+ "endIndex": 16,
+ "startIndex": 12,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "b",
+ ],
+ "endIndex": 19,
+ "startIndex": 17,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "b",
+ {},
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 17,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 20,
+ "startIndex": 20,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "b",
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 21,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 32,
+ "startIndex": 25,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 38,
+ "startIndex": 33,
+ },
+]
+`;
+
+exports[`Events > Scripts creating other scripts 1`] = `
[
{
"$event": "opentagname",
@@ -1699,7 +2727,7 @@ exports[`Events Scripts creating other scripts 1`] = `
]
`;
-exports[`Events Scripts ending with < 1`] = `
+exports[`Events > Scripts ending with < 1`] = `
[
{
"$event": "opentagname",
@@ -1739,7 +2767,74 @@ exports[`Events Scripts ending with < 1`] = `
]
`;
-exports[`Events Self-closing indices (#941) 1`] = `
+exports[`Events > Self-closing foreign element with recognizeSelfClosing 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 4,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {},
+ false,
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ true,
+ ],
+ "endIndex": 5,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "script",
+ ],
+ "endIndex": 13,
+ "startIndex": 6,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "script",
+ {},
+ false,
+ ],
+ "endIndex": 13,
+ "startIndex": 6,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "<b>x</b>",
+ ],
+ "endIndex": 21,
+ "startIndex": 14,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "script",
+ false,
+ ],
+ "endIndex": 30,
+ "startIndex": 22,
+ },
+]
+`;
+
+exports[`Events > Self-closing indices (#941) 1`] = `
[
{
"$event": "opentagname",
@@ -1825,7 +2920,327 @@ exports[`Events Self-closing indices (#941) 1`] = `
]
`;
-exports[`Events Special special tags 1`] = `
+exports[`Events > Short HTML bogus comments 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "",
+ ],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 2,
+ "startIndex": 0,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ "-",
+ ],
+ "endIndex": 6,
+ "startIndex": 3,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 6,
+ "startIndex": 3,
+ },
+]
+`;
+
+exports[`Events > Short bang comment 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "!>",
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > Special end tags ending with /> in script 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "script",
+ ],
+ "endIndex": 7,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "script",
+ {},
+ false,
+ ],
+ "endIndex": 7,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "safe",
+ ],
+ "endIndex": 11,
+ "startIndex": 8,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "script",
+ false,
+ ],
+ "endIndex": 20,
+ "startIndex": 12,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "img",
+ ],
+ "endIndex": 26,
+ "startIndex": 21,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "img",
+ {},
+ false,
+ ],
+ "endIndex": 26,
+ "startIndex": 21,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "img",
+ true,
+ ],
+ "endIndex": 26,
+ "startIndex": 21,
+ },
+]
+`;
+
+exports[`Events > Special end tags ending with /> in style 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "style",
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "style",
+ {},
+ false,
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "safe",
+ ],
+ "endIndex": 10,
+ "startIndex": 7,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "style",
+ false,
+ ],
+ "endIndex": 18,
+ "startIndex": 11,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "img",
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "img",
+ {},
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "img",
+ true,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+]
+`;
+
+exports[`Events > Special end tags ending with /> in textarea 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "textarea",
+ ],
+ "endIndex": 9,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "textarea",
+ {},
+ false,
+ ],
+ "endIndex": 9,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "safe",
+ ],
+ "endIndex": 13,
+ "startIndex": 10,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "textarea",
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 14,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "img",
+ ],
+ "endIndex": 30,
+ "startIndex": 25,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "img",
+ {},
+ false,
+ ],
+ "endIndex": 30,
+ "startIndex": 25,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "img",
+ true,
+ ],
+ "endIndex": 30,
+ "startIndex": 25,
+ },
+]
+`;
+
+exports[`Events > Special end tags ending with /> in title 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 6,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "safe",
+ ],
+ "endIndex": 10,
+ "startIndex": 7,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 18,
+ "startIndex": 11,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "img",
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "img",
+ {},
+ false,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "img",
+ true,
+ ],
+ "endIndex": 24,
+ "startIndex": 19,
+ },
+]
+`;
+
+exports[`Events > Special special tags 1`] = `
[
{
"$event": "opentagname",
@@ -2151,7 +3566,7 @@ exports[`Events Special special tags 1`] = `
]
`;
-exports[`Events Start & end indices from domhandler 1`] = `
+exports[`Events > Start & end indices from domhandler 1`] = `
[
{
"$event": "processinginstruction",
@@ -2254,7 +3669,7 @@ exports[`Events Start & end indices from domhandler 1`] = `
"foo",
"'",
],
- "endIndex": 64,
+ "endIndex": 65,
"startIndex": 54,
},
{
@@ -2363,7 +3778,47 @@ exports[`Events Start & end indices from domhandler 1`] = `
]
`;
-exports[`Events Template script tags 1`] = `
+exports[`Events > Stray </svg> does not break foreign context 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "script",
+ ],
+ "endIndex": 13,
+ "startIndex": 6,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "script",
+ {},
+ false,
+ ],
+ "endIndex": 13,
+ "startIndex": 6,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "<b>not a tag</b>",
+ ],
+ "endIndex": 29,
+ "startIndex": 14,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "script",
+ false,
+ ],
+ "endIndex": 38,
+ "startIndex": 30,
+ },
+]
+`;
+
+exports[`Events > Template script tags 1`] = `
[
{
"$event": "opentagname",
@@ -2398,7 +3853,7 @@ exports[`Events Template script tags 1`] = `
"text/template",
""",
],
- "endIndex": 30,
+ "endIndex": 31,
"startIndex": 11,
},
{
@@ -2442,7 +3897,7 @@ exports[`Events Template script tags 1`] = `
]
`;
-exports[`Events Trailing legacy entity 1`] = `
+exports[`Events > Trailing legacy entity 1`] = `
[
{
"$event": "text",
@@ -2455,7 +3910,7 @@ exports[`Events Trailing legacy entity 1`] = `
]
`;
-exports[`Events Trailing numeric entity 1`] = `
+exports[`Events > Trailing numeric entity 1`] = `
[
{
"$event": "text",
@@ -2468,7 +3923,26 @@ exports[`Events Trailing numeric entity 1`] = `
]
`;
-exports[`Events XML tags 1`] = `
+exports[`Events > Unclosed CDATA at EOF 1`] = `
+[
+ {
+ "$event": "comment",
+ "data": [
+ "[CDATA[foo",
+ ],
+ "endIndex": 12,
+ "startIndex": 0,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 12,
+ "startIndex": 0,
+ },
+]
+`;
+
+exports[`Events > XML tags 1`] = `
[
{
"$event": "opentagname",
@@ -2527,7 +4001,7 @@ exports[`Events XML tags 1`] = `
]
`;
-exports[`Events attributes (no white space, no value, no quotes) 1`] = `
+exports[`Events > attributes (no white space, no value, no quotes) 1`] = `
[
{
"$event": "opentagname",
@@ -2544,7 +4018,7 @@ exports[`Events attributes (no white space, no value, no quotes) 1`] = `
"test0",
""",
],
- "endIndex": 20,
+ "endIndex": 21,
"startIndex": 8,
},
{
@@ -2554,7 +4028,7 @@ exports[`Events attributes (no white space, no value, no quotes) 1`] = `
"test1",
""",
],
- "endIndex": 33,
+ "endIndex": 34,
"startIndex": 21,
},
{
@@ -2563,7 +4037,7 @@ exports[`Events attributes (no white space, no value, no quotes) 1`] = `
"disabled",
"",
],
- "endIndex": 44,
+ "endIndex": 43,
"startIndex": 35,
},
{
@@ -2611,7 +4085,7 @@ exports[`Events attributes (no white space, no value, no quotes) 1`] = `
]
`;
-exports[`Events crazy attribute 1`] = `
+exports[`Events > crazy attribute 1`] = `
[
{
"$event": "opentagname",
@@ -2628,7 +4102,7 @@ exports[`Events crazy attribute 1`] = `
"",
"'",
],
- "endIndex": 8,
+ "endIndex": 9,
"startIndex": 3,
},
{
@@ -2673,7 +4147,7 @@ exports[`Events crazy attribute 1`] = `
]
`;
-exports[`Events double attribute 1`] = `
+exports[`Events > double attribute 1`] = `
[
{
"$event": "opentagname",
@@ -2727,7 +4201,7 @@ exports[`Events double attribute 1`] = `
]
`;
-exports[`Events double brackets 1`] = `
+exports[`Events > double brackets 1`] = `
[
{
"$event": "text",
@@ -2775,7 +4249,7 @@ exports[`Events double brackets 1`] = `
]
`;
-exports[`Events end slash: as part of attrib value of non-void element 1`] = `
+exports[`Events > end slash: as part of attrib value of non-void element 1`] = `
[
{
"$event": "opentagname",
@@ -2862,7 +4336,7 @@ exports[`Events end slash: as part of attrib value of non-void element 1`] = `
]
`;
-exports[`Events end slash: as part of attrib value of void element 1`] = `
+exports[`Events > end slash: as part of attrib value of void element 1`] = `
[
{
"$event": "opentagname",
@@ -2941,7 +4415,7 @@ exports[`Events end slash: as part of attrib value of void element 1`] = `
]
`;
-exports[`Events end slash: non-void element ending with /> 1`] = `
+exports[`Events > end slash: non-void element ending with /> 1`] = `
[
{
"$event": "opentagname",
@@ -3008,7 +4482,7 @@ exports[`Events end slash: non-void element ending with /> 1`] = `
]
`;
-exports[`Events end slash: non-void element ending with />, recognizeSelfClosing=true 1`] = `
+exports[`Events > end slash: non-void element ending with />, recognizeSelfClosing=true 1`] = `
[
{
"$event": "opentagname",
@@ -3075,7 +4549,7 @@ exports[`Events end slash: non-void element ending with />, recognizeSelfClosing
]
`;
-exports[`Events end slash: non-void element ending with />, xmlMode=true 1`] = `
+exports[`Events > end slash: non-void element ending with />, xmlMode=true 1`] = `
[
{
"$event": "opentagname",
@@ -3142,7 +4616,141 @@ exports[`Events end slash: non-void element ending with />, xmlMode=true 1`] = `
]
`;
-exports[`Events end slash: void element ending with /> 1`] = `
+exports[`Events > end slash: plaintext tag ending with />, recognizeSelfClosing=true 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "plaintext",
+ ],
+ "endIndex": 10,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "plaintext",
+ {},
+ false,
+ ],
+ "endIndex": 11,
+ "startIndex": 0,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "plaintext",
+ true,
+ ],
+ "endIndex": 11,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "b",
+ ],
+ "endIndex": 14,
+ "startIndex": 12,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "b",
+ {},
+ false,
+ ],
+ "endIndex": 14,
+ "startIndex": 12,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 15,
+ "startIndex": 15,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "b",
+ false,
+ ],
+ "endIndex": 19,
+ "startIndex": 16,
+ },
+]
+`;
+
+exports[`Events > end slash: special tag ending with />, recognizeSelfClosing=true 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "script",
+ ],
+ "endIndex": 7,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "script",
+ {},
+ false,
+ ],
+ "endIndex": 8,
+ "startIndex": 0,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "script",
+ true,
+ ],
+ "endIndex": 8,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "b",
+ ],
+ "endIndex": 11,
+ "startIndex": 9,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "b",
+ {},
+ false,
+ ],
+ "endIndex": 11,
+ "startIndex": 9,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 12,
+ "startIndex": 12,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "b",
+ false,
+ ],
+ "endIndex": 16,
+ "startIndex": 13,
+ },
+]
+`;
+
+exports[`Events > end slash: void element ending with /> 1`] = `
[
{
"$event": "opentagname",
@@ -3209,7 +4817,7 @@ exports[`Events end slash: void element ending with /> 1`] = `
]
`;
-exports[`Events end slash: void element ending with > 1`] = `
+exports[`Events > end slash: void element ending with > 1`] = `
[
{
"$event": "opentagname",
@@ -3276,7 +4884,7 @@ exports[`Events end slash: void element ending with > 1`] = `
]
`;
-exports[`Events end slash: void element ending with >, xmlMode=true 1`] = `
+exports[`Events > end slash: void element ending with >, xmlMode=true 1`] = `
[
{
"$event": "opentagname",
@@ -3343,7 +4951,7 @@ exports[`Events end slash: void element ending with >, xmlMode=true 1`] = `
]
`;
-exports[`Events entity in attribute (#276) 1`] = `
+exports[`Events > entity in attribute (#276) 1`] = `
[
{
"$event": "opentagname",
@@ -3360,7 +4968,7 @@ exports[`Events entity in attribute (#276) 1`] = `
"?&image_uri=1&ℑ=2&image=3",
""",
],
- "endIndex": 41,
+ "endIndex": 42,
"startIndex": 5,
},
{
@@ -3395,7 +5003,7 @@ exports[`Events entity in attribute (#276) 1`] = `
]
`;
-exports[`Events entity in attribute 1`] = `
+exports[`Events > entity in attribute 1`] = `
[
{
"$event": "opentagname",
@@ -3412,7 +5020,7 @@ exports[`Events entity in attribute 1`] = `
"http://example.com/pa#x61ge?param=value&param2&param3=<val&; & &",
"'",
],
- "endIndex": 81,
+ "endIndex": 82,
"startIndex": 3,
},
{
@@ -3439,7 +5047,47 @@ exports[`Events entity in attribute 1`] = `
]
`;
-exports[`Events entity in title (#592) 1`] = `
+exports[`Events > entity in textarea 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "textarea",
+ ],
+ "endIndex": 9,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "textarea",
+ {},
+ false,
+ ],
+ "endIndex": 9,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "&",
+ ],
+ "endIndex": 14,
+ "startIndex": 10,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "textarea",
+ false,
+ ],
+ "endIndex": 25,
+ "startIndex": 15,
+ },
+]
+`;
+
+exports[`Events > entity in title (#592) 1`] = `
[
{
"$event": "opentagname",
@@ -3479,7 +5127,7 @@ exports[`Events entity in title (#592) 1`] = `
]
`;
-exports[`Events entity in title - decodeEntities=false (#592) 1`] = `
+exports[`Events > entity in title - decodeEntities=false (#592) 1`] = `
[
{
"$event": "opentagname",
@@ -3519,7 +5167,7 @@ exports[`Events entity in title - decodeEntities=false (#592) 1`] = `
]
`;
-exports[`Events leading lt 1`] = `
+exports[`Events > leading lt 1`] = `
[
{
"$event": "text",
@@ -3532,7 +5180,7 @@ exports[`Events leading lt 1`] = `
]
`;
-exports[`Events legacy entities 1`] = `
+exports[`Events > legacy entities 1`] = `
[
{
"$event": "text",
@@ -3545,7 +5193,7 @@ exports[`Events legacy entities 1`] = `
]
`;
-exports[`Events legacy entities fail 1`] = `
+exports[`Events > legacy entities fail 1`] = `
[
{
"$event": "text",
@@ -3558,7 +5206,7 @@ exports[`Events legacy entities fail 1`] = `
]
`;
-exports[`Events lt followed by whitespace 1`] = `
+exports[`Events > lt followed by whitespace 1`] = `
[
{
"$event": "text",
@@ -3571,7 +5219,7 @@ exports[`Events lt followed by whitespace 1`] = `
]
`;
-exports[`Events named entities 1`] = `
+exports[`Events > named entities 1`] = `
[
{
"$event": "text",
@@ -3584,7 +5232,7 @@ exports[`Events named entities 1`] = `
]
`;
-exports[`Events numeric entities 1`] = `
+exports[`Events > numeric entities 1`] = `
[
{
"$event": "text",
@@ -3597,7 +5245,7 @@ exports[`Events numeric entities 1`] = `
]
`;
-exports[`Events open-implies-close case of (non-br) void close tag in non-XML mode 1`] = `
+exports[`Events > open-implies-close case of (non-br) void close tag in non-XML mode 1`] = `
[
{
"$event": "opentagname",
@@ -3656,7 +5304,47 @@ exports[`Events open-implies-close case of (non-br) void close tag in non-XML mo
]
`;
-exports[`Events simple 1`] = `
+exports[`Events > plaintext 1`] = `
+[
+ {
+ "$event": "opentagname",
+ "data": [
+ "plaintext",
+ ],
+ "endIndex": 10,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "plaintext",
+ {},
+ false,
+ ],
+ "endIndex": 10,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "<b>hi</b>",
+ ],
+ "endIndex": 19,
+ "startIndex": 11,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "plaintext",
+ true,
+ ],
+ "endIndex": 20,
+ "startIndex": 20,
+ },
+]
+`;
+
+exports[`Events > simple 1`] = `
[
{
"$event": "opentagname",
@@ -3708,7 +5396,7 @@ exports[`Events simple 1`] = `
]
`;
-exports[`Events tag names are not ASCII alpha 1`] = `
+exports[`Events > tag names are not ASCII alpha 1`] = `
[
{
"$event": "text",
@@ -3735,7 +5423,7 @@ exports[`Events tag names are not ASCII alpha 1`] = `
]
`;
-exports[`Events xml entities 1`] = `
+exports[`Events > xml entities 1`] = `
[
{
"$event": "text",
diff --git a/src/__snapshots__/Tokenizer.spec.ts.snap b/src/__snapshots__/Tokenizer.spec.ts.snap
index 36722cd..70f7e69 100644
--- a/src/__snapshots__/Tokenizer.spec.ts.snap
+++ b/src/__snapshots__/Tokenizer.spec.ts.snap
@@ -1,6 +1,350 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Tokenizer should handle entities for XML entities 1`] = `
+exports[`Tokenizer > should close comments on --!> 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 8,
+ 3,
+ ],
+ [
+ "onopentagname",
+ 10,
+ 13,
+ ],
+ [
+ "onattribname",
+ 14,
+ 17,
+ ],
+ [
+ "onattribdata",
+ 18,
+ 19,
+ ],
+ [
+ "onattribend",
+ 1,
+ 19,
+ ],
+ [
+ "onattribname",
+ 20,
+ 27,
+ ],
+ [
+ "onattribdata",
+ 28,
+ 36,
+ ],
+ [
+ "onattribend",
+ 1,
+ 36,
+ ],
+ [
+ "onopentagend",
+ 36,
+ ],
+ [
+ "ontext",
+ 37,
+ 40,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should close special tags on end tags ending with /> > for script tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 7,
+ ],
+ [
+ "onopentagend",
+ 7,
+ ],
+ [
+ "ontext",
+ 8,
+ 12,
+ ],
+ [
+ "onclosetag",
+ 14,
+ 20,
+ ],
+ [
+ "onopentagname",
+ 23,
+ 26,
+ ],
+ [
+ "onopentagend",
+ 26,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should close special tags on end tags ending with /> > for style tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onopentagend",
+ 6,
+ ],
+ [
+ "ontext",
+ 7,
+ 11,
+ ],
+ [
+ "onclosetag",
+ 13,
+ 18,
+ ],
+ [
+ "onopentagname",
+ 21,
+ 24,
+ ],
+ [
+ "onopentagend",
+ 24,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should close special tags on end tags ending with /> > for textarea tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 9,
+ ],
+ [
+ "onopentagend",
+ 9,
+ ],
+ [
+ "ontext",
+ 10,
+ 14,
+ ],
+ [
+ "onclosetag",
+ 16,
+ 24,
+ ],
+ [
+ "onopentagname",
+ 27,
+ 30,
+ ],
+ [
+ "onopentagend",
+ 30,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should close special tags on end tags ending with /> > for title tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onopentagend",
+ 6,
+ ],
+ [
+ "ontext",
+ 7,
+ 11,
+ ],
+ [
+ "onclosetag",
+ 13,
+ 18,
+ ],
+ [
+ "onopentagname",
+ 21,
+ 24,
+ ],
+ [
+ "onopentagend",
+ 24,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should correctly mark attributes > for double quotes attribute 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onattribname",
+ 5,
+ 8,
+ ],
+ [
+ "onattribdata",
+ 10,
+ 11,
+ ],
+ [
+ "onattribend",
+ 3,
+ 12,
+ ],
+ [
+ "onopentagend",
+ 13,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should correctly mark attributes > for no quotes attribute 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onattribname",
+ 5,
+ 8,
+ ],
+ [
+ "onattribdata",
+ 9,
+ 12,
+ ],
+ [
+ "onattribend",
+ 1,
+ 12,
+ ],
+ [
+ "onopentagend",
+ 13,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should correctly mark attributes > for no value attribute 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onattribname",
+ 5,
+ 12,
+ ],
+ [
+ "onattribend",
+ 0,
+ 12,
+ ],
+ [
+ "onopentagend",
+ 13,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should correctly mark attributes > for single quotes attribute 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onattribname",
+ 5,
+ 8,
+ ],
+ [
+ "onattribdata",
+ 10,
+ 11,
+ ],
+ [
+ "onattribend",
+ 2,
+ 12,
+ ],
+ [
+ "onopentagend",
+ 13,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should handle abruptly closed comments 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 5,
+ 1,
+ ],
+ [
+ "ontext",
+ 6,
+ 10,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should handle entities > for XML entities 1`] = `
[
[
"ontextentity",
@@ -53,7 +397,7 @@ exports[`Tokenizer should handle entities for XML entities 1`] = `
]
`;
-exports[`Tokenizer should handle entities for entities in attributes (#276) 1`] = `
+exports[`Tokenizer > should handle entities > for entities in attributes (#276) 1`] = `
[
[
"onopentagname",
@@ -82,7 +426,7 @@ exports[`Tokenizer should handle entities for entities in attributes (#276) 1`]
[
"onattribend",
3,
- 41,
+ 42,
],
[
"onselfclosingtag",
@@ -109,7 +453,7 @@ exports[`Tokenizer should handle entities for entities in attributes (#276) 1`]
]
`;
-exports[`Tokenizer should handle entities for multi-byte entities 1`] = `
+exports[`Tokenizer > should handle entities > for multi-byte entities 1`] = `
[
[
"ontextentity",
@@ -127,7 +471,7 @@ exports[`Tokenizer should handle entities for multi-byte entities 1`] = `
]
`;
-exports[`Tokenizer should handle entities for trailing legacy entity 1`] = `
+exports[`Tokenizer > should handle entities > for trailing legacy entity 1`] = `
[
[
"ontextentity",
@@ -150,7 +494,213 @@ exports[`Tokenizer should handle entities for trailing legacy entity 1`] = `
]
`;
-exports[`Tokenizer should not break after special tag followed by an entity for normal special tag 1`] = `
+exports[`Tokenizer > should ignore empty closing tags 1`] = `
+[
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing iframe tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 7,
+ ],
+ [
+ "onselfclosingtag",
+ 9,
+ ],
+ [
+ "ontext",
+ 10,
+ 21,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing noembed tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 8,
+ ],
+ [
+ "onselfclosingtag",
+ 10,
+ ],
+ [
+ "ontext",
+ 11,
+ 22,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing noframes tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 9,
+ ],
+ [
+ "onselfclosingtag",
+ 11,
+ ],
+ [
+ "ontext",
+ 12,
+ 23,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing plaintext tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 10,
+ ],
+ [
+ "onselfclosingtag",
+ 12,
+ ],
+ [
+ "ontext",
+ 13,
+ 24,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing script tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 7,
+ ],
+ [
+ "onselfclosingtag",
+ 9,
+ ],
+ [
+ "ontext",
+ 10,
+ 21,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing style tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onselfclosingtag",
+ 8,
+ ],
+ [
+ "ontext",
+ 9,
+ 20,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing textarea tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 9,
+ ],
+ [
+ "onselfclosingtag",
+ 11,
+ ],
+ [
+ "ontext",
+ 12,
+ 23,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing title tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onselfclosingtag",
+ 8,
+ ],
+ [
+ "ontext",
+ 9,
+ 20,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should ignore self-closing slash in text-only HTML tags > for self-closing xmp tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onselfclosingtag",
+ 6,
+ ],
+ [
+ "ontext",
+ 7,
+ 18,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should not break after special tag followed by an entity > for normal special tag 1`] = `
[
[
"onopentagname",
@@ -191,7 +741,7 @@ exports[`Tokenizer should not break after special tag followed by an entity for
]
`;
-exports[`Tokenizer should not break after special tag followed by an entity for self-closing special tag 1`] = `
+exports[`Tokenizer > should not break after special tag followed by an entity > for recognized self-closing special tag 1`] = `
[
[
"onopentagname",
@@ -222,7 +772,29 @@ exports[`Tokenizer should not break after special tag followed by an entity for
]
`;
-exports[`Tokenizer should not lose data when pausing 1`] = `
+exports[`Tokenizer > should not break after special tag followed by an entity > for self-closing special tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onselfclosingtag",
+ 8,
+ ],
+ [
+ "ontext",
+ 9,
+ 20,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should not lose data when pausing 1`] = `
[
[
"ontextentity",
@@ -240,30 +812,65 @@ exports[`Tokenizer should not lose data when pausing 1`] = `
]
`;
-exports[`Tokenizer should support self-closing special tags for self-closing script tag 1`] = `
+exports[`Tokenizer > should not treat <!--> as a complete comment in xmlMode 1`] = `
[
[
"onopentagname",
1,
- 7,
+ 5,
],
[
- "onselfclosingtag",
- 9,
+ "onopentagend",
+ 5,
],
[
"onopentagname",
+ 7,
11,
- 14,
],
[
"onopentagend",
- 14,
+ 11,
],
[
- "onclosetag",
+ "ontext",
+ 12,
17,
- 20,
+ ],
+ [
+ "onclosetag",
+ 19,
+ 23,
+ ],
+ [
+ "oncomment",
+ 28,
+ 58,
+ 2,
+ ],
+ [
+ "onopentagname",
+ 60,
+ 64,
+ ],
+ [
+ "onopentagend",
+ 64,
+ ],
+ [
+ "ontext",
+ 65,
+ 68,
+ ],
+ [
+ "onclosetag",
+ 70,
+ 74,
+ ],
+ [
+ "onclosetag",
+ 77,
+ 81,
],
[
"onend",
@@ -271,30 +878,35 @@ exports[`Tokenizer should support self-closing special tags for self-closing scr
]
`;
-exports[`Tokenizer should support self-closing special tags for self-closing style tag 1`] = `
+exports[`Tokenizer > should support standard special tags > for normal script tag 1`] = `
[
[
"onopentagname",
1,
- 6,
+ 7,
],
[
- "onselfclosingtag",
- 8,
+ "onopentagend",
+ 7,
],
[
- "onopentagname",
+ "onclosetag",
10,
- 13,
+ 16,
+ ],
+ [
+ "onopentagname",
+ 18,
+ 21,
],
[
"onopentagend",
- 13,
+ 21,
],
[
"onclosetag",
- 16,
- 19,
+ 24,
+ 27,
],
[
"onend",
@@ -302,7 +914,7 @@ exports[`Tokenizer should support self-closing special tags for self-closing sty
]
`;
-exports[`Tokenizer should support self-closing special tags for self-closing title tag 1`] = `
+exports[`Tokenizer > should support standard special tags > for normal sitle tag 1`] = `
[
[
"onopentagname",
@@ -310,58 +922,236 @@ exports[`Tokenizer should support self-closing special tags for self-closing tit
6,
],
[
- "onselfclosingtag",
- 8,
+ "onopentagend",
+ 6,
+ ],
+ [
+ "onclosetag",
+ 9,
+ 14,
],
[
"onopentagname",
- 10,
- 13,
+ 16,
+ 19,
],
[
"onopentagend",
- 13,
+ 19,
],
[
"onclosetag",
+ 22,
+ 25,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should support standard special tags > for normal style tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 6,
+ ],
+ [
+ "onopentagend",
+ 6,
+ ],
+ [
+ "onclosetag",
+ 9,
+ 14,
+ ],
+ [
+ "onopentagname",
16,
19,
],
[
+ "onopentagend",
+ 19,
+ ],
+ [
+ "onclosetag",
+ 22,
+ 25,
+ ],
+ [
"onend",
],
]
`;
-exports[`Tokenizer should support standard special tags for normal script tag 1`] = `
+exports[`Tokenizer > should support standard special tags > for normal textarea tag 1`] = `
[
[
"onopentagname",
1,
- 7,
+ 9,
],
[
"onopentagend",
- 7,
+ 9,
+ ],
+ [
+ "onclosetag",
+ 12,
+ 20,
+ ],
+ [
+ "onopentagname",
+ 22,
+ 25,
+ ],
+ [
+ "onopentagend",
+ 25,
+ ],
+ [
+ "onclosetag",
+ 28,
+ 31,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should support standard special tags > for normal xmp tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onopentagend",
+ 4,
],
[
"onclosetag",
+ 7,
10,
- 16,
],
[
"onopentagname",
+ 12,
+ 15,
+ ],
+ [
+ "onopentagend",
+ 15,
+ ],
+ [
+ "onclosetag",
18,
21,
],
[
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should terminate XML processing instructions on ?> 1`] = `
+[
+ [
+ "onprocessinginstruction",
+ 2,
+ 25,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat <!> as a bogus comment 1`] = `
+[
+ [
+ "oncomment",
+ 2,
+ 2,
+ 0,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat <!-> as a bogus comment 1`] = `
+[
+ [
+ "oncomment",
+ 2,
+ 3,
+ 0,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat <!DOCTYPEhtml> as a declaration 1`] = `
+[
+ [
+ "ondeclaration",
+ 2,
+ 13,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat <? and <! as bogus comments in HTML 1`] = `
+[
+ [
+ "oncomment",
+ 1,
+ 5,
+ 0,
+ ],
+ [
+ "oncomment",
+ 8,
+ 11,
+ 0,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat html inside raw-text tags as text > for div inside iframe tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 7,
+ ],
+ [
"onopentagend",
- 21,
+ 7,
],
[
- "onclosetag",
+ "ontext",
+ 8,
24,
- 27,
+ ],
+ [
+ "onclosetag",
+ 26,
+ 32,
],
[
"onend",
@@ -369,35 +1159,80 @@ exports[`Tokenizer should support standard special tags for normal script tag 1`
]
`;
-exports[`Tokenizer should support standard special tags for normal sitle tag 1`] = `
+exports[`Tokenizer > should treat html inside raw-text tags as text > for div inside noembed tag 1`] = `
[
[
"onopentagname",
1,
- 6,
+ 8,
],
[
"onopentagend",
- 6,
+ 8,
+ ],
+ [
+ "ontext",
+ 9,
+ 25,
],
[
"onclosetag",
+ 27,
+ 34,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat html inside raw-text tags as text > for div inside noframes tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
9,
- 14,
],
[
+ "onopentagend",
+ 9,
+ ],
+ [
+ "ontext",
+ 10,
+ 26,
+ ],
+ [
+ "onclosetag",
+ 28,
+ 36,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat html inside special tags as text > for div inside script tag 1`] = `
+[
+ [
"onopentagname",
- 16,
- 19,
+ 1,
+ 7,
],
[
"onopentagend",
+ 7,
+ ],
+ [
+ "ontext",
+ 8,
19,
],
[
"onclosetag",
- 22,
- 25,
+ 21,
+ 27,
],
[
"onend",
@@ -405,7 +1240,7 @@ exports[`Tokenizer should support standard special tags for normal sitle tag 1`]
]
`;
-exports[`Tokenizer should support standard special tags for normal style tag 1`] = `
+exports[`Tokenizer > should treat html inside special tags as text > for div inside style tag 1`] = `
[
[
"onopentagname",
@@ -417,22 +1252,67 @@ exports[`Tokenizer should support standard special tags for normal style tag 1`]
6,
],
[
+ "ontext",
+ 7,
+ 18,
+ ],
+ [
"onclosetag",
+ 20,
+ 25,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat html inside special tags as text > for div inside textarea tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
9,
- 14,
],
[
+ "onopentagend",
+ 9,
+ ],
+ [
+ "ontext",
+ 10,
+ 21,
+ ],
+ [
+ "onclosetag",
+ 23,
+ 31,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should treat html inside special tags as text > for div inside title tag 1`] = `
+[
+ [
"onopentagname",
- 16,
- 19,
+ 1,
+ 6,
],
[
"onopentagend",
- 19,
+ 6,
+ ],
+ [
+ "ontext",
+ 7,
+ 18,
],
[
"onclosetag",
- 22,
+ 20,
25,
],
[
@@ -440,3 +1320,114 @@ exports[`Tokenizer should support standard special tags for normal style tag 1`]
],
]
`;
+
+exports[`Tokenizer > should treat html inside special tags as text > for div inside xmp tag 1`] = `
+[
+ [
+ "onopentagname",
+ 1,
+ 4,
+ ],
+ [
+ "onopentagend",
+ 4,
+ ],
+ [
+ "ontext",
+ 5,
+ 16,
+ ],
+ [
+ "onclosetag",
+ 18,
+ 21,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!-- 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 4,
+ 0,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!--- 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 5,
+ 1,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!---- 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 6,
+ 2,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!--a- 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 6,
+ 1,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!--a-- 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 7,
+ 2,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
+
+exports[`Tokenizer > should trim unfinished HTML comment closes at EOF for <!--a--! 1`] = `
+[
+ [
+ "oncomment",
+ 4,
+ 8,
+ 3,
+ ],
+ [
+ "onend",
+ ],
+]
+`;
diff --git a/src/__snapshots__/WebWritableStream.spec.ts.snap b/src/__snapshots__/WebWritableStream.spec.ts.snap
new file mode 100644
index 0000000..3012e43
--- /dev/null
+++ b/src/__snapshots__/WebWritableStream.spec.ts.snap
@@ -0,0 +1,5809 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`WebWritableStream > Atom feed 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version="1.0" encoding="utf-8"",
+ ],
+ "endIndex": 36,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 38,
+ "startIndex": 37,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " http://en.wikipedia.org/wiki/Atom_%28standard%29 ",
+ ],
+ "endIndex": 95,
+ "startIndex": 39,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 95,
+ "startIndex": 39,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 96,
+ "startIndex": 96,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "feed",
+ ],
+ "endIndex": 102,
+ "startIndex": 97,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns",
+ "http://www.w3.org/2005/Atom",
+ """,
+ ],
+ "endIndex": 138,
+ "startIndex": 103,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "feed",
+ {
+ "xmlns": "http://www.w3.org/2005/Atom",
+ },
+ false,
+ ],
+ "endIndex": 138,
+ "startIndex": 97,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 140,
+ "startIndex": 139,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 147,
+ "startIndex": 141,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 147,
+ "startIndex": 141,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Example Feed",
+ ],
+ "endIndex": 159,
+ "startIndex": 148,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 167,
+ "startIndex": 160,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 169,
+ "startIndex": 168,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "subtitle",
+ ],
+ "endIndex": 179,
+ "startIndex": 170,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "subtitle",
+ {},
+ false,
+ ],
+ "endIndex": 179,
+ "startIndex": 170,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "A subtitle.",
+ ],
+ "endIndex": 190,
+ "startIndex": 180,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "subtitle",
+ false,
+ ],
+ "endIndex": 201,
+ "startIndex": 191,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 203,
+ "startIndex": 202,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 209,
+ "startIndex": 204,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/feed/",
+ """,
+ ],
+ "endIndex": 241,
+ "startIndex": 210,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rel",
+ "self",
+ """,
+ ],
+ "endIndex": 252,
+ "startIndex": 242,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/feed/",
+ "rel": "self",
+ },
+ false,
+ ],
+ "endIndex": 254,
+ "startIndex": 204,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ true,
+ ],
+ "endIndex": 254,
+ "startIndex": 204,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 256,
+ "startIndex": 255,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 262,
+ "startIndex": 257,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/",
+ """,
+ ],
+ "endIndex": 289,
+ "startIndex": 263,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/",
+ },
+ false,
+ ],
+ "endIndex": 291,
+ "startIndex": 257,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ true,
+ ],
+ "endIndex": 291,
+ "startIndex": 257,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 293,
+ "startIndex": 292,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "id",
+ ],
+ "endIndex": 297,
+ "startIndex": 294,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "id",
+ {},
+ false,
+ ],
+ "endIndex": 297,
+ "startIndex": 294,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6",
+ ],
+ "endIndex": 342,
+ "startIndex": 298,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "id",
+ false,
+ ],
+ "endIndex": 347,
+ "startIndex": 343,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 349,
+ "startIndex": 348,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "updated",
+ ],
+ "endIndex": 358,
+ "startIndex": 350,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "updated",
+ {},
+ false,
+ ],
+ "endIndex": 358,
+ "startIndex": 350,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2003-12-13T18:30:02Z",
+ ],
+ "endIndex": 378,
+ "startIndex": 359,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "updated",
+ false,
+ ],
+ "endIndex": 388,
+ "startIndex": 379,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 390,
+ "startIndex": 389,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "author",
+ ],
+ "endIndex": 398,
+ "startIndex": 391,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "author",
+ {},
+ false,
+ ],
+ "endIndex": 398,
+ "startIndex": 391,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 401,
+ "startIndex": 399,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "name",
+ ],
+ "endIndex": 407,
+ "startIndex": 402,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "name",
+ {},
+ false,
+ ],
+ "endIndex": 407,
+ "startIndex": 402,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "John Doe",
+ ],
+ "endIndex": 415,
+ "startIndex": 408,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "name",
+ false,
+ ],
+ "endIndex": 422,
+ "startIndex": 416,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 425,
+ "startIndex": 423,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "email",
+ ],
+ "endIndex": 432,
+ "startIndex": 426,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "email",
+ {},
+ false,
+ ],
+ "endIndex": 432,
+ "startIndex": 426,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "johndoe@example.com",
+ ],
+ "endIndex": 451,
+ "startIndex": 433,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "email",
+ false,
+ ],
+ "endIndex": 459,
+ "startIndex": 452,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 461,
+ "startIndex": 460,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "author",
+ false,
+ ],
+ "endIndex": 470,
+ "startIndex": 462,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 473,
+ "startIndex": 471,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "entry",
+ ],
+ "endIndex": 480,
+ "startIndex": 474,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "entry",
+ {},
+ false,
+ ],
+ "endIndex": 480,
+ "startIndex": 474,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 483,
+ "startIndex": 481,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 490,
+ "startIndex": 484,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 490,
+ "startIndex": 484,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Atom-Powered Robots Run Amok",
+ ],
+ "endIndex": 518,
+ "startIndex": 491,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 526,
+ "startIndex": 519,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 529,
+ "startIndex": 527,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 535,
+ "startIndex": 530,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03",
+ """,
+ ],
+ "endIndex": 579,
+ "startIndex": 536,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/2003/12/13/atom03",
+ },
+ false,
+ ],
+ "endIndex": 581,
+ "startIndex": 530,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ true,
+ ],
+ "endIndex": 581,
+ "startIndex": 530,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 584,
+ "startIndex": 582,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 590,
+ "startIndex": 585,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rel",
+ "alternate",
+ """,
+ ],
+ "endIndex": 606,
+ "startIndex": 591,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "type",
+ "text/html",
+ """,
+ ],
+ "endIndex": 623,
+ "startIndex": 607,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03.html",
+ """,
+ ],
+ "endIndex": 672,
+ "startIndex": 624,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/2003/12/13/atom03.html",
+ "rel": "alternate",
+ "type": "text/html",
+ },
+ false,
+ ],
+ "endIndex": 673,
+ "startIndex": 585,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ true,
+ ],
+ "endIndex": 673,
+ "startIndex": 585,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 676,
+ "startIndex": 674,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 682,
+ "startIndex": 677,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rel",
+ "edit",
+ """,
+ ],
+ "endIndex": 693,
+ "startIndex": 683,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03/edit",
+ """,
+ ],
+ "endIndex": 742,
+ "startIndex": 694,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/2003/12/13/atom03/edit",
+ "rel": "edit",
+ },
+ false,
+ ],
+ "endIndex": 743,
+ "startIndex": 677,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ true,
+ ],
+ "endIndex": 743,
+ "startIndex": 677,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 746,
+ "startIndex": 744,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "id",
+ ],
+ "endIndex": 750,
+ "startIndex": 747,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "id",
+ {},
+ false,
+ ],
+ "endIndex": 750,
+ "startIndex": 747,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
+ ],
+ "endIndex": 795,
+ "startIndex": 751,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "id",
+ false,
+ ],
+ "endIndex": 800,
+ "startIndex": 796,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 803,
+ "startIndex": 801,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "updated",
+ ],
+ "endIndex": 812,
+ "startIndex": 804,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "updated",
+ {},
+ false,
+ ],
+ "endIndex": 812,
+ "startIndex": 804,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2003-12-13T18:30:02Z",
+ ],
+ "endIndex": 832,
+ "startIndex": 813,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "updated",
+ false,
+ ],
+ "endIndex": 842,
+ "startIndex": 833,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 845,
+ "startIndex": 843,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "content",
+ ],
+ "endIndex": 854,
+ "startIndex": 846,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "type",
+ "html",
+ """,
+ ],
+ "endIndex": 866,
+ "startIndex": 855,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "content",
+ {
+ "type": "html",
+ },
+ false,
+ ],
+ "endIndex": 866,
+ "startIndex": 846,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "p",
+ ],
+ "endIndex": 869,
+ "startIndex": 867,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "p",
+ {},
+ false,
+ ],
+ "endIndex": 869,
+ "startIndex": 867,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Some content.",
+ ],
+ "endIndex": 882,
+ "startIndex": 870,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "p",
+ false,
+ ],
+ "endIndex": 886,
+ "startIndex": 883,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "content",
+ false,
+ ],
+ "endIndex": 896,
+ "startIndex": 887,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 898,
+ "startIndex": 897,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "entry",
+ false,
+ ],
+ "endIndex": 906,
+ "startIndex": 899,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 909,
+ "startIndex": 907,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "entry",
+ ],
+ "endIndex": 916,
+ "startIndex": 910,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "entry",
+ {},
+ false,
+ ],
+ "endIndex": 917,
+ "startIndex": 910,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "entry",
+ true,
+ ],
+ "endIndex": 917,
+ "startIndex": 910,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+",
+ ],
+ "endIndex": 919,
+ "startIndex": 918,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "feed",
+ false,
+ ],
+ "endIndex": 926,
+ "startIndex": 920,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 927,
+ "startIndex": 927,
+ },
+]
+`;
+
+exports[`WebWritableStream > Attributes 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!doctype html",
+ ],
+ "endIndex": 14,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 15,
+ "startIndex": 15,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "html",
+ ],
+ "endIndex": 21,
+ "startIndex": 16,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "html",
+ {},
+ false,
+ ],
+ "endIndex": 21,
+ "startIndex": 16,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 22,
+ "startIndex": 22,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "head",
+ ],
+ "endIndex": 28,
+ "startIndex": 23,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "head",
+ {},
+ false,
+ ],
+ "endIndex": 28,
+ "startIndex": 23,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 30,
+ "startIndex": 29,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 37,
+ "startIndex": 31,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 37,
+ "startIndex": 31,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Attributes test",
+ ],
+ "endIndex": 52,
+ "startIndex": 38,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 60,
+ "startIndex": 53,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 61,
+ "startIndex": 61,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "head",
+ false,
+ ],
+ "endIndex": 68,
+ "startIndex": 62,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 69,
+ "startIndex": 69,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "body",
+ ],
+ "endIndex": 75,
+ "startIndex": 70,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "body",
+ {},
+ false,
+ ],
+ "endIndex": 75,
+ "startIndex": 70,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 77,
+ "startIndex": 76,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " Normal attributes ",
+ ],
+ "endIndex": 103,
+ "startIndex": 78,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 103,
+ "startIndex": 78,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 105,
+ "startIndex": 104,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "button",
+ ],
+ "endIndex": 113,
+ "startIndex": 106,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "id",
+ "test0",
+ """,
+ ],
+ "endIndex": 124,
+ "startIndex": 114,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "class",
+ "value0",
+ """,
+ ],
+ "endIndex": 139,
+ "startIndex": 125,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "title",
+ "value1",
+ """,
+ ],
+ "endIndex": 154,
+ "startIndex": 140,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "button",
+ {
+ "class": "value0",
+ "id": "test0",
+ "title": "value1",
+ },
+ false,
+ ],
+ "endIndex": 154,
+ "startIndex": 106,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "class="value0" title="value1"",
+ ],
+ "endIndex": 183,
+ "startIndex": 155,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "button",
+ false,
+ ],
+ "endIndex": 192,
+ "startIndex": 184,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 195,
+ "startIndex": 193,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " Attributes with no quotes or value ",
+ ],
+ "endIndex": 238,
+ "startIndex": 196,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 238,
+ "startIndex": 196,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 240,
+ "startIndex": 239,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "button",
+ ],
+ "endIndex": 248,
+ "startIndex": 241,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "id",
+ "test1",
+ """,
+ ],
+ "endIndex": 259,
+ "startIndex": 249,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "class",
+ "value2",
+ null,
+ ],
+ "endIndex": 272,
+ "startIndex": 260,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "disabled",
+ "",
+ ],
+ "endIndex": 281,
+ "startIndex": 273,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "button",
+ {
+ "class": "value2",
+ "disabled": "",
+ "id": "test1",
+ },
+ false,
+ ],
+ "endIndex": 281,
+ "startIndex": 241,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "class=value2 disabled",
+ ],
+ "endIndex": 302,
+ "startIndex": 282,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "button",
+ false,
+ ],
+ "endIndex": 311,
+ "startIndex": 303,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 314,
+ "startIndex": 312,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " Attributes with no space between them. No valid, but accepted by the browser ",
+ ],
+ "endIndex": 399,
+ "startIndex": 315,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 399,
+ "startIndex": 315,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 401,
+ "startIndex": 400,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "button",
+ ],
+ "endIndex": 409,
+ "startIndex": 402,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "id",
+ "test2",
+ """,
+ ],
+ "endIndex": 420,
+ "startIndex": 410,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "class",
+ "value4",
+ """,
+ ],
+ "endIndex": 435,
+ "startIndex": 421,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "title",
+ "value5",
+ """,
+ ],
+ "endIndex": 449,
+ "startIndex": 435,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "button",
+ {
+ "class": "value4",
+ "id": "test2",
+ "title": "value5",
+ },
+ false,
+ ],
+ "endIndex": 449,
+ "startIndex": 402,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "class="value4"title="value5"",
+ ],
+ "endIndex": 477,
+ "startIndex": 450,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "button",
+ false,
+ ],
+ "endIndex": 486,
+ "startIndex": 478,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 487,
+ "startIndex": 487,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "body",
+ false,
+ ],
+ "endIndex": 494,
+ "startIndex": 488,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 495,
+ "startIndex": 495,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "html",
+ false,
+ ],
+ "endIndex": 502,
+ "startIndex": 496,
+ },
+]
+`;
+
+exports[`WebWritableStream > Basic html 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!DOCTYPE html",
+ ],
+ "endIndex": 14,
+ "startIndex": 0,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "html",
+ ],
+ "endIndex": 20,
+ "startIndex": 15,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "html",
+ {},
+ false,
+ ],
+ "endIndex": 20,
+ "startIndex": 15,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 27,
+ "startIndex": 21,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 27,
+ "startIndex": 21,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "The Title",
+ ],
+ "endIndex": 36,
+ "startIndex": 28,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 44,
+ "startIndex": 37,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "body",
+ ],
+ "endIndex": 50,
+ "startIndex": 45,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "body",
+ {},
+ false,
+ ],
+ "endIndex": 50,
+ "startIndex": 45,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Hello world",
+ ],
+ "endIndex": 61,
+ "startIndex": 51,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "body",
+ false,
+ ],
+ "endIndex": 68,
+ "startIndex": 62,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "html",
+ false,
+ ],
+ "endIndex": 75,
+ "startIndex": 69,
+ },
+]
+`;
+
+exports[`WebWritableStream > RDF feed 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version="1.0" encoding="UTF-8"",
+ ],
+ "endIndex": 36,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 38,
+ "startIndex": 37,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "rdf:RDF",
+ ],
+ "endIndex": 47,
+ "startIndex": 39,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:rdf",
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ """,
+ ],
+ "endIndex": 103,
+ "startIndex": 48,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns",
+ "http://purl.org/rss/1.0/",
+ """,
+ ],
+ "endIndex": 136,
+ "startIndex": 104,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:ev",
+ "http://purl.org/rss/1.0/modules/event/",
+ """,
+ ],
+ "endIndex": 186,
+ "startIndex": 137,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:content",
+ "http://purl.org/rss/1.0/modules/content/",
+ """,
+ ],
+ "endIndex": 243,
+ "startIndex": 187,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:taxo",
+ "http://purl.org/rss/1.0/modules/taxonomy/",
+ """,
+ ],
+ "endIndex": 298,
+ "startIndex": 244,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:dc",
+ "http://purl.org/dc/elements/1.1/",
+ """,
+ ],
+ "endIndex": 342,
+ "startIndex": 299,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:syn",
+ "http://purl.org/rss/1.0/modules/syndication/",
+ """,
+ ],
+ "endIndex": 399,
+ "startIndex": 343,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:dcterms",
+ "http://purl.org/dc/terms/",
+ """,
+ ],
+ "endIndex": 441,
+ "startIndex": 400,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:admin",
+ "http://webns.net/mvcb/",
+ """,
+ ],
+ "endIndex": 478,
+ "startIndex": 442,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "rdf:RDF",
+ {
+ "xmlns": "http://purl.org/rss/1.0/",
+ "xmlns:admin": "http://webns.net/mvcb/",
+ "xmlns:content": "http://purl.org/rss/1.0/modules/content/",
+ "xmlns:dc": "http://purl.org/dc/elements/1.1/",
+ "xmlns:dcterms": "http://purl.org/dc/terms/",
+ "xmlns:ev": "http://purl.org/rss/1.0/modules/event/",
+ "xmlns:rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ "xmlns:syn": "http://purl.org/rss/1.0/modules/syndication/",
+ "xmlns:taxo": "http://purl.org/rss/1.0/modules/taxonomy/",
+ },
+ false,
+ ],
+ "endIndex": 478,
+ "startIndex": 39,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 480,
+ "startIndex": 479,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "channel",
+ ],
+ "endIndex": 489,
+ "startIndex": 481,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rdf:about",
+ "https://github.com/fb55/htmlparser2/",
+ """,
+ ],
+ "endIndex": 538,
+ "startIndex": 490,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "channel",
+ {
+ "rdf:about": "https://github.com/fb55/htmlparser2/",
+ },
+ false,
+ ],
+ "endIndex": 538,
+ "startIndex": 481,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 541,
+ "startIndex": 539,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 548,
+ "startIndex": 542,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 548,
+ "startIndex": 542,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "A title to parse and remember",
+ ],
+ "endIndex": 577,
+ "startIndex": 549,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 585,
+ "startIndex": 578,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 588,
+ "startIndex": 586,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 594,
+ "startIndex": 589,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 594,
+ "startIndex": 589,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "https://github.com/fb55/htmlparser2/",
+ ],
+ "endIndex": 630,
+ "startIndex": 595,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 637,
+ "startIndex": 631,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 640,
+ "startIndex": 638,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 653,
+ "startIndex": 641,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 654,
+ "startIndex": 641,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ true,
+ ],
+ "endIndex": 654,
+ "startIndex": 641,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 657,
+ "startIndex": 655,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:language",
+ ],
+ "endIndex": 670,
+ "startIndex": 658,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:language",
+ {},
+ false,
+ ],
+ "endIndex": 670,
+ "startIndex": 658,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "en-us",
+ ],
+ "endIndex": 675,
+ "startIndex": 671,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:language",
+ false,
+ ],
+ "endIndex": 689,
+ "startIndex": 676,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 692,
+ "startIndex": 690,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:rights",
+ ],
+ "endIndex": 703,
+ "startIndex": 693,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:rights",
+ {},
+ false,
+ ],
+ "endIndex": 703,
+ "startIndex": 693,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Copyright 2015 the authors",
+ ],
+ "endIndex": 729,
+ "startIndex": 704,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:rights",
+ false,
+ ],
+ "endIndex": 741,
+ "startIndex": 730,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 744,
+ "startIndex": 742,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:publisher",
+ ],
+ "endIndex": 758,
+ "startIndex": 745,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:publisher",
+ {},
+ false,
+ ],
+ "endIndex": 758,
+ "startIndex": 745,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "webmaster@thisisafakedoma.in",
+ ],
+ "endIndex": 786,
+ "startIndex": 759,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:publisher",
+ false,
+ ],
+ "endIndex": 801,
+ "startIndex": 787,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 804,
+ "startIndex": 802,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:creator",
+ ],
+ "endIndex": 816,
+ "startIndex": 805,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:creator",
+ {},
+ false,
+ ],
+ "endIndex": 816,
+ "startIndex": 805,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "webmaster@thisisafakedoma.in",
+ ],
+ "endIndex": 844,
+ "startIndex": 817,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:creator",
+ false,
+ ],
+ "endIndex": 857,
+ "startIndex": 845,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 860,
+ "startIndex": 858,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:source",
+ ],
+ "endIndex": 871,
+ "startIndex": 861,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:source",
+ {},
+ false,
+ ],
+ "endIndex": 871,
+ "startIndex": 861,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "https://github.com/fb55/htmlparser2/",
+ ],
+ "endIndex": 907,
+ "startIndex": 872,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:source",
+ false,
+ ],
+ "endIndex": 919,
+ "startIndex": 908,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 922,
+ "startIndex": 920,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:title",
+ ],
+ "endIndex": 932,
+ "startIndex": 923,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:title",
+ {},
+ false,
+ ],
+ "endIndex": 932,
+ "startIndex": 923,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "A title to parse and remember",
+ ],
+ "endIndex": 961,
+ "startIndex": 933,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:title",
+ false,
+ ],
+ "endIndex": 972,
+ "startIndex": 962,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 975,
+ "startIndex": 973,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:type",
+ ],
+ "endIndex": 984,
+ "startIndex": 976,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:type",
+ {},
+ false,
+ ],
+ "endIndex": 984,
+ "startIndex": 976,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Collection",
+ ],
+ "endIndex": 994,
+ "startIndex": 985,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:type",
+ false,
+ ],
+ "endIndex": 1004,
+ "startIndex": 995,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1007,
+ "startIndex": 1005,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "syn:updateBase",
+ ],
+ "endIndex": 1023,
+ "startIndex": 1008,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "syn:updateBase",
+ {},
+ false,
+ ],
+ "endIndex": 1023,
+ "startIndex": 1008,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2011-11-04T09:39:10-07:00",
+ ],
+ "endIndex": 1048,
+ "startIndex": 1024,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "syn:updateBase",
+ false,
+ ],
+ "endIndex": 1065,
+ "startIndex": 1049,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1068,
+ "startIndex": 1066,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "syn:updateFrequency",
+ ],
+ "endIndex": 1089,
+ "startIndex": 1069,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "syn:updateFrequency",
+ {},
+ false,
+ ],
+ "endIndex": 1089,
+ "startIndex": 1069,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "4",
+ ],
+ "endIndex": 1090,
+ "startIndex": 1090,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "syn:updateFrequency",
+ false,
+ ],
+ "endIndex": 1112,
+ "startIndex": 1091,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1115,
+ "startIndex": 1113,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "syn:updatePeriod",
+ ],
+ "endIndex": 1133,
+ "startIndex": 1116,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "syn:updatePeriod",
+ {},
+ false,
+ ],
+ "endIndex": 1133,
+ "startIndex": 1116,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "hourly",
+ ],
+ "endIndex": 1139,
+ "startIndex": 1134,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "syn:updatePeriod",
+ false,
+ ],
+ "endIndex": 1158,
+ "startIndex": 1140,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1161,
+ "startIndex": 1159,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "items",
+ ],
+ "endIndex": 1168,
+ "startIndex": 1162,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "items",
+ {},
+ false,
+ ],
+ "endIndex": 1168,
+ "startIndex": 1162,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1172,
+ "startIndex": 1169,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "rdf:Seq",
+ ],
+ "endIndex": 1181,
+ "startIndex": 1173,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "rdf:Seq",
+ {},
+ false,
+ ],
+ "endIndex": 1181,
+ "startIndex": 1173,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1186,
+ "startIndex": 1182,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "rdf:li",
+ ],
+ "endIndex": 1194,
+ "startIndex": 1187,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rdf:resource",
+ "http://somefakesite/path/to/something.html",
+ """,
+ ],
+ "endIndex": 1252,
+ "startIndex": 1195,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "rdf:li",
+ {
+ "rdf:resource": "http://somefakesite/path/to/something.html",
+ },
+ false,
+ ],
+ "endIndex": 1253,
+ "startIndex": 1187,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "rdf:li",
+ true,
+ ],
+ "endIndex": 1253,
+ "startIndex": 1187,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1257,
+ "startIndex": 1254,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "rdf:Seq",
+ false,
+ ],
+ "endIndex": 1267,
+ "startIndex": 1258,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1270,
+ "startIndex": 1268,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "items",
+ false,
+ ],
+ "endIndex": 1278,
+ "startIndex": 1271,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1280,
+ "startIndex": 1279,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "channel",
+ false,
+ ],
+ "endIndex": 1290,
+ "startIndex": 1281,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1292,
+ "startIndex": 1291,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 1298,
+ "startIndex": 1293,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rdf:about",
+ "http://somefakesite/path/to/something.html",
+ """,
+ ],
+ "endIndex": 1353,
+ "startIndex": 1299,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {
+ "rdf:about": "http://somefakesite/path/to/something.html",
+ },
+ false,
+ ],
+ "endIndex": 1353,
+ "startIndex": 1293,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1356,
+ "startIndex": 1354,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 1363,
+ "startIndex": 1357,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 1363,
+ "startIndex": 1357,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 1394,
+ "startIndex": 1364,
+ },
+ {
+ "$event": "text",
+ "data": [
+ " Fast HTML Parsing ",
+ ],
+ "endIndex": 1394,
+ "startIndex": 1364,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 1394,
+ "startIndex": 1364,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 1402,
+ "startIndex": 1395,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1405,
+ "startIndex": 1403,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 1411,
+ "startIndex": 1406,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 1411,
+ "startIndex": 1406,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+http://somefakesite/path/to/something.html
+",
+ ],
+ "endIndex": 1455,
+ "startIndex": 1412,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 1462,
+ "startIndex": 1456,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1465,
+ "startIndex": 1463,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 1478,
+ "startIndex": 1466,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 1478,
+ "startIndex": 1466,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 1560,
+ "startIndex": 1479,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+Great test content<br>A link: <a href="http://github.com">Github</a>
+",
+ ],
+ "endIndex": 1560,
+ "startIndex": 1479,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 1560,
+ "startIndex": 1479,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 1574,
+ "startIndex": 1561,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1577,
+ "startIndex": 1575,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:date",
+ ],
+ "endIndex": 1586,
+ "startIndex": 1578,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:date",
+ {},
+ false,
+ ],
+ "endIndex": 1586,
+ "startIndex": 1578,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2011-11-04T09:35:17-07:00",
+ ],
+ "endIndex": 1611,
+ "startIndex": 1587,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:date",
+ false,
+ ],
+ "endIndex": 1621,
+ "startIndex": 1612,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1624,
+ "startIndex": 1622,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:language",
+ ],
+ "endIndex": 1637,
+ "startIndex": 1625,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:language",
+ {},
+ false,
+ ],
+ "endIndex": 1637,
+ "startIndex": 1625,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "en-us",
+ ],
+ "endIndex": 1642,
+ "startIndex": 1638,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:language",
+ false,
+ ],
+ "endIndex": 1656,
+ "startIndex": 1643,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1659,
+ "startIndex": 1657,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:rights",
+ ],
+ "endIndex": 1670,
+ "startIndex": 1660,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:rights",
+ {},
+ false,
+ ],
+ "endIndex": 1670,
+ "startIndex": 1660,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Copyright 2015 the authors",
+ ],
+ "endIndex": 1696,
+ "startIndex": 1671,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:rights",
+ false,
+ ],
+ "endIndex": 1708,
+ "startIndex": 1697,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1711,
+ "startIndex": 1709,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:source",
+ ],
+ "endIndex": 1722,
+ "startIndex": 1712,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:source",
+ {},
+ false,
+ ],
+ "endIndex": 1722,
+ "startIndex": 1712,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+http://somefakesite/path/to/something.html
+",
+ ],
+ "endIndex": 1766,
+ "startIndex": 1723,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:source",
+ false,
+ ],
+ "endIndex": 1778,
+ "startIndex": 1767,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1781,
+ "startIndex": 1779,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:title",
+ ],
+ "endIndex": 1791,
+ "startIndex": 1782,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:title",
+ {},
+ false,
+ ],
+ "endIndex": 1791,
+ "startIndex": 1782,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 1822,
+ "startIndex": 1792,
+ },
+ {
+ "$event": "text",
+ "data": [
+ " Fast HTML Parsing ",
+ ],
+ "endIndex": 1822,
+ "startIndex": 1792,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 1822,
+ "startIndex": 1792,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:title",
+ false,
+ ],
+ "endIndex": 1833,
+ "startIndex": 1823,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1836,
+ "startIndex": 1834,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:type",
+ ],
+ "endIndex": 1845,
+ "startIndex": 1837,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:type",
+ {},
+ false,
+ ],
+ "endIndex": 1845,
+ "startIndex": 1837,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "text",
+ ],
+ "endIndex": 1849,
+ "startIndex": 1846,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:type",
+ false,
+ ],
+ "endIndex": 1859,
+ "startIndex": 1850,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1862,
+ "startIndex": 1860,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dcterms:issued",
+ ],
+ "endIndex": 1878,
+ "startIndex": 1863,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dcterms:issued",
+ {},
+ false,
+ ],
+ "endIndex": 1878,
+ "startIndex": 1863,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2011-11-04T09:35:17-07:00",
+ ],
+ "endIndex": 1903,
+ "startIndex": 1879,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dcterms:issued",
+ false,
+ ],
+ "endIndex": 1920,
+ "startIndex": 1904,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1922,
+ "startIndex": 1921,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 1929,
+ "startIndex": 1923,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1931,
+ "startIndex": 1930,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 1937,
+ "startIndex": 1932,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "rdf:about",
+ "http://somefakesite/path/to/something-else.html",
+ """,
+ ],
+ "endIndex": 1997,
+ "startIndex": 1938,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {
+ "rdf:about": "http://somefakesite/path/to/something-else.html",
+ },
+ false,
+ ],
+ "endIndex": 1997,
+ "startIndex": 1932,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2000,
+ "startIndex": 1998,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 2007,
+ "startIndex": 2001,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 2007,
+ "startIndex": 2001,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 2056,
+ "startIndex": 2008,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+This space intentionally left blank
+",
+ ],
+ "endIndex": 2056,
+ "startIndex": 2008,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 2056,
+ "startIndex": 2008,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 2064,
+ "startIndex": 2057,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2067,
+ "startIndex": 2065,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 2073,
+ "startIndex": 2068,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 2073,
+ "startIndex": 2068,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+http://somefakesite/path/to/something-else.html
+",
+ ],
+ "endIndex": 2122,
+ "startIndex": 2074,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 2129,
+ "startIndex": 2123,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2132,
+ "startIndex": 2130,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 2145,
+ "startIndex": 2133,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 2145,
+ "startIndex": 2133,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 2187,
+ "startIndex": 2146,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+The early bird gets the worm
+",
+ ],
+ "endIndex": 2187,
+ "startIndex": 2146,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 2187,
+ "startIndex": 2146,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 2201,
+ "startIndex": 2188,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2204,
+ "startIndex": 2202,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:date",
+ ],
+ "endIndex": 2213,
+ "startIndex": 2205,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:date",
+ {},
+ false,
+ ],
+ "endIndex": 2213,
+ "startIndex": 2205,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2011-11-04T09:34:54-07:00",
+ ],
+ "endIndex": 2238,
+ "startIndex": 2214,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:date",
+ false,
+ ],
+ "endIndex": 2248,
+ "startIndex": 2239,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2251,
+ "startIndex": 2249,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:language",
+ ],
+ "endIndex": 2264,
+ "startIndex": 2252,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:language",
+ {},
+ false,
+ ],
+ "endIndex": 2264,
+ "startIndex": 2252,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "en-us",
+ ],
+ "endIndex": 2269,
+ "startIndex": 2265,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:language",
+ false,
+ ],
+ "endIndex": 2283,
+ "startIndex": 2270,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2286,
+ "startIndex": 2284,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:rights",
+ ],
+ "endIndex": 2297,
+ "startIndex": 2287,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:rights",
+ {},
+ false,
+ ],
+ "endIndex": 2297,
+ "startIndex": 2287,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Copyright 2015 the authors",
+ ],
+ "endIndex": 2323,
+ "startIndex": 2298,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:rights",
+ false,
+ ],
+ "endIndex": 2335,
+ "startIndex": 2324,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2338,
+ "startIndex": 2336,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:source",
+ ],
+ "endIndex": 2349,
+ "startIndex": 2339,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:source",
+ {},
+ false,
+ ],
+ "endIndex": 2349,
+ "startIndex": 2339,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+http://somefakesite/path/to/something-else.html
+",
+ ],
+ "endIndex": 2398,
+ "startIndex": 2350,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:source",
+ false,
+ ],
+ "endIndex": 2410,
+ "startIndex": 2399,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2413,
+ "startIndex": 2411,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:title",
+ ],
+ "endIndex": 2423,
+ "startIndex": 2414,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:title",
+ {},
+ false,
+ ],
+ "endIndex": 2423,
+ "startIndex": 2414,
+ },
+ {
+ "$event": "cdatastart",
+ "data": [],
+ "endIndex": 2472,
+ "startIndex": 2424,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+This space intentionally left blank
+",
+ ],
+ "endIndex": 2472,
+ "startIndex": 2424,
+ },
+ {
+ "$event": "cdataend",
+ "data": [],
+ "endIndex": 2472,
+ "startIndex": 2424,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:title",
+ false,
+ ],
+ "endIndex": 2483,
+ "startIndex": 2473,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2486,
+ "startIndex": 2484,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dc:type",
+ ],
+ "endIndex": 2495,
+ "startIndex": 2487,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dc:type",
+ {},
+ false,
+ ],
+ "endIndex": 2495,
+ "startIndex": 2487,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "text",
+ ],
+ "endIndex": 2499,
+ "startIndex": 2496,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dc:type",
+ false,
+ ],
+ "endIndex": 2509,
+ "startIndex": 2500,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2512,
+ "startIndex": 2510,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "dcterms:issued",
+ ],
+ "endIndex": 2528,
+ "startIndex": 2513,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "dcterms:issued",
+ {},
+ false,
+ ],
+ "endIndex": 2528,
+ "startIndex": 2513,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "2011-11-04T09:34:54-07:00",
+ ],
+ "endIndex": 2553,
+ "startIndex": 2529,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "dcterms:issued",
+ false,
+ ],
+ "endIndex": 2570,
+ "startIndex": 2554,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2572,
+ "startIndex": 2571,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 2579,
+ "startIndex": 2573,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 2580,
+ "startIndex": 2580,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "rdf:RDF",
+ false,
+ ],
+ "endIndex": 2590,
+ "startIndex": 2581,
+ },
+]
+`;
+
+exports[`WebWritableStream > RSS feed 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version="1.0"",
+ ],
+ "endIndex": 19,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 21,
+ "startIndex": 20,
+ },
+ {
+ "$event": "comment",
+ "data": [
+ " http://cyber.law.harvard.edu/rss/examples/rss2sample.xml ",
+ ],
+ "endIndex": 86,
+ "startIndex": 22,
+ },
+ {
+ "$event": "commentend",
+ "data": [],
+ "endIndex": 86,
+ "startIndex": 22,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 87,
+ "startIndex": 87,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "rss",
+ ],
+ "endIndex": 92,
+ "startIndex": 88,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "version",
+ "2.0",
+ """,
+ ],
+ "endIndex": 106,
+ "startIndex": 93,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "rss",
+ {
+ "version": "2.0",
+ },
+ false,
+ ],
+ "endIndex": 106,
+ "startIndex": 88,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 110,
+ "startIndex": 107,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "channel",
+ ],
+ "endIndex": 119,
+ "startIndex": 111,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "channel",
+ {},
+ false,
+ ],
+ "endIndex": 119,
+ "startIndex": 111,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 126,
+ "startIndex": 120,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 133,
+ "startIndex": 127,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 133,
+ "startIndex": 127,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Liftoff News",
+ ],
+ "endIndex": 145,
+ "startIndex": 134,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 153,
+ "startIndex": 146,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 160,
+ "startIndex": 154,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 166,
+ "startIndex": 161,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 166,
+ "startIndex": 161,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/",
+ ],
+ "endIndex": 195,
+ "startIndex": 167,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 202,
+ "startIndex": 196,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 209,
+ "startIndex": 203,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 222,
+ "startIndex": 210,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 222,
+ "startIndex": 210,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Liftoff to Space Exploration.",
+ ],
+ "endIndex": 251,
+ "startIndex": 223,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 265,
+ "startIndex": 252,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 272,
+ "startIndex": 266,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "language",
+ ],
+ "endIndex": 282,
+ "startIndex": 273,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "language",
+ {},
+ false,
+ ],
+ "endIndex": 282,
+ "startIndex": 273,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "en-us",
+ ],
+ "endIndex": 287,
+ "startIndex": 283,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "language",
+ false,
+ ],
+ "endIndex": 298,
+ "startIndex": 288,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 305,
+ "startIndex": 299,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "pubDate",
+ ],
+ "endIndex": 314,
+ "startIndex": 306,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "pubDate",
+ {},
+ false,
+ ],
+ "endIndex": 314,
+ "startIndex": 306,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Tue, 10 Jun 2003 04:00:00 GMT",
+ ],
+ "endIndex": 343,
+ "startIndex": 315,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "pubDate",
+ false,
+ ],
+ "endIndex": 353,
+ "startIndex": 344,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 361,
+ "startIndex": 354,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "lastBuildDate",
+ ],
+ "endIndex": 376,
+ "startIndex": 362,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "lastBuildDate",
+ {},
+ false,
+ ],
+ "endIndex": 376,
+ "startIndex": 362,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Tue, 10 Jun 2003 09:41:01 GMT",
+ ],
+ "endIndex": 405,
+ "startIndex": 377,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "lastBuildDate",
+ false,
+ ],
+ "endIndex": 421,
+ "startIndex": 406,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 428,
+ "startIndex": 422,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "docs",
+ ],
+ "endIndex": 434,
+ "startIndex": 429,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "docs",
+ {},
+ false,
+ ],
+ "endIndex": 434,
+ "startIndex": 429,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://blogs.law.harvard.edu/tech/rss",
+ ],
+ "endIndex": 471,
+ "startIndex": 435,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "docs",
+ false,
+ ],
+ "endIndex": 478,
+ "startIndex": 472,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 485,
+ "startIndex": 479,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "generator",
+ ],
+ "endIndex": 496,
+ "startIndex": 486,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "generator",
+ {},
+ false,
+ ],
+ "endIndex": 496,
+ "startIndex": 486,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Weblog Editor 2.0",
+ ],
+ "endIndex": 513,
+ "startIndex": 497,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "generator",
+ false,
+ ],
+ "endIndex": 525,
+ "startIndex": 514,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 532,
+ "startIndex": 526,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "managingEditor",
+ ],
+ "endIndex": 548,
+ "startIndex": 533,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "managingEditor",
+ {},
+ false,
+ ],
+ "endIndex": 548,
+ "startIndex": 533,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "editor@example.com",
+ ],
+ "endIndex": 566,
+ "startIndex": 549,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "managingEditor",
+ false,
+ ],
+ "endIndex": 583,
+ "startIndex": 567,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 590,
+ "startIndex": 584,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "webMaster",
+ ],
+ "endIndex": 601,
+ "startIndex": 591,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "webMaster",
+ {},
+ false,
+ ],
+ "endIndex": 601,
+ "startIndex": 591,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "webmaster@example.com",
+ ],
+ "endIndex": 622,
+ "startIndex": 602,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "webMaster",
+ false,
+ ],
+ "endIndex": 634,
+ "startIndex": 623,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 641,
+ "startIndex": 635,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 647,
+ "startIndex": 642,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {},
+ false,
+ ],
+ "endIndex": 647,
+ "startIndex": 642,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 658,
+ "startIndex": 648,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 665,
+ "startIndex": 659,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 665,
+ "startIndex": 659,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Star City",
+ ],
+ "endIndex": 674,
+ "startIndex": 666,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 682,
+ "startIndex": 675,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 692,
+ "startIndex": 683,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 698,
+ "startIndex": 693,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 698,
+ "startIndex": 693,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp",
+ ],
+ "endIndex": 754,
+ "startIndex": 699,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 761,
+ "startIndex": 755,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 771,
+ "startIndex": 762,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 784,
+ "startIndex": 772,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 784,
+ "startIndex": 772,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.",
+ ],
+ "endIndex": 1020,
+ "startIndex": 785,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 1034,
+ "startIndex": 1021,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1044,
+ "startIndex": 1035,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "pubDate",
+ ],
+ "endIndex": 1053,
+ "startIndex": 1045,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "pubDate",
+ {},
+ false,
+ ],
+ "endIndex": 1053,
+ "startIndex": 1045,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Tue, 03 Jun 2003 09:39:21 GMT",
+ ],
+ "endIndex": 1082,
+ "startIndex": 1054,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "pubDate",
+ false,
+ ],
+ "endIndex": 1092,
+ "startIndex": 1083,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1102,
+ "startIndex": 1093,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "guid",
+ ],
+ "endIndex": 1108,
+ "startIndex": 1103,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "guid",
+ {},
+ false,
+ ],
+ "endIndex": 1108,
+ "startIndex": 1103,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/06/03.html#item573",
+ ],
+ "endIndex": 1160,
+ "startIndex": 1109,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "guid",
+ false,
+ ],
+ "endIndex": 1167,
+ "startIndex": 1161,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 1175,
+ "startIndex": 1168,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 1182,
+ "startIndex": 1176,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1189,
+ "startIndex": 1183,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 1195,
+ "startIndex": 1190,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {},
+ false,
+ ],
+ "endIndex": 1195,
+ "startIndex": 1190,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1205,
+ "startIndex": 1196,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 1218,
+ "startIndex": 1206,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 1218,
+ "startIndex": 1206,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st.",
+ ],
+ "endIndex": 1435,
+ "startIndex": 1219,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 1449,
+ "startIndex": 1436,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1459,
+ "startIndex": 1450,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "pubDate",
+ ],
+ "endIndex": 1468,
+ "startIndex": 1460,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "pubDate",
+ {},
+ false,
+ ],
+ "endIndex": 1468,
+ "startIndex": 1460,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Fri, 30 May 2003 11:06:42 GMT",
+ ],
+ "endIndex": 1497,
+ "startIndex": 1469,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "pubDate",
+ false,
+ ],
+ "endIndex": 1507,
+ "startIndex": 1498,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1517,
+ "startIndex": 1508,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "guid",
+ ],
+ "endIndex": 1523,
+ "startIndex": 1518,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "guid",
+ {},
+ false,
+ ],
+ "endIndex": 1523,
+ "startIndex": 1518,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/30.html#item572",
+ ],
+ "endIndex": 1575,
+ "startIndex": 1524,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "guid",
+ false,
+ ],
+ "endIndex": 1582,
+ "startIndex": 1576,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 1590,
+ "startIndex": 1583,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 1597,
+ "startIndex": 1591,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1604,
+ "startIndex": 1598,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 1610,
+ "startIndex": 1605,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {},
+ false,
+ ],
+ "endIndex": 1610,
+ "startIndex": 1605,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1620,
+ "startIndex": 1611,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 1627,
+ "startIndex": 1621,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 1627,
+ "startIndex": 1621,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "The Engine That Does More",
+ ],
+ "endIndex": 1652,
+ "startIndex": 1628,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 1660,
+ "startIndex": 1653,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1670,
+ "startIndex": 1661,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 1676,
+ "startIndex": 1671,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 1676,
+ "startIndex": 1671,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp",
+ ],
+ "endIndex": 1730,
+ "startIndex": 1677,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 1737,
+ "startIndex": 1731,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1747,
+ "startIndex": 1738,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 1760,
+ "startIndex": 1748,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 1760,
+ "startIndex": 1748,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.",
+ ],
+ "endIndex": 1923,
+ "startIndex": 1761,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 1937,
+ "startIndex": 1924,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 1947,
+ "startIndex": 1938,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "pubDate",
+ ],
+ "endIndex": 1956,
+ "startIndex": 1948,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "pubDate",
+ {},
+ false,
+ ],
+ "endIndex": 1956,
+ "startIndex": 1948,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Tue, 27 May 2003 08:37:32 GMT",
+ ],
+ "endIndex": 1985,
+ "startIndex": 1957,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "pubDate",
+ false,
+ ],
+ "endIndex": 1995,
+ "startIndex": 1986,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2005,
+ "startIndex": 1996,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "guid",
+ ],
+ "endIndex": 2011,
+ "startIndex": 2006,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "guid",
+ {},
+ false,
+ ],
+ "endIndex": 2011,
+ "startIndex": 2006,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/27.html#item571",
+ ],
+ "endIndex": 2063,
+ "startIndex": 2012,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "guid",
+ false,
+ ],
+ "endIndex": 2070,
+ "startIndex": 2064,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 2078,
+ "startIndex": 2071,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 2085,
+ "startIndex": 2079,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2092,
+ "startIndex": 2086,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "item",
+ ],
+ "endIndex": 2098,
+ "startIndex": 2093,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "item",
+ {},
+ false,
+ ],
+ "endIndex": 2098,
+ "startIndex": 2093,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2108,
+ "startIndex": 2099,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 2115,
+ "startIndex": 2109,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 2115,
+ "startIndex": 2109,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Astronauts' Dirty Laundry",
+ ],
+ "endIndex": 2140,
+ "startIndex": 2116,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 2148,
+ "startIndex": 2141,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2158,
+ "startIndex": 2149,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "link",
+ ],
+ "endIndex": 2164,
+ "startIndex": 2159,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "link",
+ {},
+ false,
+ ],
+ "endIndex": 2164,
+ "startIndex": 2159,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp",
+ ],
+ "endIndex": 2219,
+ "startIndex": 2165,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "link",
+ false,
+ ],
+ "endIndex": 2226,
+ "startIndex": 2220,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2236,
+ "startIndex": 2227,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "description",
+ ],
+ "endIndex": 2249,
+ "startIndex": 2237,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "description",
+ {},
+ false,
+ ],
+ "endIndex": 2249,
+ "startIndex": 2237,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.",
+ ],
+ "endIndex": 2416,
+ "startIndex": 2250,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "description",
+ false,
+ ],
+ "endIndex": 2430,
+ "startIndex": 2417,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2440,
+ "startIndex": 2431,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "pubDate",
+ ],
+ "endIndex": 2449,
+ "startIndex": 2441,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "pubDate",
+ {},
+ false,
+ ],
+ "endIndex": 2449,
+ "startIndex": 2441,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Tue, 20 May 2003 08:56:02 GMT",
+ ],
+ "endIndex": 2478,
+ "startIndex": 2450,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "pubDate",
+ false,
+ ],
+ "endIndex": 2488,
+ "startIndex": 2479,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2498,
+ "startIndex": 2489,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "guid",
+ ],
+ "endIndex": 2504,
+ "startIndex": 2499,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "guid",
+ {},
+ false,
+ ],
+ "endIndex": 2504,
+ "startIndex": 2499,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/20.html#item570",
+ ],
+ "endIndex": 2556,
+ "startIndex": 2505,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "guid",
+ false,
+ ],
+ "endIndex": 2563,
+ "startIndex": 2557,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+
+ ",
+ ],
+ "endIndex": 2574,
+ "startIndex": 2564,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "media:content",
+ ],
+ "endIndex": 2589,
+ "startIndex": 2575,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "height",
+ "200",
+ """,
+ ],
+ "endIndex": 2602,
+ "startIndex": 2590,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "medium",
+ "image",
+ """,
+ ],
+ "endIndex": 2617,
+ "startIndex": 2603,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "url",
+ "https://picsum.photos/200",
+ """,
+ ],
+ "endIndex": 2649,
+ "startIndex": 2618,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "width",
+ "200",
+ """,
+ ],
+ "endIndex": 2661,
+ "startIndex": 2650,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "media:content",
+ {
+ "height": "200",
+ "medium": "image",
+ "url": "https://picsum.photos/200",
+ "width": "200",
+ },
+ false,
+ ],
+ "endIndex": 2662,
+ "startIndex": 2575,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "media:content",
+ true,
+ ],
+ "endIndex": 2662,
+ "startIndex": 2575,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2669,
+ "startIndex": 2663,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "item",
+ false,
+ ],
+ "endIndex": 2676,
+ "startIndex": 2670,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 2680,
+ "startIndex": 2677,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "channel",
+ false,
+ ],
+ "endIndex": 2690,
+ "startIndex": 2681,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 2691,
+ "startIndex": 2691,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "rss",
+ false,
+ ],
+ "endIndex": 2697,
+ "startIndex": 2692,
+ },
+]
+`;
+
+exports[`WebWritableStream > SVG 1`] = `
+[
+ {
+ "$event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!doctype html",
+ ],
+ "endIndex": 14,
+ "startIndex": 0,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 15,
+ "startIndex": 15,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "html",
+ ],
+ "endIndex": 21,
+ "startIndex": 16,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "html",
+ {},
+ false,
+ ],
+ "endIndex": 21,
+ "startIndex": 16,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 22,
+ "startIndex": 22,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "head",
+ ],
+ "endIndex": 28,
+ "startIndex": 23,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "head",
+ {},
+ false,
+ ],
+ "endIndex": 28,
+ "startIndex": 23,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 30,
+ "startIndex": 29,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 37,
+ "startIndex": 31,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 37,
+ "startIndex": 31,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "SVG test",
+ ],
+ "endIndex": 45,
+ "startIndex": 38,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 53,
+ "startIndex": 46,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 54,
+ "startIndex": 54,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "head",
+ false,
+ ],
+ "endIndex": 61,
+ "startIndex": 55,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 62,
+ "startIndex": 62,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "body",
+ ],
+ "endIndex": 68,
+ "startIndex": 63,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "body",
+ {},
+ false,
+ ],
+ "endIndex": 68,
+ "startIndex": 63,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 70,
+ "startIndex": 69,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "svg",
+ ],
+ "endIndex": 75,
+ "startIndex": 71,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "version",
+ "1.1",
+ """,
+ ],
+ "endIndex": 89,
+ "startIndex": 76,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns",
+ "http://www.w3.org/2000/svg",
+ """,
+ ],
+ "endIndex": 124,
+ "startIndex": 90,
+ },
+ {
+ "$event": "attribute",
+ "data": [
+ "xmlns:xlink",
+ "http://www.w3.org/1999/xlink",
+ """,
+ ],
+ "endIndex": 167,
+ "startIndex": 125,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "svg",
+ {
+ "version": "1.1",
+ "xmlns": "http://www.w3.org/2000/svg",
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
+ },
+ false,
+ ],
+ "endIndex": 167,
+ "startIndex": 71,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 170,
+ "startIndex": 168,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 177,
+ "startIndex": 171,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 177,
+ "startIndex": 171,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "Test",
+ ],
+ "endIndex": 181,
+ "startIndex": 178,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 189,
+ "startIndex": 182,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 192,
+ "startIndex": 190,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "animate",
+ ],
+ "endIndex": 201,
+ "startIndex": 193,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "animate",
+ {},
+ false,
+ ],
+ "endIndex": 203,
+ "startIndex": 193,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "animate",
+ true,
+ ],
+ "endIndex": 203,
+ "startIndex": 193,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 206,
+ "startIndex": 204,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "polygon",
+ ],
+ "endIndex": 215,
+ "startIndex": 207,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "polygon",
+ {},
+ false,
+ ],
+ "endIndex": 217,
+ "startIndex": 207,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "polygon",
+ true,
+ ],
+ "endIndex": 217,
+ "startIndex": 207,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 220,
+ "startIndex": 218,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "g",
+ ],
+ "endIndex": 223,
+ "startIndex": 221,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "g",
+ {},
+ false,
+ ],
+ "endIndex": 223,
+ "startIndex": 221,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 227,
+ "startIndex": 224,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "path",
+ ],
+ "endIndex": 233,
+ "startIndex": 228,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "path",
+ {},
+ false,
+ ],
+ "endIndex": 233,
+ "startIndex": 228,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 238,
+ "startIndex": 234,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "title",
+ ],
+ "endIndex": 245,
+ "startIndex": 239,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "title",
+ {},
+ false,
+ ],
+ "endIndex": 245,
+ "startIndex": 239,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "x",
+ ],
+ "endIndex": 246,
+ "startIndex": 246,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "title",
+ false,
+ ],
+ "endIndex": 254,
+ "startIndex": 247,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 259,
+ "startIndex": 255,
+ },
+ {
+ "$event": "opentagname",
+ "data": [
+ "animate",
+ ],
+ "endIndex": 268,
+ "startIndex": 260,
+ },
+ {
+ "$event": "opentag",
+ "data": [
+ "animate",
+ {},
+ false,
+ ],
+ "endIndex": 270,
+ "startIndex": 260,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "animate",
+ true,
+ ],
+ "endIndex": 270,
+ "startIndex": 260,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 274,
+ "startIndex": 271,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "path",
+ false,
+ ],
+ "endIndex": 281,
+ "startIndex": 275,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 284,
+ "startIndex": 282,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "g",
+ false,
+ ],
+ "endIndex": 288,
+ "startIndex": 285,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+ ",
+ ],
+ "endIndex": 290,
+ "startIndex": 289,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "svg",
+ false,
+ ],
+ "endIndex": 296,
+ "startIndex": 291,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 297,
+ "startIndex": 297,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "body",
+ false,
+ ],
+ "endIndex": 304,
+ "startIndex": 298,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 305,
+ "startIndex": 305,
+ },
+ {
+ "$event": "closetag",
+ "data": [
+ "html",
+ false,
+ ],
+ "endIndex": 312,
+ "startIndex": 306,
+ },
+ {
+ "$event": "text",
+ "data": [
+ "
+",
+ ],
+ "endIndex": 313,
+ "startIndex": 313,
+ },
+]
+`;
diff --git a/src/__snapshots__/WritableStream.spec.ts.snap b/src/__snapshots__/WritableStream.spec.ts.snap
index 8695e75..fe2473e 100644
--- a/src/__snapshots__/WritableStream.spec.ts.snap
+++ b/src/__snapshots__/WritableStream.spec.ts.snap
@@ -1,14 +1,14 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`WritableStream Atom feed 1`] = `
+exports[`WritableStream > Atom feed 1`] = `
[
{
"$event": "processinginstruction",
"data": [
"?xml",
- "?xml version="1.0" encoding="utf-8"?",
+ "?xml version="1.0" encoding="utf-8"",
],
- "endIndex": 37,
+ "endIndex": 36,
"startIndex": 0,
},
{
@@ -18,7 +18,7 @@ exports[`WritableStream Atom feed 1`] = `
",
],
"endIndex": 38,
- "startIndex": 38,
+ "startIndex": 37,
},
{
"$event": "comment",
@@ -58,7 +58,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://www.w3.org/2005/Atom",
""",
],
- "endIndex": 137,
+ "endIndex": 138,
"startIndex": 103,
},
{
@@ -185,7 +185,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://example.org/feed/",
""",
],
- "endIndex": 240,
+ "endIndex": 241,
"startIndex": 210,
},
{
@@ -195,7 +195,7 @@ exports[`WritableStream Atom feed 1`] = `
"self",
""",
],
- "endIndex": 251,
+ "endIndex": 252,
"startIndex": 242,
},
{
@@ -244,7 +244,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://example.org/",
""",
],
- "endIndex": 288,
+ "endIndex": 289,
"startIndex": 263,
},
{
@@ -585,7 +585,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://example.org/2003/12/13/atom03",
""",
],
- "endIndex": 578,
+ "endIndex": 579,
"startIndex": 536,
},
{
@@ -633,7 +633,7 @@ exports[`WritableStream Atom feed 1`] = `
"alternate",
""",
],
- "endIndex": 605,
+ "endIndex": 606,
"startIndex": 591,
},
{
@@ -643,7 +643,7 @@ exports[`WritableStream Atom feed 1`] = `
"text/html",
""",
],
- "endIndex": 622,
+ "endIndex": 623,
"startIndex": 607,
},
{
@@ -653,7 +653,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://example.org/2003/12/13/atom03.html",
""",
],
- "endIndex": 671,
+ "endIndex": 672,
"startIndex": 624,
},
{
@@ -703,7 +703,7 @@ exports[`WritableStream Atom feed 1`] = `
"edit",
""",
],
- "endIndex": 692,
+ "endIndex": 693,
"startIndex": 683,
},
{
@@ -713,7 +713,7 @@ exports[`WritableStream Atom feed 1`] = `
"http://example.org/2003/12/13/atom03/edit",
""",
],
- "endIndex": 741,
+ "endIndex": 742,
"startIndex": 694,
},
{
@@ -850,7 +850,7 @@ exports[`WritableStream Atom feed 1`] = `
"html",
""",
],
- "endIndex": 865,
+ "endIndex": 866,
"startIndex": 855,
},
{
@@ -995,7 +995,7 @@ exports[`WritableStream Atom feed 1`] = `
]
`;
-exports[`WritableStream Attributes 1`] = `
+exports[`WritableStream > Attributes 1`] = `
[
{
"$event": "processinginstruction",
@@ -1196,7 +1196,7 @@ exports[`WritableStream Attributes 1`] = `
"test0",
""",
],
- "endIndex": 123,
+ "endIndex": 124,
"startIndex": 114,
},
{
@@ -1206,7 +1206,7 @@ exports[`WritableStream Attributes 1`] = `
"value0",
""",
],
- "endIndex": 138,
+ "endIndex": 139,
"startIndex": 125,
},
{
@@ -1216,7 +1216,7 @@ exports[`WritableStream Attributes 1`] = `
"value1",
""",
],
- "endIndex": 153,
+ "endIndex": 154,
"startIndex": 140,
},
{
@@ -1298,7 +1298,7 @@ exports[`WritableStream Attributes 1`] = `
"test1",
""",
],
- "endIndex": 258,
+ "endIndex": 259,
"startIndex": 249,
},
{
@@ -1399,7 +1399,7 @@ exports[`WritableStream Attributes 1`] = `
"test2",
""",
],
- "endIndex": 419,
+ "endIndex": 420,
"startIndex": 410,
},
{
@@ -1409,7 +1409,7 @@ exports[`WritableStream Attributes 1`] = `
"value4",
""",
],
- "endIndex": 434,
+ "endIndex": 435,
"startIndex": 421,
},
{
@@ -1419,7 +1419,7 @@ exports[`WritableStream Attributes 1`] = `
"value5",
""",
],
- "endIndex": 448,
+ "endIndex": 449,
"startIndex": 435,
},
{
@@ -1492,7 +1492,7 @@ exports[`WritableStream Attributes 1`] = `
]
`;
-exports[`WritableStream Basic html 1`] = `
+exports[`WritableStream > Basic html 1`] = `
[
{
"$event": "processinginstruction",
@@ -1603,15 +1603,15 @@ exports[`WritableStream Basic html 1`] = `
]
`;
-exports[`WritableStream RDF feed 1`] = `
+exports[`WritableStream > RDF feed 1`] = `
[
{
"$event": "processinginstruction",
"data": [
"?xml",
- "?xml version="1.0" encoding="UTF-8"?",
+ "?xml version="1.0" encoding="UTF-8"",
],
- "endIndex": 37,
+ "endIndex": 36,
"startIndex": 0,
},
{
@@ -1621,7 +1621,7 @@ exports[`WritableStream RDF feed 1`] = `
",
],
"endIndex": 38,
- "startIndex": 38,
+ "startIndex": 37,
},
{
"$event": "opentagname",
@@ -1638,7 +1638,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://www.w3.org/1999/02/22-rdf-syntax-ns#",
""",
],
- "endIndex": 102,
+ "endIndex": 103,
"startIndex": 48,
},
{
@@ -1648,7 +1648,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/rss/1.0/",
""",
],
- "endIndex": 135,
+ "endIndex": 136,
"startIndex": 104,
},
{
@@ -1658,7 +1658,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/rss/1.0/modules/event/",
""",
],
- "endIndex": 185,
+ "endIndex": 186,
"startIndex": 137,
},
{
@@ -1668,7 +1668,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/rss/1.0/modules/content/",
""",
],
- "endIndex": 242,
+ "endIndex": 243,
"startIndex": 187,
},
{
@@ -1678,7 +1678,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/rss/1.0/modules/taxonomy/",
""",
],
- "endIndex": 297,
+ "endIndex": 298,
"startIndex": 244,
},
{
@@ -1688,7 +1688,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/dc/elements/1.1/",
""",
],
- "endIndex": 341,
+ "endIndex": 342,
"startIndex": 299,
},
{
@@ -1698,7 +1698,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/rss/1.0/modules/syndication/",
""",
],
- "endIndex": 398,
+ "endIndex": 399,
"startIndex": 343,
},
{
@@ -1708,7 +1708,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://purl.org/dc/terms/",
""",
],
- "endIndex": 440,
+ "endIndex": 441,
"startIndex": 400,
},
{
@@ -1718,7 +1718,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://webns.net/mvcb/",
""",
],
- "endIndex": 477,
+ "endIndex": 478,
"startIndex": 442,
},
{
@@ -1765,7 +1765,7 @@ exports[`WritableStream RDF feed 1`] = `
"https://github.com/fb55/htmlparser2/",
""",
],
- "endIndex": 537,
+ "endIndex": 538,
"startIndex": 490,
},
{
@@ -2422,7 +2422,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://somefakesite/path/to/something.html",
""",
],
- "endIndex": 1251,
+ "endIndex": 1252,
"startIndex": 1195,
},
{
@@ -2524,7 +2524,7 @@ exports[`WritableStream RDF feed 1`] = `
"http://somefakesite/path/to/something.html",
""",
],
- "endIndex": 1352,
+ "endIndex": 1353,
"startIndex": 1299,
},
{
@@ -3063,7 +3063,7 @@ http://somefakesite/path/to/something.html
"http://somefakesite/path/to/something-else.html",
""",
],
- "endIndex": 1996,
+ "endIndex": 1997,
"startIndex": 1938,
},
{
@@ -3603,15 +3603,15 @@ This space intentionally left blank
]
`;
-exports[`WritableStream RSS feed 1`] = `
+exports[`WritableStream > RSS feed 1`] = `
[
{
"$event": "processinginstruction",
"data": [
"?xml",
- "?xml version="1.0"?",
+ "?xml version="1.0"",
],
- "endIndex": 20,
+ "endIndex": 19,
"startIndex": 0,
},
{
@@ -3621,7 +3621,7 @@ exports[`WritableStream RSS feed 1`] = `
",
],
"endIndex": 21,
- "startIndex": 21,
+ "startIndex": 20,
},
{
"$event": "comment",
@@ -3661,7 +3661,7 @@ exports[`WritableStream RSS feed 1`] = `
"2.0",
""",
],
- "endIndex": 105,
+ "endIndex": 106,
"startIndex": 93,
},
{
@@ -5127,7 +5127,7 @@ exports[`WritableStream RSS feed 1`] = `
"200",
""",
],
- "endIndex": 2601,
+ "endIndex": 2602,
"startIndex": 2590,
},
{
@@ -5137,7 +5137,7 @@ exports[`WritableStream RSS feed 1`] = `
"image",
""",
],
- "endIndex": 2616,
+ "endIndex": 2617,
"startIndex": 2603,
},
{
@@ -5147,7 +5147,7 @@ exports[`WritableStream RSS feed 1`] = `
"https://picsum.photos/200",
""",
],
- "endIndex": 2648,
+ "endIndex": 2649,
"startIndex": 2618,
},
{
@@ -5157,7 +5157,7 @@ exports[`WritableStream RSS feed 1`] = `
"200",
""",
],
- "endIndex": 2660,
+ "endIndex": 2661,
"startIndex": 2650,
},
{
@@ -5241,7 +5241,7 @@ exports[`WritableStream RSS feed 1`] = `
]
`;
-exports[`WritableStream SVG 1`] = `
+exports[`WritableStream > SVG 1`] = `
[
{
"$event": "processinginstruction",
@@ -5419,7 +5419,7 @@ exports[`WritableStream SVG 1`] = `
"1.1",
""",
],
- "endIndex": 88,
+ "endIndex": 89,
"startIndex": 76,
},
{
@@ -5429,7 +5429,7 @@ exports[`WritableStream SVG 1`] = `
"http://www.w3.org/2000/svg",
""",
],
- "endIndex": 123,
+ "endIndex": 124,
"startIndex": 90,
},
{
@@ -5439,7 +5439,7 @@ exports[`WritableStream SVG 1`] = `
"http://www.w3.org/1999/xlink",
""",
],
- "endIndex": 166,
+ "endIndex": 167,
"startIndex": 125,
},
{
diff --git a/src/__snapshots__/index.spec.ts.snap b/src/__snapshots__/index.spec.ts.snap
index f1c1e55..f79f028 100644
--- a/src/__snapshots__/index.spec.ts.snap
+++ b/src/__snapshots__/index.spec.ts.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Index createDocumentStream 1`] = `
+exports[`Index > createDocumentStream 1`] = `
Document {
"children": [
&This is text,
@@ -16,42 +16,7 @@ Document {
}
`;
-exports[`Index createDomStream 1`] = `
-[
- &This is text,
- <!-- and comments -->,
- <tags />,
-]
-`;
-
-exports[`Index parseDOM 1`] = `
-[
- <a
- foo=""
- >
- <b>
- <c>
- ProcessingInstruction {
- "data": "?foo",
- "endIndex": null,
- "name": "?foo",
- "next": Yay!,
- "parent": <c>
- [Circular]
- Yay!
- </c>,
- "prev": null,
- "startIndex": null,
- "type": "directive",
- }
- Yay!
- </c>
- </b>
- </a>,
-]
-`;
-
-exports[`Index parseDocument 1`] = `
+exports[`Index > parseDocument 1`] = `
Document {
"children": [
<a
@@ -59,19 +24,7 @@ Document {
>
<b>
<c>
- ProcessingInstruction {
- "data": "?foo",
- "endIndex": null,
- "name": "?foo",
- "next": Yay!,
- "parent": <c>
- [Circular]
- Yay!
- </c>,
- "prev": null,
- "startIndex": null,
- "type": "directive",
- }
+ <!--?foo-->
Yay!
</c>
</b>
@@ -85,3 +38,19 @@ Document {
"type": "root",
}
`;
+
+exports[`Index > parseDocument in foreign content 1`] = `
+Document {
+ "children": [
+ <svg>
+ a&lt;b
+ </svg>,
+ ],
+ "endIndex": null,
+ "next": null,
+ "parent": null,
+ "prev": null,
+ "startIndex": null,
+ "type": "root",
+}
+`;
diff --git a/src/index.spec.ts b/src/index.spec.ts
index f69e293..80e4ccc 100644
--- a/src/index.spec.ts
+++ b/src/index.spec.ts
@@ -1,12 +1,12 @@
+import { Element } from "domhandler";
+import { describe, expect, it } from "vitest";
import {
- parseDocument,
- parseDOM,
createDocumentStream,
- createDomStream,
- DomHandler,
DefaultHandler,
+ DomHandler,
+ type Parser,
+ parseDocument,
} from "./index.js";
-import { Element } from "domhandler";
// Add an `attributes` prop to the Element for now, to make it possible for Jest to render DOM nodes.
Object.defineProperty(Element.prototype, "attributes", {
@@ -21,44 +21,32 @@ Object.defineProperty(Element.prototype, "attributes", {
});
describe("Index", () => {
- test("parseDocument", () => {
+ it("parseDocument", () => {
const dom = parseDocument("<a foo><b><c><?foo>Yay!");
expect(dom).toMatchSnapshot();
});
- test("parseDOM", () => {
- const dom = parseDOM("<a foo><b><c><?foo>Yay!");
+ it("parseDocument in foreign content", () => {
+ const dom = parseDocument("<svg><![CDATA[a<b]]></svg>");
expect(dom).toMatchSnapshot();
});
- test("createDocumentStream", (done) => {
- const domStream = createDocumentStream((error, dom) => {
- expect(error).toBeNull();
- expect(dom).toMatchSnapshot();
+ it("createDocumentStream", () => {
+ let documentStream!: Parser;
- done();
+ const documentPromise = new Promise((resolve, reject) => {
+ documentStream = createDocumentStream((error, dom) =>
+ error ? reject(error) : resolve(dom),
+ );
});
for (const c of "&amp;This is text<!-- and comments --><tags>") {
- domStream.write(c);
+ documentStream.write(c);
}
- domStream.end();
- });
-
- test("createDomStream", (done) => {
- const domStream = createDomStream((error, dom) => {
- expect(error).toBeNull();
- expect(dom).toMatchSnapshot();
-
- done();
- });
-
- for (const c of "&amp;This is text<!-- and comments --><tags>") {
- domStream.write(c);
- }
+ documentStream.end();
- domStream.end();
+ return expect(documentPromise).resolves.toMatchSnapshot();
});
describe("API", () => {
diff --git a/src/index.ts b/src/index.ts
index 758f234..bfefcb7 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,12 +1,13 @@
-import { Parser, ParserOptions } from "./Parser.js";
-export { Parser, type ParserOptions } from "./Parser.js";
+import { Parser, type ParserOptions } from "./Parser.js";
+
+export type { Handler, ParserOptions } from "./Parser.js";
+export { Parser } from "./Parser.js";
import {
+ type Document,
DomHandler,
- DomHandlerOptions,
- ChildNode,
- Element,
- Document,
+ type DomHandlerOptions,
+ type Element,
} from "domhandler";
export {
@@ -16,13 +17,15 @@ export {
type DomHandlerOptions,
} from "domhandler";
+/**
+ * Combined parser and handler options.
+ */
export type Options = ParserOptions & DomHandlerOptions;
// 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 handler.
*/
@@ -31,22 +34,9 @@ export function parseDocument(data: string, options?: Options): Document {
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 handler.
- * @deprecated Use `parseDocument` instead.
- */
-export function parseDOM(data: string, options?: Options): ChildNode[] {
- 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, with the resulting document.
* @param options Optional options for the parser and DOM handler.
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
@@ -54,60 +44,43 @@ export function parseDOM(data: string, options?: Options): ChildNode[] {
export function createDocumentStream(
callback: (error: Error | null, document: Document) => void,
options?: Options,
- elementCallback?: (element: Element) => void
+ elementCallback?: (element: Element) => void,
): Parser {
const handler: DomHandler = new DomHandler(
(error: Error | null) => callback(error, handler.root),
options,
- elementCallback
+ elementCallback,
);
return new Parser(handler, options);
}
-/**
- * Creates a parser instance, with an attached DOM handler.
- *
- * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.
- * @param options Optional options for the parser and DOM handler.
- * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
- * @deprecated Use `createDocumentStream` instead.
- */
-export function createDomStream(
- callback: (error: Error | null, dom: ChildNode[]) => void,
- options?: Options,
- elementCallback?: (element: Element) => void
-): Parser {
- const handler = new DomHandler(callback, options, elementCallback);
- return new Parser(handler, options);
-}
-
-export {
- default as Tokenizer,
- type Callbacks as TokenizerCallbacks,
-} from "./Tokenizer.js";
/*
* All of the following exports exist for backwards-compatibility.
* They should probably be removed eventually.
*/
export * as ElementType from "domelementtype";
+export {
+ type Callbacks as TokenizerCallbacks,
+ default as Tokenizer,
+ QuoteType,
+} from "./Tokenizer.js";
-import { getFeed, type Feed } from "domutils";
+import { type Feed, getFeed } from "domutils";
-export { getFeed, type Feed } from "domutils";
+export { type Feed, 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: string,
- options: Options = parseFeedDefaultOptions
+ options: Options = parseFeedDefaultOptions,
): Feed | null {
- return getFeed(parseDOM(feed, options));
+ return getFeed(parseDocument(feed, options).children);
}
export * as DomUtils from "domutils";
diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json
index 84f1613..0037421 100644
--- a/tsconfig.eslint.json
+++ b/tsconfig.eslint.json
@@ -1,5 +1,9 @@
{
"extends": "./tsconfig.json",
+ "compilerOptions": {
+ "rootDir": ".",
+ "noEmit": true
+ },
"include": ["src"],
"exclude": []
}
diff --git a/tsconfig.json b/tsconfig.json
index 4893351..a4465b3 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,13 +1,13 @@
{
"compilerOptions": {
/* Basic Options */
- "target": "es5",
- "module": "commonjs",
- "lib": ["ES2015.Core"],
+ "target": "es2022",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
"declaration": true,
"declarationMap": true,
"sourceMap": true,
- "outDir": "lib",
+ "outDir": "dist",
/* Strict Type-Checking Options */
"strict": true,
@@ -16,6 +16,7 @@
"exactOptionalPropertyTypes": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
+ "isolatedDeclarations": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
@@ -24,8 +25,6 @@
"noUnusedParameters": true,
/* Module Resolution Options */
- "esModuleInterop": true,
- "moduleResolution": "node",
"resolveJsonModule": true
},
"include": ["src"],