This is an automated email from the ASF dual-hosted git repository.

ejones pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flagon-useralejs.git


The following commit(s) were added to refs/heads/master by this push:
     new da10342  chore(contributing): adds CONTRIBUTING.md (#468)
da10342 is described below

commit da10342d45d02d6b3106733b87cff07fef15dba4
Author: Evan Jones <evan.a.jon...@gmail.com>
AuthorDate: Mon Jul 8 12:11:54 2024 -0400

    chore(contributing): adds CONTRIBUTING.md (#468)
    
    * chore(docs): Adds CONTRIBUTING.md
    
    * chore(dependencies): remove unused test frameworks
    
    * chore(playwright): add browser install to postinstall
---
 .github/workflows/node.js.yml |   2 +-
 CONTRIBUTING.md               | 248 ++++++++++++++++++++
 package-lock.json             | 519 +-----------------------------------------
 package.json                  |   9 +-
 4 files changed, 252 insertions(+), 526 deletions(-)

diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 294ed45..7346b3d 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -65,7 +65,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        node-version: [18.x, 20.x]
+        node-version: [18.x, 20.x, 22.x]
         # See supported Node.js release schedule at 
https://nodejs.org/en/about/releases/
         # See active and security support for Node.js at 
https://endoflife.date/nodejs
     steps:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..e5113f2
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,248 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+
+# Contributing to Flagon UserALE
+
+There are many ways to contribute to Flagon UserALE, just one of which is by 
contributing code.
+Community building, maintenance, and documentation is just as important, if 
not more so for the
+longevity of UserALE. We welcome all forms of contributions.
+
+<!-- TODO: Insert link to official website about more ways to get plugged in.  
-->
+
+## Code Contributions
+
+*Before opening a pull request*, review the UserALE contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
+
+- Have you searched for existing, related Issues and pull requests?
+- Have you shared your intent by creating an issue and commenting that you 
plan to take it on?
+- If the change is large, have you discussed it on the 
[dev@](emailto:d...@flagon.apache.org) mailing list?
+- Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Node >= v18.x installed (we strongly recommend using 
[NVM](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating)).
+- [Docker](https://www.docker.com/) installed for some tasks including 
building the example server and testing changes to this website locally.
+- For large contributions, a signed [Individual Contributor License.
+  Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA) to the Apache
+  Software Foundation (ASF).
+
+### Share Your Intent
+1. Find or create an issue in the [UserALE 
repo](https://github.com/apache/flagon-useralejs/issues/new/choose).
+   Tracking your work in an issue will avoid duplicated or conflicting work, 
and provide
+   a place for notes. Later, your pull request will be linked to the issue as 
well.
+<!-- 2. Comment ".take-issue" on the issue. This will cause the issue to be 
assigned to you. -->
+<!--    When you've completed the issue, you can close it by commenting 
".close-issue". -->
+<!--    If you are a committer and would like to assign an issue to a 
non-committer, they must comment -->
+<!--    on the issue first; please tag the user asking them to do so or to 
comment "\`.take-issue\`". -->
+<!--    The command will be ignored if it is surrounded by `\`` markdown 
characters. -->
+2. If your change is large or it is your first change, it is a good idea to
+   [discuss it on the d...@flagon.apache.org mailing 
list](https://flagon.apache.org/community).
+3. For large changes create a design doc
+   ([template](https://s.apache.org/beam-design-doc-template)
+    and email it to the d...@flagon.apache.org mailing list).
+
+### Setup Your Environment and Learn About Language Specific Setup
+
+<!-- Before you begin, check out the Wiki pages. There are many useful tips 
about [Git](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips), 
[Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips), 
[Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips), 
[Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips), 
[Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips), etc. -->
+
+#### Configuring Dependencies and Tooling
+
+UserALE has dependencies on the following for development purposes:
+
+- Node >= v18.X
+- Go (for installing [Apache Skywalking 
Eyes](https://github.com/apache/skywalking-eyes) to check license headers)
+
+For Node, we strongly recommend using Node Version Manage (NVM), especially if 
you want to run the test suite against multiple node versions locally. 
Depending on your operating system, the steps for setting up these dependencies 
vary slightly.
+
+##### Windows Users
+
+For windows users, we strongly recommend you use Windows Subsystem for Linux 
(WSL) to develop in. There is generally better support for most development 
tools we use across the Flagon family. 
+
+Instructions to install WSL can be found 
[here](https://learn.microsoft.com/en-us/windows/wsl/setup/environment?source=recommendations).
 You need only follow them through the update and upgrade packages section. If 
you are a VSCode user, we also recommend the [WSL 
extension](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode).
+
+If you do use WSL, jump down to the [Unix Users section](#configuration-unix) 
for further instructions on setting up dependencies and tooling. Otherwise, 
continue here.
+
+###### Installing Node
+
+The simplest way to install one or more versions of node is to install and use 
[nvm-windows](https://github.com/coreybutler/nvm-windows), the NVM utility for 
windows. 
+
+> *_Important:_* It is always recommended to remove any existing installations 
of Node.js or npm from your operating system before installing a version 
manager as the different types of installation can lead to strange and 
confusing conflicts. This includes deleting any existing Node.js installation 
directories (e.g., "C:\Program Files\nodejs") that might remain. NVM's 
generated symlink will not overwrite an existing (even empty) installation 
directory. 
+
+Once the installation is complete, open PowerShell (recommended opening with 
elevated Admin permissions) and try using windows-nvm to list which version of 
Node are currently installed (should be none if you properly removed existing 
installations): `nvm ls`.
+
+We then recommend you install the most recent version of Node with long-term 
support LTS (v22.3.0 as of this writing (2024-06-13)):
+```sh
+nvm list available
+```
+Then install the LTS version number with:
+```sh
+nvm install <version>
+```
+###### Installing Go
+
+Head to the [Go release page](https://go.dev/doc/install), download the Go 
installer and then follow the instructions in the "Windows" tab.
+
+##### Unix (MacOS/Linux) Users {#configuration-unix}
+
+###### Installing Node
+
+1. Install [Node Version Manager 
(NVM)](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating).
+2. Check your install was successful (and `nvm` was added to the path), by 
re-opening your terminal and running `nvm version`. This should return your 
installed version number.
+3. Install Node v18 LTS
+```sh
+nvm install 18 --lts
+nvm use 18
+```
+
+###### Installing Go
+
+Head to the [Go release page](https://go.dev/doc/install), download the Go 
installer and then follow the instructions in the "Linux" or "Mac" tab, 
depending on your OS.
+
+#### Development Setup {#development-setup}
+
+1. Check [Git workflow 
tips](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips) if you need 
help with git forking, cloning, branching, committing, pull requests, and 
squashing commits (thanks to the Apache Beam community for such a great 
resource).
+
+2. Make a fork of https://github.com/apache/flagon-useralejs repo.
+
+3. Clone the forked repository. You can download it anywhere you like.
+    ```sh
+    mkdir -p ~/path/to/your/folder
+    cd ~/path/to/your/folder
+    git clone https://github.com/forked/apache/flagon-useralejs
+    cd flagon-useralejs
+    ```
+
+4. Install the project dependencies.
+
+   ```sh
+   npm install
+   ```
+   In addition to the node packages being installed, the post-install hook 
should also install Skywalking Eye's `license-eye` utility. To check that it 
was installed and works, run:
+   ```sh
+   npm run license:check
+   ```
+   UserALE uses Husky to run pre-commit hooks, an automated script to ensure 
your code changes follow required conventions and help increase your PR's 
chances of success before your code ever reaches remote. To install it:
+   ```sh
+   npm run prepare
+   ```
+
+5. Familiarize yourself with the project structure.
+
+   The library follows standard organization conventions:
+      - `build` contains the build artifacts. These are committed to source to 
ensure the repo itself is a self-contained "latest" release.
+      - `examples` contains examples for how to extend UserALE and use it with 
various web stacks.
+      - `journey` contains our end-to-end browser tests.
+      - `src` the library's source code. Please note, the library consists of 
of the core javascript library as well as a browser plugin which can be found 
in `build/UserALEWebExtension`. The plugin depends on the core library.
+      - `test` contains our unit test suite.
+
+6. Make sure you can build and run tests.
+
+   UserALE is written in Typescript. We use Rollup to compile the library into 
javascript files, create source maps, and build our typescript types (`d.ts` 
files). The build artifacts also mirror the source code insofar as the browser 
plugin is bundled into it's own directory for easy installation.
+
+   You must first build the library before running tests:
+   ```sh
+   npm run build
+   npm test
+   ```
+
+### Create a Pull Request
+
+1. Make your code change. Every source file needs to include the Apache 
license header. You can run `npm run license:fix` to automatically add a 
license header to *almost& every file type that requires one. Every new 
dependency needs to
+   have an open source license 
[compatible](https://www.apache.org/legal/resolved.html#criteria) with Apache.
+
+2. Add unit tests for your change.
+
+3. Use descriptive commit messages that make it easy to identify changes and 
provide a clear history.
+
+4. When your change is ready to be reviewed and merged, create a pull request.
+
+5. Link to the issue you are addressing in your pull request.
+
+6. The pull request and any changes pushed to it will trigger continuous 
integration (CI) jobs in GH actions that run tests across all supported 
versions of Node. There are currently no known flaky tests. Therefore, if your 
tests fail, it is likely due to one of your code changes and you will have to 
work to fix it.
+
+### Review Process and Releases
+
+#### Get Reviewed
+
+Your pull requests should automatically list recommended reviewers. Please 
select one to ensure your PR is reviewed in a timely fashion. We are working on 
improving our developer experience by adding automation tools to streamline 
things such as this in the future. We appreciate your patience!
+
+1. Pull requests can only be merged by a
+   [Flagon committer](https://home.apache.org/phonebook.html?pmc=flagon).
+   To find a committer for your area, either:
+  - look for similar code merges, or
+  - ask on [d...@flagon.apache.org](emailto:d...@flagon.apache.org)
+
+   Use `R: @username` in the pull request to notify a reviewer.
+
+2. If you don't get any response in 3 business days, email the 
[d...@flagon.apache.org mailing list](emailto:d...@flagon.apache.org) to ask 
for someone to look at your pull request.
+
+#### Make the Reviewer’s Job Easier
+
+1. Provide context for your changes in the associated issue and/or PR 
description.
+
+2. Avoid huge mega-changes. "Mega-changes" should first be discussed on the 
Dev mailing list or in a GH issue, preferably both, and, if there's interest, 
the community will work with you to break the changes up into bite size tickets.
+
+3. Review feedback typically leads to follow-up changes. It is easier to 
review follow-up changes when they are added as additional "fixup" commits to 
the
+   existing PR/branch. This allows reviewer(s) to track the incremental 
progress and focus on new changes,
+   and keeps comment threads attached to the code.
+   Please refrain from squashing new commits into reviewed commits before 
review is completed.
+   Because squashing reviewed and unreviewed commits often makes it harder to
+   see the difference between the review iterations, reviewers may ask you to 
unsquash new changes.
+
+4. After review is complete and the PR is accepted, fixup commits should be 
squashed (see [Git workflow 
tips](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips)).
+   Flagon committers can squash all commits in the PR during merge; however, 
if a PR has a mixture of independent changes that should not be squashed, and 
fixup commits,
+   then the PR author should help squashing fixup commits to maintain a clean 
commit history.
+
+#### Apache Flagon UserALE Releases
+
+Apache Flagon UserALE does not *yet* adhere to a fixed minor release schedule. 
However, we are discussing a 6 week cadence. We tend to cut a release upon 
completion of new development 
[milestones](https://github.com/apache/flagon-useralejs/milestones). If you 
want to see your changes released sooner, email the 
[d...@flagon.apache.org](emailto:d...@flagon.apache.org) and we will work to 
the best of our abilities to cut a release sooner.
+
+#### Stale Pull Requests
+
+The community will close stale pull requests in order to keep the project
+healthy. A pull request becomes stale after its author fails to respond to
+actionable comments for 60 days.  Author of a closed pull request is welcome to
+reopen the same pull request again in the future.
+
+<!-- ### Troubleshooting -->
+<!---->
+<!-- If you run into any issues, check out the [contribution 
FAQ](https://cwiki.apache.org/confluence/display/BEAM/Contributor+FAQ) or ask 
on the [dev@ mailing list](https://beam.apache.org/community/contact-us/) or 
[#beam channel of the ASF 
Slack](https://beam.apache.org/community/contact-us/). -->
+<!---->
+<!-- If you didn't find the information you were looking for in this guide, 
please -->
+<!-- [reach out to the Beam 
community](https://beam.apache.org/community/contact-us/). -->
+
+
+## Find Efforts to Contribute to
+A great way to contribute is to join an existing effort. If you want to get 
involved but don’t have a project in mind, check our [current 
milestones](https://github.com/apache/flagon-useralejs/milestones). These are 
areas where our core committers are actively working and most likely to be able 
to provide extra attention to your contributions as you ramp up your 
involvement.
+
+## Contributing to the Developer Documentation
+
+New contributors are often best equipped to find gaps in the developer 
documentation.
+If you'd like to contribute to our documentation, either open a PR in the 
UserALE repo with
+the proposed changes or make edits to the [Flagon 
wiki](https://cwiki.apache.org/confluence/display/flagon).
+
+By default, everyone has read access to the wiki. If you wish to contribute 
changes,
+please create an account and request edit access on the d...@flagon.apache.org 
mailing list (include your Wiki account user ID).
+
diff --git a/package-lock.json b/package-lock.json
index ae7a627..5258a38 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,6 @@
         "@rollup/plugin-node-resolve": "^15.2.3",
         "@rollup/plugin-terser": "^0.4.4",
         "@rollup/plugin-typescript": "^11.1.6",
-        "@types/chai": "^4.3.16",
         "@types/chrome": "^0.0.268",
         "@types/firefox-webext-browser": "^120.0.3",
         "@types/jest": "^29.5.12",
@@ -35,8 +34,6 @@
         "@typescript/lib-dom": "npm:@types/web@^0.0.144",
         "babel-jest": "^29.7.0",
         "body-parser": "^1.20.2",
-        "chai": "^4.3.10",
-        "chai-subset": "^1.6.0",
         "cypress": "^13.6.0",
         "detect-browser": "^5.3.0",
         "dom-storage": "^2.1.0",
@@ -50,7 +47,6 @@
         "jest-environment-jsdom": "^29.7.0",
         "jsdom": "^24.0.0",
         "jsonschema": "^1.4.1",
-        "mocha": "^10.2.0",
         "nodemon": "^3.0.2",
         "prettier": "^3.2.5",
         "rollup": "^4.6.1",
@@ -58,13 +54,12 @@
         "rollup-plugin-dts": "^6.1.0",
         "rollup-plugin-esbuild": "^6.1.1",
         "rollup-plugin-license": "^3.2.0",
-        "sinon": "^17.0.1",
         "ts-node": "^10.9.2",
         "typescript": "^5.4.5",
         "typescript-eslint": "^7.8.0"
       },
       "engines": {
-        "node": "^18.x || ^20.x",
+        "node": ">= 18.x",
         "npm": ">= 9.x"
       }
     },
@@ -3764,32 +3759,6 @@
         "@sinonjs/commons": "^3.0.0"
       }
     },
-    "node_modules/@sinonjs/samsam": {
-      "version": "8.0.0",
-      "resolved": 
"https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz";,
-      "integrity": 
"sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==",
-      "dev": true,
-      "dependencies": {
-        "@sinonjs/commons": "^2.0.0",
-        "lodash.get": "^4.4.2",
-        "type-detect": "^4.0.8"
-      }
-    },
-    "node_modules/@sinonjs/samsam/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"
-      }
-    },
-    "node_modules/@sinonjs/text-encoding": {
-      "version": "0.7.2",
-      "resolved": 
"https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz";,
-      "integrity": 
"sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==",
-      "dev": true
-    },
     "node_modules/@tootallnate/once": {
       "version": "2.0.0",
       "resolved": 
"https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz";,
@@ -3864,12 +3833,6 @@
         "@babel/types": "^7.20.7"
       }
     },
-    "node_modules/@types/chai": {
-      "version": "4.3.16",
-      "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz";,
-      "integrity": 
"sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==",
-      "dev": true
-    },
     "node_modules/@types/chrome": {
       "version": "0.0.268",
       "resolved": 
"https://registry.npmjs.org/@types/chrome/-/chrome-0.0.268.tgz";,
@@ -4496,15 +4459,6 @@
         "node": ">=0.8"
       }
     },
-    "node_modules/assertion-error": {
-      "version": "1.1.0",
-      "resolved": 
"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz";,
-      "integrity": 
"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/astral-regex": {
       "version": "2.0.0",
       "resolved": 
"https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz";,
@@ -4869,12 +4823,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/browser-stdout": {
-      "version": "1.3.1",
-      "resolved": 
"https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz";,
-      "integrity": 
"sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
-      "dev": true
-    },
     "node_modules/browserslist": {
       "version": "4.23.0",
       "resolved": 
"https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz";,
@@ -5048,33 +4996,6 @@
       "integrity": 
"sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
       "dev": true
     },
-    "node_modules/chai": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz";,
-      "integrity": 
"sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==",
-      "dev": true,
-      "dependencies": {
-        "assertion-error": "^1.1.0",
-        "check-error": "^1.0.3",
-        "deep-eql": "^4.1.3",
-        "get-func-name": "^2.0.2",
-        "loupe": "^2.3.6",
-        "pathval": "^1.1.1",
-        "type-detect": "^4.0.8"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/chai-subset": {
-      "version": "1.6.0",
-      "resolved": 
"https://registry.npmjs.org/chai-subset/-/chai-subset-1.6.0.tgz";,
-      "integrity": 
"sha512-K3d+KmqdS5XKW5DWPd5sgNffL3uxdDe+6GdnJh3AYPhwnBGRY5urfvfcbRtWIvvpz+KxkL9FeBB6MZewLUNwug==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";,
@@ -5098,18 +5019,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/check-error": {
-      "version": "1.0.3",
-      "resolved": 
"https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz";,
-      "integrity": 
"sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
-      "dev": true,
-      "dependencies": {
-        "get-func-name": "^2.0.2"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/check-more-types": {
       "version": "2.24.0",
       "resolved": 
"https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz";,
@@ -5742,18 +5651,6 @@
         }
       }
     },
-    "node_modules/decamelize": {
-      "version": "4.0.0",
-      "resolved": 
"https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz";,
-      "integrity": 
"sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
     "node_modules/decimal.js": {
       "version": "10.4.3",
       "resolved": 
"https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz";,
@@ -5774,18 +5671,6 @@
         }
       }
     },
-    "node_modules/deep-eql": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz";,
-      "integrity": 
"sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
-      "dev": true,
-      "dependencies": {
-        "type-detect": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz";,
@@ -5861,15 +5746,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/diff": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz";,
-      "integrity": 
"sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
     "node_modules/diff-sequences": {
       "version": "29.6.3",
       "resolved": 
"https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz";,
@@ -6831,15 +6707,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/flat": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz";,
-      "integrity": 
"sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
-      "dev": true,
-      "bin": {
-        "flat": "cli.js"
-      }
-    },
     "node_modules/flat-cache": {
       "version": "3.2.0",
       "resolved": 
"https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz";,
@@ -6963,15 +6830,6 @@
         "node": "6.* || 8.* || >= 10.*"
       }
     },
-    "node_modules/get-func-name": {
-      "version": "2.0.2",
-      "resolved": 
"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz";,
-      "integrity": 
"sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/get-intrinsic": {
       "version": "1.2.4",
       "resolved": 
"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz";,
@@ -7229,15 +7087,6 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz";,
-      "integrity": 
"sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "dev": true,
-      "bin": {
-        "he": "bin/he"
-      }
-    },
     "node_modules/html-encoding-sniffer": {
       "version": "4.0.0",
       "resolved": 
"https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz";,
@@ -7628,15 +7477,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/is-plain-obj": {
-      "version": "2.1.0",
-      "resolved": 
"https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz";,
-      "integrity": 
"sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/is-plain-object": {
       "version": "2.0.4",
       "resolved": 
"https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";,
@@ -9959,12 +9799,6 @@
         "verror": "1.10.0"
       }
     },
-    "node_modules/just-extend": {
-      "version": "6.2.0",
-      "resolved": 
"https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz";,
-      "integrity": 
"sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==",
-      "dev": true
-    },
     "node_modules/keyv": {
       "version": "4.5.4",
       "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz";,
@@ -10080,12 +9914,6 @@
       "integrity": 
"sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
       "dev": true
     },
-    "node_modules/lodash.get": {
-      "version": "4.4.2",
-      "resolved": 
"https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz";,
-      "integrity": 
"sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
-      "dev": true
-    },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
       "resolved": 
"https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz";,
@@ -10266,15 +10094,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/loupe": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz";,
-      "integrity": 
"sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
-      "dev": true,
-      "dependencies": {
-        "get-func-name": "^2.0.1"
-      }
-    },
     "node_modules/lru-cache": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz";,
@@ -10472,206 +10291,6 @@
         "url": "https://github.com/sponsors/isaacs";
       }
     },
-    "node_modules/mocha": {
-      "version": "10.4.0",
-      "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz";,
-      "integrity": 
"sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-colors": "4.1.1",
-        "browser-stdout": "1.3.1",
-        "chokidar": "3.5.3",
-        "debug": "4.3.4",
-        "diff": "5.0.0",
-        "escape-string-regexp": "4.0.0",
-        "find-up": "5.0.0",
-        "glob": "8.1.0",
-        "he": "1.2.0",
-        "js-yaml": "4.1.0",
-        "log-symbols": "4.1.0",
-        "minimatch": "5.0.1",
-        "ms": "2.1.3",
-        "serialize-javascript": "6.0.0",
-        "strip-json-comments": "3.1.1",
-        "supports-color": "8.1.1",
-        "workerpool": "6.2.1",
-        "yargs": "16.2.0",
-        "yargs-parser": "20.2.4",
-        "yargs-unparser": "2.0.0"
-      },
-      "bin": {
-        "_mocha": "bin/_mocha",
-        "mocha": "bin/mocha.js"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/mocha/node_modules/ansi-colors": {
-      "version": "4.1.1",
-      "resolved": 
"https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";,
-      "integrity": 
"sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/mocha/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/mocha/node_modules/cliui": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";,
-      "integrity": 
"sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^7.0.0"
-      }
-    },
-    "node_modules/mocha/node_modules/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,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
-    "node_modules/mocha/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,
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
-    "node_modules/mocha/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/mocha/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"
-      }
-    },
-    "node_modules/mocha/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==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
-    "node_modules/mocha/node_modules/minimatch": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz";,
-      "integrity": 
"sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/mocha/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
-    },
-    "node_modules/mocha/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==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
-    "node_modules/mocha/node_modules/serialize-javascript": {
-      "version": "6.0.0",
-      "resolved": 
"https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz";,
-      "integrity": 
"sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/mocha/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==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1";
-      }
-    },
-    "node_modules/mocha/node_modules/yargs": {
-      "version": "16.2.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz";,
-      "integrity": 
"sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^7.0.2",
-        "escalade": "^3.1.1",
-        "get-caller-file": "^2.0.5",
-        "require-directory": "^2.1.1",
-        "string-width": "^4.2.0",
-        "y18n": "^5.0.5",
-        "yargs-parser": "^20.2.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/moment": {
       "version": "2.30.1",
       "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz";,
@@ -10702,34 +10321,6 @@
         "node": ">= 0.6"
       }
     },
-    "node_modules/nise": {
-      "version": "5.1.9",
-      "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz";,
-      "integrity": 
"sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
-      "dev": true,
-      "dependencies": {
-        "@sinonjs/commons": "^3.0.0",
-        "@sinonjs/fake-timers": "^11.2.2",
-        "@sinonjs/text-encoding": "^0.7.2",
-        "just-extend": "^6.2.0",
-        "path-to-regexp": "^6.2.1"
-      }
-    },
-    "node_modules/nise/node_modules/@sinonjs/fake-timers": {
-      "version": "11.2.2",
-      "resolved": 
"https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz";,
-      "integrity": 
"sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
-      "dev": true,
-      "dependencies": {
-        "@sinonjs/commons": "^3.0.0"
-      }
-    },
-    "node_modules/nise/node_modules/path-to-regexp": {
-      "version": "6.2.2",
-      "resolved": 
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz";,
-      "integrity": 
"sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
-      "dev": true
-    },
     "node_modules/node-int64": {
       "version": "0.4.0",
       "resolved": 
"https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz";,
@@ -11076,15 +10667,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/pathval": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz";,
-      "integrity": 
"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/pend": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";,
@@ -12256,63 +11838,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/sinon": {
-      "version": "17.0.1",
-      "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz";,
-      "integrity": 
"sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==",
-      "dev": true,
-      "dependencies": {
-        "@sinonjs/commons": "^3.0.0",
-        "@sinonjs/fake-timers": "^11.2.2",
-        "@sinonjs/samsam": "^8.0.0",
-        "diff": "^5.1.0",
-        "nise": "^5.1.5",
-        "supports-color": "^7.2.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/sinon";
-      }
-    },
-    "node_modules/sinon/node_modules/@sinonjs/fake-timers": {
-      "version": "11.2.2",
-      "resolved": 
"https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz";,
-      "integrity": 
"sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
-      "dev": true,
-      "dependencies": {
-        "@sinonjs/commons": "^3.0.0"
-      }
-    },
-    "node_modules/sinon/node_modules/diff": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz";,
-      "integrity": 
"sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/sinon/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==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/sinon/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==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/sisteransi": {
       "version": "1.0.5",
       "resolved": 
"https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz";,
@@ -13279,12 +12804,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/workerpool": {
-      "version": "6.2.1",
-      "resolved": 
"https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz";,
-      "integrity": 
"sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
-      "dev": true
-    },
     "node_modules/wrap-ansi": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz";,
@@ -13423,42 +12942,6 @@
         "node": ">=12"
       }
     },
-    "node_modules/yargs-parser": {
-      "version": "20.2.4",
-      "resolved": 
"https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz";,
-      "integrity": 
"sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/yargs-unparser": {
-      "version": "2.0.0",
-      "resolved": 
"https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz";,
-      "integrity": 
"sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^6.0.0",
-        "decamelize": "^4.0.0",
-        "flat": "^5.0.2",
-        "is-plain-obj": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/yargs-unparser/node_modules/camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz";,
-      "integrity": 
"sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus";
-      }
-    },
     "node_modules/yargs/node_modules/yargs-parser": {
       "version": "21.1.1",
       "resolved": 
"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz";,
diff --git a/package.json b/package.json
index f677555..a96c035 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
     "example:run": "node example/server.js",
     "example:watch": "nodemon -w ./example example/server.js",
     "prepare": "husky",
-    "postinstall": "go install 
github.com/apache/skywalking-eyes/cmd/license-eye@latest"
+    "postinstall": "go install 
github.com/apache/skywalking-eyes/cmd/license-eye@latest && npx playwright 
install"
   },
   "repository": {
     "type": "git",
@@ -54,7 +54,7 @@
   },
   "homepage": "https://flagon.apache.org/";,
   "engines": {
-    "node": "^18.x || ^20.x",
+    "node": ">= 18.x",
     "npm": ">= 9.x"
   },
   "devDependencies": {
@@ -72,7 +72,6 @@
     "@rollup/plugin-node-resolve": "^15.2.3",
     "@rollup/plugin-terser": "^0.4.4",
     "@rollup/plugin-typescript": "^11.1.6",
-    "@types/chai": "^4.3.16",
     "@types/chrome": "^0.0.268",
     "@types/firefox-webext-browser": "^120.0.3",
     "@types/jest": "^29.5.12",
@@ -83,8 +82,6 @@
     "@typescript/lib-dom": "npm:@types/web@^0.0.144",
     "babel-jest": "^29.7.0",
     "body-parser": "^1.20.2",
-    "chai": "^4.3.10",
-    "chai-subset": "^1.6.0",
     "cypress": "^13.6.0",
     "detect-browser": "^5.3.0",
     "dom-storage": "^2.1.0",
@@ -98,7 +95,6 @@
     "jest-environment-jsdom": "^29.7.0",
     "jsdom": "^24.0.0",
     "jsonschema": "^1.4.1",
-    "mocha": "^10.2.0",
     "nodemon": "^3.0.2",
     "prettier": "^3.2.5",
     "rollup": "^4.6.1",
@@ -106,7 +102,6 @@
     "rollup-plugin-dts": "^6.1.0",
     "rollup-plugin-esbuild": "^6.1.1",
     "rollup-plugin-license": "^3.2.0",
-    "sinon": "^17.0.1",
     "ts-node": "^10.9.2",
     "typescript": "^5.4.5",
     "typescript-eslint": "^7.8.0"


Reply via email to