diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 00000000..679b755c
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,101 @@
+{
+ "projectName": "angular-example-app",
+ "projectOwner": "Ismaestro",
+ "files": ["README.md"],
+ "commitType": "docs",
+ "commitConvention": "angular",
+ "contributorsPerLine": 6,
+ "contributors": [
+ {
+ "login": "magicalyak",
+ "name": "Tom Gamull",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6165889?v=4",
+ "profile": "https://magicalyak.org/",
+ "contributions": ["infra"]
+ },
+ {
+ "login": "mansya",
+ "name": "mansyaprime",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33461607?v=4",
+ "profile": "https://github.com/mansya",
+ "contributions": ["code"]
+ },
+ {
+ "login": "codeimmortal",
+ "name": "codeimmortal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16804408?v=4",
+ "profile": "https://github.com/codeimmortal",
+ "contributions": ["code"]
+ },
+ {
+ "login": "tomasfse",
+ "name": "tomasfse",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22914697?v=4",
+ "profile": "https://github.com/tomasfse",
+ "contributions": ["code"]
+ },
+ {
+ "login": "golu7679",
+ "name": "golu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55990159?v=4",
+ "profile": "https://golu7679.github.io/",
+ "contributions": ["code"]
+ },
+ {
+ "login": "v-rr",
+ "name": "rancyr",
+ "avatar_url": "https://avatars.githubusercontent.com/u/90811840?v=4",
+ "profile": "https://github.com/microsoft/Secure-Supply-Chain/",
+ "contributions": ["code"]
+ },
+ {
+ "login": "codingphasedotcom",
+ "name": "codingphasedotcom",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26421899?v=4",
+ "profile": "http://www.codingphase.com/",
+ "contributions": ["code"]
+ },
+ {
+ "login": "scip92",
+ "name": "Max",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15237896?v=4",
+ "profile": "https://github.com/scip92",
+ "contributions": ["code"]
+ },
+ {
+ "login": "HerbertKarajan",
+ "name": "Karajan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20851191?v=4",
+ "profile": "https://github.com/HerbertKarajan",
+ "contributions": ["code"]
+ },
+ {
+ "login": "carlchandev",
+ "name": "Carl Chan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/34772941?v=4",
+ "profile": "https://github.com/carlchandev",
+ "contributions": ["code"]
+ },
+ {
+ "login": "dyeimys",
+ "name": "Dyeimys Franco Correa",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4250372?v=4",
+ "profile": "https://github.com/dyeimys",
+ "contributions": ["code"]
+ },
+ {
+ "login": "mugan86",
+ "name": "Anartz Mugika Ledo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5081970?v=4",
+ "profile": "https://anartz-mugika.com/qwik-book/es/",
+ "contributions": ["code"]
+ },
+ {
+ "login": "OrlPep",
+ "name": "OrlPep",
+ "avatar_url": "https://avatars.githubusercontent.com/u/171474908?v=4",
+ "profile": "https://github.com/OrlPep",
+ "contributions": ["code"]
+ }
+ ]
+}
diff --git a/.angular-cli.json b/.angular-cli.json
deleted file mode 100644
index 2a87b0d8..00000000
--- a/.angular-cli.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "project": {
- "name": "angular-example-app"
- },
- "apps": [
- {
- "root": "src",
- "outDir": "dist",
- "assets": [
- "assets",
- "favicon.ico",
- "sitemap.xml",
- "googled41787c6aae2151b.html",
- "CNAME"
- ],
- "index": "index.html",
- "main": "main.ts",
- "polyfills": "polyfills.ts",
- "test": "test.ts",
- "tsconfig": "tsconfig.app.json",
- "testTsconfig": "tsconfig.spec.json",
- "prefix": "app",
- "stylesUrls": [
- ""
- ],
- "styles": [
- "assets/css/reset.css",
- "assets/css/loading.css",
- "assets/css/styles.scss"
- ],
- "scripts": [
- "assets/js/modernizr.js",
- "assets/js/gtm.js"
- ],
- "environmentSource": "environments/environment.ts",
- "environments": {
- "dev": "environments/environment.ts",
- "prod": "environments/environment.prod.ts"
- }
- }
- ],
- "e2e": {
- "protractor": {
- "config": "./protractor.conf.js"
- }
- },
- "lint": [
- {
- "project": "src/tsconfig.app.json"
- },
- {
- "project": "src/tsconfig.spec.json"
- },
- {
- "project": "e2e/tsconfig.e2e.json"
- }
- ],
- "test": {
- "karma": {
- "config": "./karma.conf.js"
- }
- },
- "defaults": {
- "styleExt": "css",
- "component": {}
- }
-}
diff --git a/.browserslistrc b/.browserslistrc
new file mode 100755
index 00000000..525da03c
--- /dev/null
+++ b/.browserslistrc
@@ -0,0 +1,14 @@
+# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
+# For additional information regarding the format and rule options, please see:
+# https://github.com/browserslist/browserslist#queries
+
+# For the full list of supported browsers by the Angular framework, please see:
+# https://angular.io/guide/browser-support
+
+# You can see what browsers were selected by your queries by running:
+# npx browserslist
+
+last 2 Chrome versions
+last 2 Firefox versions
+last 2 Edge versions
+last 2 Safari versions
diff --git a/.commitlintrc.json b/.commitlintrc.json
new file mode 100755
index 00000000..6c703e4e
--- /dev/null
+++ b/.commitlintrc.json
@@ -0,0 +1,25 @@
+{
+ "extends": ["@commitlint/config-conventional"],
+ "rules": {
+ "type-enum": [2, "always", ["build", "docs", "feat", "fix", "perf", "refactor", "test"]],
+ "scope-enum": [
+ 2,
+ "always",
+ [
+ "repo",
+ "tools",
+ "styles",
+ "e2e",
+ "version",
+ "app",
+ "core",
+ "auth",
+ "home",
+ "pokemon",
+ "pokedex"
+ ]
+ ],
+ "subject-case": [2, "always", "lower-case"],
+ "subject-full-stop": [2, "never"]
+ }
+}
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index d992b0ff..00000000
--- a/.dockerignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-.git
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
new file mode 100755
index 00000000..b040ca86
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,20 @@
+# Editor configuration, see https://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.ts]
+quote_type = single
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false
+
+[*.xlf]
+insert_final_newline = false
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100755
index 00000000..9fa08a62
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,35 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+---
+
+**Describe the bug** A clear and concise description of what the bug is.
+
+**To Reproduce** Steps to reproduce the behavior:
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior** A clear and concise description of what you expected to happen.
+
+**Screenshots** If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+
+- OS: [e.g. iOS]
+- Browser [e.g. chrome, safari]
+- Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+
+- Device: [e.g. iPhone6]
+- OS: [e.g. iOS8.1]
+- Browser [e.g. stock browser, safari]
+- Version [e.g. 22]
+
+**Additional context** Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100755
index 00000000..90320852
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,17 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+---
+
+**Is your feature request related to a problem? Please describe.** A clear and concise description
+of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like** A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered** A clear and concise description of any alternative
+solutions or features you've considered.
+
+**Additional context** Add any other context or screenshots about the feature request here.
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
index a4b4294d..865d7fe6
--- a/.gitignore
+++ b/.gitignore
@@ -1,39 +1,44 @@
-# compiled output
+# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
+
+# Compiled output
/dist
+/test-results
/tmp
+/out-tsc
+/bazel-out
-# dependencies
+# Node
/node_modules
-/coverage
+npm-debug.log
+yarn-error.log
# IDEs and editors
-/.idea
+.idea/
.project
.classpath
.c9/
*.launch
.settings/
+*.sublime-workspace
-# IDE - VSCode
+# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
+.history/*
-# misc
-/.sass-cache
+# Miscellaneous
+/.angular/cache
+.sass-cache/
/connect.lock
-/coverage/*
+/coverage
/libpeerconnection.log
-npm-debug.log
testem.log
/typings
+/playwright-report
-# e2e
-/e2e/*.js
-/e2e/*.map
-
-#System Files
+# System files
.DS_Store
Thumbs.db
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100755
index 00000000..30d445e8
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1 @@
+npx commitlint --edit
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 00000000..0c8de168
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1 @@
+npx lint-staged && npm run lint
diff --git a/.husky/pre-push b/.husky/pre-push
new file mode 100755
index 00000000..a251552a
--- /dev/null
+++ b/.husky/pre-push
@@ -0,0 +1 @@
+npm run format:check && npm run test && npm run build && npm run lighthouse
diff --git a/.lintstagedrc.json b/.lintstagedrc.json
new file mode 100644
index 00000000..6e262ac9
--- /dev/null
+++ b/.lintstagedrc.json
@@ -0,0 +1,4 @@
+{
+ "*.{ts,js,json,html,css,scss,md,mdx}": ["prettier --write"],
+ "*.{css,scss}": ["stylelint --fix"]
+}
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000..d5831dd5
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,2 @@
+engine-strict=true
+legacy-peer-deps=true
diff --git a/.prettierignore b/.prettierignore
new file mode 100755
index 00000000..c7a96211
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,4 @@
+dist
+coverage
+node_modules
+.angular/cache
diff --git a/.prettierrc b/.prettierrc
new file mode 100755
index 00000000..f7abc165
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,17 @@
+{
+ "printWidth": 100,
+ "tabWidth": 2,
+ "useTabs": false,
+ "embeddedLanguageFormatting": "off",
+ "singleQuote": true,
+ "semi": true,
+ "quoteProps": "preserve",
+ "bracketSpacing": true,
+ "trailingComma": "all",
+ "overrides": [
+ {
+ "files": ".prettierrc",
+ "options": { "parser": "json" }
+ }
+ ]
+}
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 00000000..865d7fe6
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1,44 @@
+# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
+
+# Compiled output
+/dist
+/test-results
+/tmp
+/out-tsc
+/bazel-out
+
+# Node
+/node_modules
+npm-debug.log
+yarn-error.log
+
+# IDEs and editors
+.idea/
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# Visual Studio Code
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+.history/*
+
+# Miscellaneous
+/.angular/cache
+.sass-cache/
+/connect.lock
+/coverage
+/libpeerconnection.log
+testem.log
+/typings
+/playwright-report
+
+# System files
+.DS_Store
+Thumbs.db
diff --git a/.stylelintrc.json b/.stylelintrc.json
new file mode 100755
index 00000000..5afdf7a7
--- /dev/null
+++ b/.stylelintrc.json
@@ -0,0 +1,12 @@
+{
+ "extends": ["stylelint-config-standard-scss", "stylelint-config-recess-order"],
+ "customSyntax": "postcss-scss",
+ "plugins": ["stylelint-order"],
+ "rules": {
+ "import-notation": null,
+ "function-no-unknown": null,
+ "no-descending-specificity": null,
+ "at-rule-no-unknown": null,
+ "selector-class-pattern": "^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*(__[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?(--[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"
+ }
+}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 536cedc6..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-#.travis.yml
-
-sudo: required
-
-dist: trusty
-
-addons:
- apt:
- sources:
- - google-chrome
- packages:
- - google-chrome-stable
-
-language: node_js
-
-node_js:
- - 7
-
-branches:
- only:
- - master
-
-before_script:
- - set -e
- - npm install
- - npm install -g angular-cli-ghpages
- - export DISPLAY=:99.0
- - sh -e /etc/init.d/xvfb start
-
-script:
- - npm run lint
- - npm run test
- - npm run e2e
- - ng build --prod --base-href /
-
-after_success:
- - if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
- angular-cli-ghpages --repo=https://GH_TOKEN@$GH_REPO --name="New release" --email=$EMAIL;
- fi
- - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
-
-notifications:
- email:
- on_failure: change
- on_success: change
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
old mode 100644
new mode 100755
index 279e4153..1d3df8fb
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,56 +1,35 @@
-# Change Log
+
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+# 20.0.0 (2025-10-30)
-
-# [5.1.0](https://github.com/Ismaestro/angular5-example-app/compare/v2.4.0...v5.1.0) (2017-12-07)
+### Angular 20
+| Type | Description |
+| ---- | ---------------------------- |
+| feat | update angular version to 20 |
-### Bug Fixes
+---
-* **e2e:** updated number of default heroes ([cd0b1d4](https://github.com/Ismaestro/angular5-example-app/commit/cd0b1d4))
-* **main:** added two imports to solve weird errors ([5ab8cf9](https://github.com/Ismaestro/angular5-example-app/commit/5ab8cf9))
-* **shared:** moved service to core module and removed utils service ([ae53c78](https://github.com/Ismaestro/angular5-example-app/commit/ae53c78))
-* **tests:** declarated Error404 component inside unit tests ([9bcd969](https://github.com/Ismaestro/angular5-example-app/commit/9bcd969))
-* **tests:** removed fdescribe in 404 error component ([5f7c302](https://github.com/Ismaestro/angular5-example-app/commit/5f7c302))
+
+# 19.1.0 (2025-10-27)
-### Features
+### app
-* **404:** added 404 page error ([0d0853d](https://github.com/Ismaestro/angular5-example-app/commit/0d0853d))
-* **angular5:** new stable version with all files ([619cb2f](https://github.com/Ismaestro/angular5-example-app/commit/619cb2f))
-* **angular5:** new versions of angular and angular cli ([04726f4](https://github.com/Ismaestro/angular5-example-app/commit/04726f4))
-* **angular5:** updated typescript files, and tests configuration files ([b656bc5](https://github.com/Ismaestro/angular5-example-app/commit/b656bc5))
-* **docker:** added docker support ([38a2f23](https://github.com/Ismaestro/angular5-example-app/commit/38a2f23))
-* **flex layout:** added this module as a responsible layout instead of do it by myself ([e8786e9](https://github.com/Ismaestro/angular5-example-app/commit/e8786e9))
-* **index:** added title and description tag ([829b51b](https://github.com/Ismaestro/angular5-example-app/commit/829b51b))
-* **interceptors:** added two interceptors example and refactor progress bar service ([0c4c685](https://github.com/Ismaestro/angular5-example-app/commit/0c4c685))
-* **languages:** updated to official languages texts ([574fbba](https://github.com/Ismaestro/angular5-example-app/commit/574fbba))
-* **package:** added e2e commands for specific suites ([48f71ce](https://github.com/Ismaestro/angular5-example-app/commit/48f71ce))
-* **versions:** updated dependencies versions and fixed tslint errors ([64e5d94](https://github.com/Ismaestro/angular5-example-app/commit/64e5d94))
+| Type | Description |
+| ---- | -------------------------------------------------------------------------------------------------------------------------------------- |
+| feat | add support for **SSG (Static Site Generation)**, prerendering the main path `/` and individual Pokémon routes like `/pokemon/pikachu` |
+---
+
-
-# [5.0.0](https://github.com/Ismaestro/angular4-example-app/compare/v2.4.0...v5.0.0) (2017-11-06)
+# 19.0.0 (2025-01-29)
+### app
-### Bug Fixes
+| Type | Description |
+| ---- | ---------------------------------------------- |
+| feat | add number of real time users inside home page |
-* **e2e:** updated number of default heroes ([cd0b1d4](https://github.com/Ismaestro/angular4-example-app/commit/cd0b1d4))
-* **main:** added two imports to solve weird errors ([5ab8cf9](https://github.com/Ismaestro/angular4-example-app/commit/5ab8cf9))
-* **shared:** moved service to core module and removed utils service ([ae53c78](https://github.com/Ismaestro/angular4-example-app/commit/ae53c78))
-* **tests:** declarated Error404 component inside unit tests ([9bcd969](https://github.com/Ismaestro/angular4-example-app/commit/9bcd969))
-* **tests:** removed fdescribe in 404 error component ([5f7c302](https://github.com/Ismaestro/angular4-example-app/commit/5f7c302))
-
-
-### Features
-
-* **404:** added 404 page error ([0d0853d](https://github.com/Ismaestro/angular4-example-app/commit/0d0853d))
-* **angular5:** new versions of angular and angular cli ([04726f4](https://github.com/Ismaestro/angular4-example-app/commit/04726f4))
-* **angular5:** updated typescript files, and tests configuration files ([b656bc5](https://github.com/Ismaestro/angular4-example-app/commit/b656bc5))
-* **docker:** added docker support ([38a2f23](https://github.com/Ismaestro/angular4-example-app/commit/38a2f23))
-* **flex layout:** added this module as a responsible layout instead of do it by myself ([e8786e9](https://github.com/Ismaestro/angular4-example-app/commit/e8786e9))
-* **index:** added title and description tag ([829b51b](https://github.com/Ismaestro/angular4-example-app/commit/829b51b))
-* **languages:** updated to official languages texts ([574fbba](https://github.com/Ismaestro/angular4-example-app/commit/574fbba))
-* **package:** added e2e commands for specific suites ([48f71ce](https://github.com/Ismaestro/angular4-example-app/commit/48f71ce))
+---
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 2e3213f6..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at ramossilvanismael@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 9e9eb57d..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,53 +0,0 @@
-Contributing
-
-When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
-
-Please note we have a code of conduct, please follow it in all your interactions with the project.
-
-Pull Request Process
-
-Ensure any install or build dependencies are removed before the end of the layer when doing a build.
-Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters.
-Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent. The versioning scheme we use is SemVer.
-You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you.
-Code of Conduct
-
-Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-Using welcoming and inclusive language
-Being respectful of differing viewpoints and experiences
-Gracefully accepting constructive criticism
-Focusing on what is best for the community
-Showing empathy towards other community members
-Examples of unacceptable behavior by participants include:
-
-The use of sexualized language or imagery and unwelcome sexual attention or advances
-Trolling, insulting/derogatory comments, and personal or political attacks
-Public or private harassment
-Publishing others' private information, such as a physical or electronic address, without explicit permission
-Other conduct which could reasonably be considered inappropriate in a professional setting
-Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at ramossilvanismael@gmail.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-Attribution
-
-This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index d7712cfb..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-FROM node:8-alpine as builder
-
-COPY package.json package-lock.json ./
-
-RUN npm set progress=false && npm config set depth 0 && npm cache clean --force
-
-## Storing node modules on a separate layer will prevent unnecessary npm installs at each build
-RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
-
-WORKDIR /ng-app
-
-COPY . .
-
-## Build the angular app in production mode and store the artifacts in dist folder
-RUN $(npm bin)/ng build --prod
-
-FROM nginx:1.13.3-alpine
-
-## Copy our default nginx config
-COPY nginx/default.conf /etc/nginx/conf.d/
-
-## Remove default nginx website
-RUN rm -rf /usr/share/nginx/html/*
-
-## From 'builder' stage copy over the artifacts in dist folder to default nginx public folder
-COPY --from=builder /ng-app/dist /usr/share/nginx/html
-
-CMD ["nginx", "-g", "daemon off;"]
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100755
index 2080ef3d..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) [2016] [Ismael Ramos Silvan]
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
index b56389c1..259391e9 100755
--- a/README.md
+++ b/README.md
@@ -1,112 +1,120 @@
-# Example app with Angular 5 + Angular CLI + Angular Material + Docker
+
+
🚀 Angular Example App
-> ### Base project made with much :heart: . Contains CRUD, official style guide, patterns, etc.
+
+ Your all-in-one real-world Angular starter — built for learning , productivity , and scaling .
+
+ Crafted with ❤️ to showcase real best practices in action: standalone components, signals, routing, i18n, authentication and more.
+
+ 🔥 Live Demo
+
+
+
+
-
-[](https://coveralls.io/github/Ismaestro/angular5-example-app?branch=master)
-[](https://www.codacy.com/app/Ismaestro/angular5-example-app?utm_source=github.com&utm_medium=referral&utm_content=Ismaestro/angular5-example-app&utm_campaign=badger)
-[](https://snyk.io/test/github/ismaestro/angular5-example-app)
-[](https://conventionalcommits.org)
+---
-[](https://david-dm.org/ismaestro/angular5-example-app#info=dependencies)
-[](https://david-dm.org/ismaestro/angular5-example-app#info=devDependencies)
-[](https://david-dm.org/ismaestro/angular5-example-app?type=peer)
+## 📦 Why This Project?
-[](http://angularexampleapp.com/)
-[](https://gitter.im/angular5-example-app/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+Whether you're just starting with Angular or looking for a solid base for your next app, this project has you covered.
-[](https://github.com/ismaestro/angular5-example-app/fork)
-[](https://github.com/ismaestro/angular5-example-app)
+- ✅ **Beginner-friendly**: Clean code, best practices, and detailed structure.
+- ✅ **Production-ready**: Real APIs, authentication, modular architecture.
+- ✅ **Feature-rich**: Not just a to-do list! Real-world logic you’ll use in any serious project.
+- ✅ **Made with love**: Built by passionate developers, for the community.
-### DEMO
+---
-Live DEMO [here](http://angularexampleapp.com/)!
+## 🛠️ Getting Started
-[](http://angularexampleapp.com/)
+```bash
+npm i
+npm start
+```
-## Usage
+---
-**Warning: we strongly recommend node >=v6.9.0 and npm >=3.0.0**
+## 🚨 Live Status
-`npm i` - Installs everything needed
+[](https://app.netlify.com/sites/angular-example-app/deploys)
-`npm start` - Starts the app. Then, go to `localhost:4200`
+---
-`npm run test` - Runs unit tests with karma and jasmine
+## 🌍 Backend API
-`npm run e2e` - Runs end to end tests
+This app connects to a real backend powered by NestJS, PostgreSQL, and Prisma, deployed on Fly.io. You can explore the codebase [here](https://github.com/Ismaestro/nestjs-example-app).
-`npm run e2e:home` - Runs end to end tests only for the home directory. There are more commands like this one, for development purposes
+---
-`npm run build` - Builds the app for production
+## ✨ Features
-`npm run lint` - Runs the linter (tslint)
+| | |
+| ----------------------- | --------------------------------------------------- |
+| ✅ Angular 20 | Using the latest version |
+| ✅ Internationalization | i18n with English and Spanish |
+| ✅ Authentication | JWT-based, real login flow |
+| ✅ Routing & Guards | Functional guards with lazy-loaded routes |
+| ✅ Responsive Design | Mobile-first layouts with Flexbox and Grid |
+| ✅ APIs | Example integration with the PokeAPI |
+| ✅ Shoelace Components | Accessible and modern UI components |
+| ✅ NgOptimizedImage | Fast image loading with Angular's directive |
+| ✅ SSG & Prerendering | Static Site Generation for main and Pokémon pages |
+| ✅ Animations | Smooth transitions with Angular Animations |
+| ✅ Clean Architecture | Modular folder structure following best practices |
+| ✅ SASS & BEM | Maintainable and scalable styling |
+| ✅ Tests E2E | Using Playwright and also with best practices (POM) |
+| ✅ Lighthouse | Verifying web performance with defined thresholds |
+| 🧪 Testing | Unit (coming soon!) |
-`npm run ci` - Executes linter and tests
+---
-`npm run deploy` - Builds the app and deploy it to Github pages (angular-cli-ghpages) (fork to do this and remove CNAME file)
+## 🧩 Roadmap
-`npm run sme` - Builds and runs source map explorer, really cool :)
+- [ ] Component & service testing with Angular Testing Library
+- [ ] End-to-End tests with Playwright
-`npm run release` - Creates a new release using standard-version
+---
-`npm run docker` - Builds the docker image and run the container
+## 🐛 Found a bug? Got an idea?
-**Windows: use precompilation to speed up**
+We love feedback! If something doesn't work or you think of a cool new feature, [open an issue](https://github.com/Ismaestro/angular-example-app/issues/new) or contribute directly with a PR.
-`tsc --project tsconfig.json`
-`npm start`
+---
-## Features
-* Responsive layout (flex layout module)
-* Internationalization
-* Lazy loading modules
-* Interceptors and Events (Progress bar active, if a request is pending)
-* CRUD: create, update and remove heroes
-* Search bar, to look for heroes
-* Modal and toasts (snakbar)!
-* Unit tests with Jasmine and Karma including code coverage
-* End-to-end tests with Protractor
-* ES6 Promises
-* Github pages deploy ready
-* Google Tag Manager
-* Modernizr (browser features detection)
-* Following the [best practices](https://angular.io/guide/styleguide)!
+## 🤝 Contributors
-## Docker
+
+
+
+
-You can build the image and run the container with Docker. The configuration is in the nginx folder if you want to change it.
+
+
-`docker build -t angularexampleapp .`
+
-`docker run -d -p 4200:80 angularexampleapp`
-
-Thanks to [avatsaev](https://github.com/avatsaev/angular4-docker-example)!
-
-## Travis CI
-We use Travis CI to run this tasks in order:
-* Linter
-* Tests
-* Build for production
-* Deploy in Github pages
-:)
-
-## Contributing
-- Please see the CONTRIBUTING file for guidelines.
-- Create **pull requests, submit bugs, suggest new features** or documentation updates :wrench:
-
-## Server
-
-This repo is using an API which is [a minimal app](https://github.com/Ismaestro/nodejs-example-app) in NodeJS deployed on Heroku and using PostGreSQL, to create, modify and delete heroes.
-
-## Contributors
-
-Thanks to all contributors and their support!
+---
## License
-MIT
-
-Enjoy :metal:
-
-We are always happy to hear your feedback!
+This project is licensed under the [MIT License](https://github.com/Ismaestro/angular-example-app/blob/master/LICENSE).
diff --git a/angular.json b/angular.json
new file mode 100755
index 00000000..c9b2a5fa
--- /dev/null
+++ b/angular.json
@@ -0,0 +1,170 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "newProjectRoot": "projects",
+ "projects": {
+ "angularexampleapp": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:component": {
+ "style": "scss",
+ "standalone": true,
+ "changeDetection": "OnPush"
+ }
+ },
+ "root": "",
+ "sourceRoot": "src",
+ "prefix": "app",
+ "architect": {
+ "build": {
+ "builder": "@angular/build:application",
+ "options": {
+ "outputPath": "dist/angularexampleapp",
+ "index": "src/index.html",
+ "browser": "src/main.ts",
+ "polyfills": ["@angular/localize/init"],
+ "tsConfig": "tsconfig.app.json",
+ "i18nMissingTranslation": "warning",
+ "inlineStyleLanguage": "scss",
+ "assets": [
+ {
+ "glob": "**/*",
+ "input": "public",
+ "output": ""
+ }
+ ],
+ "styles": ["@shoelace-style/shoelace/dist/themes/light.css", "src/styles/global.scss"],
+ "stylePreprocessorOptions": {
+ "includePaths": ["src/styles"]
+ },
+ "outputMode": "static",
+ "server": "src/main.server.ts",
+ "ssr": false
+ },
+ "configurations": {
+ "production": {
+ "budgets": [
+ {
+ "type": "initial",
+ "maximumWarning": "500kB",
+ "maximumError": "1MB"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kB",
+ "maximumError": "4kB"
+ }
+ ],
+ "fileReplacements": [
+ {
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.production.ts"
+ }
+ ],
+ "outputHashing": "all",
+ "localize": ["es", "en"]
+ },
+ "production-sourcemaps": {
+ "sourceMap": true,
+ "outputHashing": "all"
+ },
+ "development-en": {
+ "optimization": false,
+ "extractLicenses": false,
+ "sourceMap": true
+ },
+ "development-es": {
+ "optimization": false,
+ "extractLicenses": false,
+ "sourceMap": true,
+ "localize": ["es"]
+ }
+ },
+ "defaultConfiguration": "production"
+ },
+ "serve": {
+ "builder": "@angular/build:dev-server",
+ "configurations": {
+ "production": {
+ "buildTarget": "angularexampleapp:build:production"
+ },
+ "development-en": {
+ "buildTarget": "angularexampleapp:build:development-en"
+ },
+ "development-es": {
+ "buildTarget": "angularexampleapp:build:development-es"
+ }
+ },
+ "defaultConfiguration": "development-en"
+ },
+ "extract-i18n": {
+ "builder": "ng-extract-i18n-merge:ng-extract-i18n-merge",
+ "options": {
+ "buildTarget": "angularexampleapp:build",
+ "format": "xlf",
+ "outputPath": "src/locale",
+ "targetFiles": ["messages.es.xlf"],
+ "prettyNestedTags": true,
+ "sort": "stableAppendNew"
+ }
+ },
+ "test": {
+ "builder": "@angular/build:unit-test",
+ "options": {
+ "tsConfig": "tsconfig.spec.json",
+ "buildTarget": "::development-es",
+ "runner": "vitest"
+ }
+ },
+ "lint": {
+ "builder": "@angular-eslint/builder:lint",
+ "options": {
+ "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
+ }
+ }
+ },
+ "i18n": {
+ "sourceLocale": {
+ "code": "en",
+ "subPath": ""
+ },
+ "locales": {
+ "es": {
+ "translation": "src/locale/messages.es.xlf",
+ "subPath": "es"
+ }
+ }
+ }
+ }
+ },
+ "cli": {
+ "analytics": "49e1320d-9031-4d19-bb7c-2d84a0f2fd49",
+ "schematicCollections": ["@angular-eslint/schematics"]
+ },
+ "schematics": {
+ "@schematics/angular:component": {
+ "type": "component"
+ },
+ "@schematics/angular:directive": {
+ "type": "directive"
+ },
+ "@schematics/angular:service": {
+ "type": "service"
+ },
+ "@schematics/angular:guard": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:interceptor": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:module": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:pipe": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:resolver": {
+ "typeSeparator": "."
+ }
+ }
+}
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100755
index 00000000..84dcb122
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['@commitlint/config-conventional'],
+};
diff --git a/e2e/fixtures/base.fixture.ts b/e2e/fixtures/base.fixture.ts
new file mode 100644
index 00000000..91e8f0bb
--- /dev/null
+++ b/e2e/fixtures/base.fixture.ts
@@ -0,0 +1,10 @@
+import type { Page } from '@playwright/test';
+import { test as base } from '@playwright/test';
+
+type AppFixtures = {
+ page: Page;
+};
+
+export const test = base.extend({});
+
+export { expect } from '@playwright/test';
diff --git a/e2e/heroes-list/heroes-list-page.e2e-spec.ts b/e2e/heroes-list/heroes-list-page.e2e-spec.ts
deleted file mode 100644
index 4225187d..00000000
--- a/e2e/heroes-list/heroes-list-page.e2e-spec.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import {HeroesListPage} from './heroes-list-page';
-
-describe('Home page', function () {
- let page;
-
- beforeEach(() => {
- page = new HeroesListPage();
- });
-
- it('should contains equal or more heroes than default ones', () => {
- HeroesListPage.navigateTo();
- expect(HeroesListPage.getNumberHeroes()).toBeGreaterThanOrEqual(8);
- });
-});
diff --git a/e2e/heroes-list/heroes-list-page.ts b/e2e/heroes-list/heroes-list-page.ts
deleted file mode 100644
index 4f1b8d03..00000000
--- a/e2e/heroes-list/heroes-list-page.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {browser, by, element} from 'protractor';
-import {AppConfig} from '../../src/app/config/app.config';
-
-export class HeroesListPage {
- static navigateTo(): any {
- return browser.get(AppConfig.routes.heroes);
- }
-
- static getNumberHeroes(): any {
- return element.all(by.css('#left mat-list-item')).count();
- }
-}
diff --git a/e2e/home/home-page.e2e-spec.ts b/e2e/home/home-page.e2e-spec.ts
deleted file mode 100644
index 8a61fc8b..00000000
--- a/e2e/home/home-page.e2e-spec.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import {AppConfig} from '../../src/app/config/app.config';
-import {HomePage} from './home-page';
-
-describe('Home page', function () {
- let page;
-
- beforeEach(() => {
- page = new HomePage();
- });
-
- it('should contains heroes limit', () => {
- HomePage.navigateTo();
- expect(HomePage.getNumberHeroes()).toBe(AppConfig.topHeroesLimit);
- });
-});
diff --git a/e2e/home/home-page.ts b/e2e/home/home-page.ts
deleted file mode 100644
index 76d9b7b9..00000000
--- a/e2e/home/home-page.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import {browser, by, element} from 'protractor';
-
-export class HomePage {
- static navigateTo(): any {
- return browser.get('/');
- }
-
- static getNumberHeroes(): any {
- return element.all(by.css('#heroes-list mat-card')).count();
- }
-}
diff --git a/e2e/pages/header.ps.ts b/e2e/pages/header.ps.ts
new file mode 100644
index 00000000..1c614344
--- /dev/null
+++ b/e2e/pages/header.ps.ts
@@ -0,0 +1,19 @@
+import type { Page } from '@playwright/test';
+import { expect } from '@playwright/test';
+import type { Locator } from 'playwright';
+
+export class HeaderComponent {
+ readonly signInLink: Locator;
+ readonly signUpLink: Locator;
+
+ // eslint-disable-next-line @typescript-eslint/parameter-properties
+ constructor(private readonly page: Page) {
+ this.signInLink = this.page.getByRole('link', { name: 'Log in' });
+ this.signUpLink = this.page.getByRole('link', { name: 'Register' });
+ }
+
+ async expectLinksVisible() {
+ await expect(this.signInLink).toBeVisible();
+ await expect(this.signUpLink).toBeVisible();
+ }
+}
diff --git a/e2e/pages/home.po.ts b/e2e/pages/home.po.ts
new file mode 100644
index 00000000..e3d34a49
--- /dev/null
+++ b/e2e/pages/home.po.ts
@@ -0,0 +1,33 @@
+import type { Page } from '@playwright/test';
+import { expect } from '@playwright/test';
+import type { Locator } from 'playwright';
+import { HeaderComponent } from './header.ps';
+
+export class HomePage {
+ readonly header: HeaderComponent;
+ private readonly title: Locator;
+
+ // eslint-disable-next-line @typescript-eslint/parameter-properties
+ constructor(private readonly page: Page) {
+ this.header = new HeaderComponent(page);
+ this.title = page.locator('h1');
+ }
+
+ async goto() {
+ await this.page.goto('/');
+ }
+
+ async expectLoaded() {
+ await expect(this.title).toContainText('Angular Example App');
+ }
+
+ async expectNavigationToLogin() {
+ await expect(this.page).toHaveURL(/auth\/log-in$/u);
+ await expect(this.page.locator('[data-testid="login-title"]')).toBeVisible();
+ }
+
+ async expectNavigationToRegister() {
+ await expect(this.page).toHaveURL(/auth\/register$/u);
+ await expect(this.page.locator('[data-testid="register-title"]')).toBeVisible();
+ }
+}
diff --git a/e2e/tests/home.spec.ts b/e2e/tests/home.spec.ts
new file mode 100644
index 00000000..0c162537
--- /dev/null
+++ b/e2e/tests/home.spec.ts
@@ -0,0 +1,26 @@
+import { test } from '../fixtures/base.fixture';
+import { HomePage } from '../pages/home.po';
+
+test.describe('Home page', () => {
+ let home: HomePage;
+
+ test.beforeEach(async ({ page }) => {
+ home = new HomePage(page);
+ await home.goto();
+ });
+
+ test('displays main title and navigation links', async () => {
+ await home.expectLoaded();
+ await home.header.expectLinksVisible();
+ });
+
+ test('navigates to the login page from the header', async () => {
+ await home.header.signInLink.click();
+ await home.expectNavigationToLogin();
+ });
+
+ test('navigates to the register page from the header', async () => {
+ await home.header.signUpLink.click();
+ await home.expectNavigationToRegister();
+ });
+});
diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json
deleted file mode 100644
index 1d9e5edf..00000000
--- a/e2e/tsconfig.e2e.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/e2e",
- "baseUrl": "./",
- "module": "commonjs",
- "target": "es5",
- "types": [
- "jasmine",
- "jasminewd2",
- "node"
- ]
- }
-}
diff --git a/e2e/utils/environment.ts b/e2e/utils/environment.ts
new file mode 100644
index 00000000..45703f52
--- /dev/null
+++ b/e2e/utils/environment.ts
@@ -0,0 +1 @@
+export const BASE_URL = process.env['BASE_URL'] ?? 'https://angular-example-app.netlify.app/';
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 00000000..f49f6bf5
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,164 @@
+import eslint from '@eslint/js';
+import tsEslint from 'typescript-eslint';
+import angular from 'angular-eslint';
+import eslintComments from 'eslint-plugin-eslint-comments';
+import typescriptEslint from '@typescript-eslint/eslint-plugin';
+import eslintConfigPrettier from 'eslint-config-prettier';
+import pluginPromise from 'eslint-plugin-promise';
+import eslintPluginUnicorn from 'eslint-plugin-unicorn';
+
+const APP_PREFIX = 'app';
+
+export default tsEslint.config(
+ {
+ files: ['**/*.ts'],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: 'script',
+ parserOptions: {
+ project: ['tsconfig.eslint.json'],
+ createDefaultProgram: false,
+ },
+ },
+ extends: [
+ eslint.configs.all,
+ ...tsEslint.configs.all,
+ ...angular.configs.tsAll,
+ eslintPluginUnicorn.configs['flat/all'],
+ pluginPromise.configs['flat/recommended'],
+ ],
+ plugins: {
+ typescriptEslint,
+ 'eslint-comments': eslintComments,
+ },
+ processor: angular.processInlineTemplates,
+ rules: {
+ complexity: [
+ 'error',
+ {
+ max: 5,
+ },
+ ],
+ 'max-len': [
+ 'error',
+ {
+ code: 300,
+ },
+ ],
+ 'max-lines-per-function': [
+ 'error',
+ {
+ max: 30,
+ },
+ ],
+ 'no-plusplus': ['error', { 'allowForLoopAfterthoughts': true }],
+ '@typescript-eslint/max-params': [
+ 'error',
+ {
+ max: 2,
+ },
+ ],
+ '@typescript-eslint/consistent-type-definitions': ['error', 'type'],
+ '@typescript-eslint/explicit-member-accessibility': [
+ 'error',
+ {
+ accessibility: 'no-public',
+ },
+ ],
+ '@angular-eslint/directive-selector': [
+ 'error',
+ {
+ type: 'attribute',
+ prefix: APP_PREFIX,
+ style: 'camelCase',
+ },
+ ],
+ '@angular-eslint/component-selector': [
+ 'error',
+ {
+ type: 'element',
+ prefix: APP_PREFIX,
+ style: 'kebab-case',
+ },
+ ],
+ 'promise/no-multiple-resolved': 'error',
+ 'promise/spec-only': 'error',
+ 'eslint-comments/no-use': [
+ 'error',
+ { 'allow': ['eslint-disable-next-line', 'eslint-disable', 'eslint-enable'] },
+ ],
+ 'no-warning-comments': ['error', { 'terms': ['warn'] }],
+ 'capitalized-comments': ['error', 'always', { 'ignoreConsecutiveComments': true }],
+
+ // Off
+ 'max-params': 'off',
+ 'sort-keys': 'off',
+ 'no-underscore-dangle': 'off',
+ 'sort-imports': 'off',
+ 'new-cap': 'off',
+ 'strict': 'off',
+ 'one-var': 'off',
+ 'no-undefined': 'off',
+ 'no-inline-comments': 'off',
+ 'no-void': 'off',
+ 'func-style': 'off',
+ 'no-duplicate-imports': 'off',
+ 'no-implicit-coercion': 'off',
+ 'no-ternary': 'off',
+ 'no-implicit-globals': 'off',
+ '@angular-eslint/no-experimental': 'off',
+ '@angular-eslint/no-developer-preview': 'off',
+ '@angular-eslint/prefer-standalone': 'off',
+ '@angular-eslint/prefer-standalone-component': 'off',
+ '@angular-eslint/runtime-localize': 'off',
+ '@angular-eslint/no-host-metadata-property': 'off',
+ '@typescript-eslint/no-unsafe-type-assertion': 'off',
+ '@typescript-eslint/switch-exhaustiveness-check': 'off',
+ '@typescript-eslint/no-use-before-define': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/prefer-readonly-parameter-types': 'off',
+ '@typescript-eslint/unbound-method': 'off',
+ '@typescript-eslint/no-unsafe-argument': 'off',
+ '@typescript-eslint/no-magic-numbers': 'off',
+ '@typescript-eslint/use-unknown-in-catch-callback-variable': 'off',
+ '@typescript-eslint/no-extraneous-class': 'off',
+ '@typescript-eslint/strict-boolean-expressions': 'off',
+ '@typescript-eslint/no-unsafe-assignment': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/no-unsafe-call': 'off',
+ '@typescript-eslint/no-unsafe-member-access': 'off',
+ '@typescript-eslint/init-declarations': 'off',
+ '@typescript-eslint/naming-convention': 'off',
+ '@typescript-eslint/member-ordering': 'off',
+ '@typescript-eslint/class-methods-use-this': 'off',
+ 'unicorn/prefer-top-level-await': 'off',
+ 'unicorn/no-null': 'off',
+ 'unicorn/prefer-global-this': 'off',
+ 'unicorn/consistent-function-scoping': 'off',
+ 'unicorn/prefer-dom-node-dataset': 'off',
+ },
+ },
+ {
+ files: ['**/*.spec.ts'],
+ rules: {
+ 'max-lines-per-function': 'off',
+ },
+ },
+ {
+ files: ['**/*.html'],
+ extends: [...angular.configs.templateAll],
+ rules: {
+ '@angular-eslint/template/no-call-expression': 'off',
+ '@angular-eslint/template/prefer-template-literal': 'off',
+ '@angular-eslint/template/i18n': [
+ 'error',
+ {
+ 'checkId': false,
+ 'checkAttributes': false,
+ },
+ ],
+ },
+ },
+ eslintConfigPrettier,
+);
diff --git a/karma.conf.js b/karma.conf.js
deleted file mode 100644
index 15f9a357..00000000
--- a/karma.conf.js
+++ /dev/null
@@ -1,50 +0,0 @@
-module.exports = function (config) {
- config.set({
- basePath: '',
- frameworks: ['jasmine', '@angular/cli'],
- plugins: [
- require('karma-jasmine'),
- require('karma-chrome-launcher'),
- require('karma-remap-istanbul'),
- require('@angular/cli/plugins/karma'),
- require('karma-jasmine-html-reporter'),
- require('karma-coverage-istanbul-reporter'),
- require('@angular/cli/plugins/karma')
- ],
- client: {
- clearContext: false
- },
- files: [
- {pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: true},
- {pattern: './src/test.ts', watched: false}
- ],
- preprocessors: {
- './src/test.ts': ['@angular/cli']
- },
- mime: {
- 'text/x-typescript': ['ts', 'tsx']
- },
- coverageIstanbulReporter: {
- reports: ['html', 'lcovonly'],
- fixWebpackSourcePaths: true
- },
- remapIstanbulReporter: {
- reports: {
- html: 'coverage',
- lcovonly: './coverage/coverage.lcov'
- }
- },
- angularCli: {
- environment: 'dev'
- },
- reporters: config.angularCli && config.angularCli.codeCoverage
- ? ['progress', 'coverage-istanbul']
- : ['progress', 'kjhtml'],
- port: 9876,
- colors: true,
- logLevel: config.LOG_INFO,
- autoWatch: true,
- browsers: ['Chrome'],
- singleRun: false
- });
-};
diff --git a/lighthouse.config.json b/lighthouse.config.json
new file mode 100644
index 00000000..446799e3
--- /dev/null
+++ b/lighthouse.config.json
@@ -0,0 +1,11 @@
+{
+ "distPath": "dist/angularexampleapp/browser",
+ "reportPath": "dist/lighthouse-report.html",
+ "port": 4200,
+ "thresholds": {
+ "performance": 73,
+ "accessibility": 95,
+ "best-practices": 100,
+ "seo": 92
+ }
+}
diff --git a/nginx/default.conf b/nginx/default.conf
deleted file mode 100644
index 307f969a..00000000
--- a/nginx/default.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-server {
- listen 80;
-
- sendfile on;
-
- default_type application/octet-stream;
-
- gzip on;
- gzip_http_version 1.1;
- gzip_disable "MSIE [1-6]\.";
- gzip_min_length 256;
- gzip_vary on;
- gzip_proxied expired no-cache no-store private auth;
- gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
- gzip_comp_level 9;
-
- root /usr/share/nginx/html;
-
- location / {
- try_files $uri $uri/ /index.html =404;
- }
-}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 22164a2b..e7b5cac0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11770 +1,18144 @@
{
- "name": "angular-example-app",
- "version": "5.1.0",
- "lockfileVersion": 1,
+ "name": "angularexampleapp",
+ "version": "19.1.0",
+ "lockfileVersion": 3,
"requires": true,
- "dependencies": {
- "@angular-devkit/build-optimizer": {
- "version": "0.0.35",
- "resolved": "http://npm.trustu.pre/@angular-devkit/build-optimizer/-/build-optimizer-0.0.35/3aadad1d7e9ffc7dcd106fda8a5670465936562c.tgz",
- "integrity": "sha512-7JxZZAYFSCc0tP6+NrRn3b2Cd1b9d+a3+OfwVNyNsNd2unelqUMko2hm0KLbC8BXcXt/OILg1E/ZgLAXSS47nw==",
- "dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "source-map": "0.5.7",
- "typescript": "2.6.2",
- "webpack-sources": "1.1.0"
+ "packages": {
+ "": {
+ "name": "angularexampleapp",
+ "version": "19.1.0",
+ "dependencies": {
+ "@angular/animations": "20.3.7",
+ "@angular/common": "20.3.7",
+ "@angular/compiler": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/forms": "20.3.7",
+ "@angular/localize": "20.3.7",
+ "@angular/platform-browser": "20.3.7",
+ "@angular/platform-browser-dynamic": "20.3.7",
+ "@angular/platform-server": "20.3.7",
+ "@angular/router": "20.3.7",
+ "@angular/ssr": "20.3.7",
+ "ngx-progressbar": "14.0.0",
+ "rxjs": "7.8.2",
+ "tslib": "2.8.1"
},
+ "devDependencies": {
+ "@angular-eslint/builder": "20.5.0",
+ "@angular-eslint/eslint-plugin": "20.5.0",
+ "@angular-eslint/eslint-plugin-template": "20.5.0",
+ "@angular-eslint/schematics": "20.5.0",
+ "@angular-eslint/template-parser": "20.5.0",
+ "@angular/build": "20.3.7",
+ "@angular/cli": "20.3.7",
+ "@angular/compiler-cli": "20.3.7",
+ "@commitlint/cli": "20.1.0",
+ "@commitlint/config-conventional": "20.0.0",
+ "@eslint/js": "9.38.0",
+ "@ngrx/component": "20.1.0",
+ "@playwright/test": "1.56.1",
+ "@shoelace-style/shoelace": "2.20.1",
+ "@types/express": "4.17.17",
+ "@types/node": "24.9.2",
+ "@types/validator": "13.15.4",
+ "@typescript-eslint/eslint-plugin": "8.46.2",
+ "@typescript-eslint/parser": "8.46.2",
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/utils": "8.46.2",
+ "@vitest/coverage-v8": "4.0.4",
+ "angular-eslint": "20.5.0",
+ "axe-core": "4.11.0",
+ "chrome-launcher": "^1.2.1",
+ "eslint": "9.38.0",
+ "eslint-config-prettier": "10.1.8",
+ "eslint-plugin-eslint-comments": "3.2.0",
+ "eslint-plugin-prettier": "5.5.4",
+ "eslint-plugin-promise": "7.2.1",
+ "eslint-plugin-unicorn": "62.0.0",
+ "husky": "9.1.7",
+ "jsdom": "27.0.1",
+ "lighthouse": "^12.8.2",
+ "lint-staged": "16.2.6",
+ "ng-extract-i18n-merge": "3.1.0",
+ "playwright": "1.56.1",
+ "postcss-scss": "4.0.9",
+ "prettier": "3.6.2",
+ "prettier-eslint": "16.4.2",
+ "serve": "^14.2.5",
+ "stylelint": "16.25.0",
+ "stylelint-config-recess-order": "7.4.0",
+ "stylelint-config-standard-scss": "16.0.0",
+ "stylelint-order": "7.0.0",
+ "ts-loader": "9.5.4",
+ "typescript": "5.9.3",
+ "typescript-eslint": "8.46.2",
+ "vitest": "4.0.4"
+ }
+ },
+ "node_modules/@algolia/abtesting": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.1.0.tgz",
+ "integrity": "sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "typescript": {
- "version": "2.6.2",
- "resolved": "http://npm.trustu.pre/typescript/-/typescript-2.6.2/3c5b6fd7f6de0914269027f03c0946758f7673a4.tgz",
- "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=",
- "dev": true
- }
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular-devkit/core": {
- "version": "0.0.22",
- "resolved": "http://npm.trustu.pre/@angular-devkit/core/-/core-0.0.22/e90f46bf7ff47d260a767959267bc65ffee39ef1.tgz",
- "integrity": "sha512-zxrNtTiv60liye/GGeRMnnGgLgAWoqlMTfPLMW0D1qJ4bbrPHtme010mpxS3QL4edcDtQseyXSFCnEkuo2MrRw==",
+ "node_modules/@algolia/client-abtesting": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.35.0.tgz",
+ "integrity": "sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==",
"dev": true,
- "requires": {
- "source-map": "0.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular-devkit/schematics": {
- "version": "0.0.41",
- "resolved": "http://npm.trustu.pre/@angular-devkit/schematics/-/schematics-0.0.41/9a066e442bdf10de4a093d6dd33a58e600d1b101.tgz",
- "integrity": "sha512-eSXyRLM7g9NvNUwDd71iPjHEL0Zutg9PcLUSCrwFXR3Z8S6iStO2FpZACNmz5/Y7ksWLy5/1wjLuDJCHS4X/ig==",
+ "node_modules/@algolia/client-analytics": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.35.0.tgz",
+ "integrity": "sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==",
"dev": true,
- "requires": {
- "@angular-devkit/core": "0.0.22",
- "@ngtools/json-schema": "1.1.0",
- "@schematics/schematics": "0.0.10",
- "minimist": "1.2.0",
- "rxjs": "5.5.5"
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/animations": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/animations/-/animations-5.1.0/439135ed56355ec779791bf3ea7de1c711cd2185.tgz",
- "integrity": "sha512-s0tV6y2D16CQAcXjv8CN8AahHb+LoWm9KAUkxvSJ18ZZQweuAY4T8jlRB95ODRFFKfjwyRD9HqXKUC5yHmG9ww==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/client-common": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.35.0.tgz",
+ "integrity": "sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/cdk": {
- "version": "5.0.0",
- "resolved": "http://npm.trustu.pre/@angular/cdk/-/cdk-5.0.0/d7cb3294c9e3cc37d3d41c33e6beb044e84636c3.tgz",
- "integrity": "sha512-+u67Bns23tuCUGUCWhqkR/+onCwB4ObRURUv7ar2+BHw5VIvzML+IOCi1BJRF7gqvL+IVYQpLuY2cQh0J2SbBQ==",
+ "node_modules/@algolia/client-insights": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.35.0.tgz",
+ "integrity": "sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==",
"dev": true,
- "requires": {
- "tslib": "1.8.1"
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/cli": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/@angular/cli/-/cli-1.6.0/eba521f6a8e4c2db628300baddbc4da13ca96998.tgz",
- "integrity": "sha512-X049QAgSKy5J48byyo3T6iBTHubTC66QBMshMpTT7PWAaSq3HpPPE1xW0WwgFIXZWMQIsmncaqPwmnFmxljUdw==",
- "dev": true,
- "requires": {
- "@angular-devkit/build-optimizer": "0.0.35",
- "@angular-devkit/schematics": "0.0.41",
- "@ngtools/json-schema": "1.1.0",
- "@ngtools/webpack": "1.9.0",
- "@schematics/angular": "0.1.10",
- "autoprefixer": "6.7.7",
- "chalk": "2.2.2",
- "circular-dependency-plugin": "4.3.0",
- "common-tags": "1.5.1",
- "copy-webpack-plugin": "4.2.3",
- "core-object": "3.1.5",
- "css-loader": "0.28.7",
- "cssnano": "3.10.0",
- "denodeify": "1.2.1",
- "ember-cli-string-utils": "1.1.0",
- "exports-loader": "0.6.4",
- "extract-text-webpack-plugin": "3.0.2",
- "file-loader": "1.1.5",
- "fs-extra": "4.0.3",
- "glob": "7.1.2",
- "html-webpack-plugin": "2.30.1",
- "istanbul-instrumenter-loader": "2.0.0",
- "karma-source-map-support": "1.2.0",
- "less": "2.7.3",
- "less-loader": "4.0.5",
- "license-webpack-plugin": "1.1.1",
- "lodash": "4.17.4",
- "memory-fs": "0.4.1",
- "minimatch": "3.0.4",
- "node-modules-path": "1.0.1",
- "node-sass": "4.7.2",
- "nopt": "4.0.1",
- "opn": "5.1.0",
- "portfinder": "1.0.13",
- "postcss-custom-properties": "6.2.0",
- "postcss-loader": "2.0.9",
- "postcss-url": "7.3.0",
- "raw-loader": "0.5.1",
- "resolve": "1.5.0",
- "rxjs": "5.5.5",
- "sass-loader": "6.0.6",
- "semver": "5.4.1",
- "silent-error": "1.1.0",
- "source-map-loader": "0.2.3",
- "source-map-support": "0.4.18",
- "style-loader": "0.13.2",
- "stylus": "0.54.5",
- "stylus-loader": "3.0.1",
- "uglifyjs-webpack-plugin": "1.1.2",
- "url-loader": "0.6.2",
- "webpack": "3.10.0",
- "webpack-concat-plugin": "1.4.2",
- "webpack-dev-middleware": "1.12.2",
- "webpack-dev-server": "2.9.7",
- "webpack-merge": "4.1.1",
- "webpack-sources": "1.1.0",
- "webpack-subresource-integrity": "1.0.3",
- "zone.js": "0.8.18"
- }
- },
- "@angular/common": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/common/-/common-5.1.0/88b586e0aff6a93b8de08cce1e14c0e65fde5a56.tgz",
- "integrity": "sha512-J6E0OfTJJGcyoKU51ZucsDFV40YEAPgP6VCIPYECgOFHxrqg6O1ZFZSD1fdviMXMLVEFCi6Fy6IB7GJyiWgDIA==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/client-personalization": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.35.0.tgz",
+ "integrity": "sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/compiler": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/compiler/-/compiler-5.1.0/23fe2914061487fcc909616b4dc5c24c5a8d47a1.tgz",
- "integrity": "sha512-iyFQqmhKNRSc9JRx7ty6z/wCsypjpbRu0QR6q2LMa6imuCt9qLHOvTajBQExRB8guqd/LTVDG4WiYY1lf8iO2w==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/client-query-suggestions": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.35.0.tgz",
+ "integrity": "sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/compiler-cli": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/compiler-cli/-/compiler-cli-5.1.0/9512abf2515c7d3b7e9ee45650801ee78d63223e.tgz",
- "integrity": "sha512-M1//TjgcckkwTMeGTRe7mvFY+00NxaLqlsObnGA9+R3T9cpWeLpy5iVD444Wdxl5MA/Bo3TgGNmeXZsJvh466w==",
+ "node_modules/@algolia/client-search": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.35.0.tgz",
+ "integrity": "sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==",
"dev": true,
- "requires": {
- "chokidar": "1.7.0",
- "minimist": "1.2.0",
- "reflect-metadata": "0.1.10",
- "tsickle": "0.25.5"
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/core": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/core/-/core-5.1.0/6f7596ad780418cecac527ae0508cfc1a36383a0.tgz",
- "integrity": "sha512-duObjve+INoz4wWuqcaJzl1isUyI37RtRblTFXgZBp2n2n0nXJq1CubcfgxQhMMR2d64xWLKg9+d34PvnzaMmg==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/ingestion": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.35.0.tgz",
+ "integrity": "sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/flex-layout": {
- "version": "2.0.0-beta.10-4905443",
- "resolved": "http://npm.trustu.pre/@angular/flex-layout/-/flex-layout-2.0.0-beta.10-4905443/c62915c8f9a379d1da4800c12e3751e32cc7f855.tgz",
- "integrity": "sha512-jjr6mQ3X2vdEQbsyHD/mz1hfTBUUEOZVLFWEz/sbNoeU7uiA4lvqdp/ASrkZydGJHmTDUYrbBE/9kx0lherZ8Q==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/monitoring": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.35.0.tgz",
+ "integrity": "sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/forms": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/forms/-/forms-5.1.0/8699c7117a348607d4c7a1deee9caa5ca460c2cb.tgz",
- "integrity": "sha512-2sJqtMht/6vbFg6HwFs0MX4pRhgLt7h2pa6oTH4oBoQ2UF67jCuq4cMljDm9SVxrGw0Q83+/eBk3ER4QnKk48Q==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/recommend": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.35.0.tgz",
+ "integrity": "sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/http": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/http/-/http-5.1.0/59d47c1878896f25e64b9abc700017cff7836710.tgz",
- "integrity": "sha512-ltSs52OYnWZJEnbxtHoN5LQiH/37F3GxN6iL0TsQdSlw8HzrdcdbmebKlCpfXwhgcgZC48KWbKSaOs5/xVurfQ==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.35.0.tgz",
+ "integrity": "sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/material": {
- "version": "5.0.0",
- "resolved": "http://npm.trustu.pre/@angular/material/-/material-5.0.0/2ae8610f36cd6aa5bfe58155ffd96bf44d965162.tgz",
- "integrity": "sha512-rzF061r4aYgaf2WI12Jk0+Rd4c1VBObdeMDFWRa3XKIcvETtkz+DXFH1n+vIC4YabfPgrdJRPrzdrZ7fKhRz6g==",
+ "node_modules/@algolia/requester-fetch": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.35.0.tgz",
+ "integrity": "sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==",
"dev": true,
- "requires": {
- "tslib": "1.8.1"
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/platform-browser": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/platform-browser/-/platform-browser-5.1.0/b5373232403d73c355b971cfae8b03191c4f58a2.tgz",
- "integrity": "sha512-8aeppeASwQv4Fj3B8KBiFHQrKPrwA328AEhlH/HnggCvt0CFffIs2PSqzJBwnOfFWvhFZk020W51B8jrHLQyoQ==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@algolia/requester-node-http": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.35.0.tgz",
+ "integrity": "sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
}
},
- "@angular/platform-browser-dynamic": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.1.0/60566728dd949c442e064bf8247aa51672411f2b.tgz",
- "integrity": "sha512-f6Iv4NCYQwBkNeyInZzja8pg0nfUOrxx5H5rEvr0J1bwag2eDofGVPOftha7LDOLVALVOQQiXQBePATMNLB85g==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "@angular/platform-server": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/platform-server/-/platform-server-5.1.0/c28c0e05ce423ec99f299478496dd5066e1b41b6.tgz",
- "integrity": "sha512-A81lS8nXEPoR7lRc0n1Up3AKWLcV6t504wnUbgZiwvAUZ2G/LFMnestR1hyOA3jxOFzZ9IhqHQ+fQyqhACMdpA==",
+ "node_modules/@angular-devkit/architect": {
+ "version": "0.2003.7",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.7.tgz",
+ "integrity": "sha512-NGHLfrNQNjwWwvyQomMM1AqRaqH3UU0TwySJh9XlSc9dC/roB5zD2NjLf98K4LfAIfHvDBwkQ+dMo3F556/Xuw==",
"dev": true,
- "requires": {
- "domino": "1.0.30",
- "tslib": "1.8.1",
- "xhr2": "0.1.4"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "20.3.7",
+ "rxjs": "7.8.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
}
},
- "@angular/router": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/@angular/router/-/router-5.1.0/4e7283e34cd3d244899b289d835b830640c7bad9.tgz",
- "integrity": "sha512-CtOwqeo1IUk4kUs+tUggkYFmuu2fPTZ1G/GP7YK6gd3Jr9OtkMFB7wkmnd5YcaYo3wVeYkJWZdJQAvj6OakMww==",
- "requires": {
- "tslib": "1.8.1"
+ "node_modules/@angular-devkit/core": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.7.tgz",
+ "integrity": "sha512-psmcjwYcXve4sLrcdnARc15/Wfd3RpydbtLo9+mViNzk5HQ6L2eEztKl/2QVYMgzZVIa1GfhjwUllVCyLAv3sg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.17.1",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.3",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.6"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
}
},
- "@ngtools/json-schema": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/@ngtools/json-schema/-/json-schema-1.1.0/c3a0c544d62392acc2813a42c8a0dc6f58f86922.tgz",
- "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=",
- "dev": true
- },
- "@ngtools/webpack": {
- "version": "1.9.0",
- "resolved": "http://npm.trustu.pre/@ngtools/webpack/-/webpack-1.9.0/ef395c45be2de9beb93a2b9f5f171d28c344eb10.tgz",
- "integrity": "sha512-+9EFOELj9D7zarsKTiIFSbTL2Pr3jYdRJ/cEuSoTxzZUDq7f3urq9ILbcy3DTaDlZs2CCYKwgz+In8QnDtw4fg==",
+ "node_modules/@angular-devkit/core/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
- "requires": {
- "chalk": "2.2.2",
- "enhanced-resolve": "3.4.1",
- "loader-utils": "1.1.0",
- "magic-string": "0.22.4",
- "semver": "5.4.1",
- "source-map": "0.5.7",
- "tree-kill": "1.2.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "@ngx-translate/core": {
- "version": "9.0.1",
- "resolved": "http://npm.trustu.pre/@ngx-translate/core/-/core-9.0.1/000f2d863c4c94c818e1416ef43cca2c5c0c5848.tgz",
- "integrity": "sha1-AA8thjxMlMgY4UFu9DzKLFwMWEg=",
- "dev": true
- },
- "@ngx-translate/http-loader": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/@ngx-translate/http-loader/-/http-loader-2.0.0/9c16d07cd070c67ada270a2e940281eb826b3f43.tgz",
- "integrity": "sha1-nBbQfNBwxnraJwoulAKB64JrP0M=",
- "dev": true
- },
- "@schematics/angular": {
- "version": "0.1.10",
- "resolved": "http://npm.trustu.pre/@schematics/angular/-/angular-0.1.10/654d867992277484ed2d82d015b2d3b6ff87b93d.tgz",
- "integrity": "sha512-ykq4FL0WTygkpvIcGDxnxHHT2uvJMWseDeAujmfyZpzdT9X22GOTURNo3LjvOIhhVUpMVZvnAYqjV46KqB702g==",
+ "node_modules/@angular-devkit/core/node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
"dev": true,
- "requires": {
- "@angular-devkit/core": "0.0.22"
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 12"
}
},
- "@schematics/schematics": {
- "version": "0.0.10",
- "resolved": "http://npm.trustu.pre/@schematics/schematics/-/schematics-0.0.10/b27b49a1a5482dc6c1c93fb3c20371c95874938b.tgz",
- "integrity": "sha512-9vr9W1X6oRp42pbiGRIk3L+T6SoFtHlAGrzbh6rbFQDNXT4UCHarqDigow+DEL6PR2ptXZO9WeLcad4it7zNyA==",
- "dev": true
- },
- "@types/jasmine": {
- "version": "2.8.2",
- "resolved": "http://npm.trustu.pre/@types/jasmine/-/jasmine-2.8.2/6ae4d8740c0da5d5a627df725b4eed71b8e36668.tgz",
- "integrity": "sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug==",
- "dev": true
- },
- "@types/jasminewd2": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/@types/jasminewd2/-/jasminewd2-2.0.3/0d2886b0cbdae4c0eeba55e30792f584bf040a95.tgz",
- "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==",
+ "node_modules/@angular-devkit/schematics": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.7.tgz",
+ "integrity": "sha512-DUxcQBPKO69p56ZgIdVfxWyLiSjdcUoD6BH9/nWHp0QiqRAR6GcXP4SFax76JPl2WsiCp4hHZ233Hf69AP1xew==",
"dev": true,
- "requires": {
- "@types/jasmine": "2.8.2"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "20.3.7",
+ "jsonc-parser": "3.3.1",
+ "magic-string": "0.30.17",
+ "ora": "8.2.0",
+ "rxjs": "7.8.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
}
},
- "@types/node": {
- "version": "8.0.56",
- "resolved": "http://npm.trustu.pre/@types/node/-/node-8.0.56/c4652f88d7a677e26ccc16c1485c282ce28f1ce9.tgz",
- "integrity": "sha512-JAlQv3hUWbrnruuTiLDf1scd4F/TBT0LgGEe+BBeF3p/Rc3yL6RV57WJN2nK5i+BshEz1sDllwH0Fzbuo7G4QA==",
- "dev": true
- },
- "@types/q": {
- "version": "0.0.32",
- "resolved": "http://npm.trustu.pre/@types/q/-/q-0.0.32/bd284e57c84f1325da702babfc82a5328190c0c5.tgz",
- "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
- "dev": true
- },
- "@types/selenium-webdriver": {
- "version": "2.53.43",
- "resolved": "http://npm.trustu.pre/@types/selenium-webdriver/-/selenium-webdriver-2.53.43/2de3d718819bc20165754c4a59afb7e9833f6707.tgz",
- "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==",
- "dev": true
- },
- "JSONStream": {
- "version": "1.3.1",
- "resolved": "http://npm.trustu.pre/JSONStream/-/JSONStream-1.3.1/707f761e01dae9e16f1bcf93703b78c70966579a.tgz",
- "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
+ "node_modules/@angular-eslint/builder": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-20.5.0.tgz",
+ "integrity": "sha512-ycrvgomFgitSwzDndo+i3Ob1iu9lAJeuZZ8cwBR4E/RYsCxNm02NLCv5qjQ3ya57yjkh12N6yvjzWnCO9Vdiuw==",
"dev": true,
- "requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/architect": ">= 0.2000.0 < 0.2100.0",
+ "@angular-devkit/core": ">= 20.0.0 < 21.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*"
}
},
- "abbrev": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/abbrev/-/abbrev-1.1.1/f8f2c887ad10bf67f634f005b6987fed3179aac8.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
+ "node_modules/@angular-eslint/bundled-angular-compiler": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-20.5.0.tgz",
+ "integrity": "sha512-XjvSZk+G/4rRUOLHHjlHBeS4OnnsLV9G1YtE5OerBB2H4x6nKgUEzpptad3uuL4iYWI9rGaWMLqGPTvyYqw/IA==",
+ "dev": true,
+ "license": "MIT"
},
- "accepts": {
- "version": "1.3.4",
- "resolved": "http://npm.trustu.pre/accepts/-/accepts-1.3.4/86246758c7dd6d21a6474ff084a4740ec05eb21f.tgz",
- "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "node_modules/@angular-eslint/eslint-plugin": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-20.5.0.tgz",
+ "integrity": "sha512-xpBrx4qCq0mzQ1lmqHa06faxHuKvBZGYb5owP/vTQBr2kZvQ502ENp5vwv+NS04TRKcWht1zHbMfy9rKRdhL5w==",
"dev": true,
- "requires": {
- "mime-types": "2.1.17",
- "negotiator": "0.6.1"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-eslint/bundled-angular-compiler": "20.5.0",
+ "@angular-eslint/utils": "20.5.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/utils": "^7.11.0 || ^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*"
}
},
- "acorn": {
- "version": "5.2.1",
- "resolved": "http://npm.trustu.pre/acorn/-/acorn-5.2.1/317ac7821826c22c702d66189ab8359675f135d7.tgz",
- "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
- "dev": true
- },
- "acorn-dynamic-import": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2/c752bd210bef679501b6c6cb7fc84f8f47158cc4.tgz",
- "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+ "node_modules/@angular-eslint/eslint-plugin-template": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-20.5.0.tgz",
+ "integrity": "sha512-sX3TgTTGusYv4CjnEWWNvSyVCPmf2WF2LT5NpcKF+4BLcIVLXHdTXKz9H+OxIHeHk9R7QSRkuop/F7DAKyEPhA==",
"dev": true,
- "requires": {
- "acorn": "4.0.13"
- },
+ "license": "MIT",
"dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "http://npm.trustu.pre/acorn/-/acorn-4.0.13/105495ae5361d697bd195c825192e1ad7f253787.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- }
+ "@angular-eslint/bundled-angular-compiler": "20.5.0",
+ "@angular-eslint/utils": "20.5.0",
+ "aria-query": "5.3.2",
+ "axobject-query": "4.1.0"
+ },
+ "peerDependencies": {
+ "@angular-eslint/template-parser": "20.5.0",
+ "@typescript-eslint/types": "^7.11.0 || ^8.0.0",
+ "@typescript-eslint/utils": "^7.11.0 || ^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*"
}
},
- "adm-zip": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/adm-zip/-/adm-zip-0.4.4/a61ed5ae6905c3aea58b3a657d25033091052736.tgz",
- "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=",
- "dev": true
- },
- "after": {
- "version": "0.8.2",
- "resolved": "http://npm.trustu.pre/after/-/after-0.8.2/fedb394f9f0e02aa9768e702bda23b505fae7e1f.tgz",
- "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
- "dev": true
- },
- "agent-base": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/agent-base/-/agent-base-2.1.1/d6de10d5af6132d5bd692427d46fc538539094c7.tgz",
- "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+ "node_modules/@angular-eslint/eslint-plugin/node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
"dev": true,
- "requires": {
- "extend": "3.0.1",
- "semver": "5.0.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
},
- "dependencies": {
- "semver": {
- "version": "5.0.3",
- "resolved": "http://npm.trustu.pre/semver/-/semver-5.0.3/77466de589cd5d3c95f138aa78bc569a3cb5d27a.tgz",
- "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
- "dev": true
- }
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
}
},
- "ajv": {
- "version": "5.5.1",
- "resolved": "http://npm.trustu.pre/ajv/-/ajv-5.5.1/b38bb8876d9e86bee994956a04e721e88b248eb2.tgz",
- "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=",
+ "node_modules/@angular-eslint/schematics": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-20.5.0.tgz",
+ "integrity": "sha512-pYGxMKocgUzKIMOOYBcGjvtxRcvnOY5ETs64IFcdHnwKoFfWeQV0a77sJdDj1YGOu/mj4PeORTRHfQyLvbhvyQ==",
"dev": true,
- "requires": {
- "co": "4.6.0",
- "fast-deep-equal": "1.0.0",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": ">= 20.0.0 < 21.0.0",
+ "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0",
+ "@angular-eslint/eslint-plugin": "20.5.0",
+ "@angular-eslint/eslint-plugin-template": "20.5.0",
+ "ignore": "7.0.5",
+ "semver": "7.7.3",
+ "strip-json-comments": "3.1.1"
}
},
- "ajv-keywords": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/ajv-keywords/-/ajv-keywords-2.1.1/617997fc5f60576894c435f940d819e135b80762.tgz",
- "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
- "dev": true
- },
- "align-text": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/align-text/-/align-text-0.1.4/0cd90a561093f35d0a99256c22b7069433fad117.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "node_modules/@angular-eslint/template-parser": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-20.5.0.tgz",
+ "integrity": "sha512-dWaz2Knjy6yJI5/xVYqp5iu65b725wveMwt1DgJ9EDTZ5gpJcTsvSCW4zQr/6iXfpAZHKPh9LJvVW1svowhtWw==",
"dev": true,
- "requires": {
- "kind-of": "3.2.2",
- "longest": "1.0.1",
- "repeat-string": "1.6.1"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-eslint/bundled-angular-compiler": "20.5.0",
+ "eslint-scope": "^8.0.2"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*"
}
},
- "alphanum-sort": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/alphanum-sort/-/alphanum-sort-1.0.2/97a1119649b211ad33691d9f9f486a8ec9fbe0a3.tgz",
- "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
- "dev": true
+ "node_modules/@angular-eslint/utils": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-20.5.0.tgz",
+ "integrity": "sha512-eP8al/UKP9FpmwK3hVWkYUjBuq4BnUDrcboS51L9mRZsoOblkPt1/UgU6MJqW8sh6sfebP9N3RxLQOAFrM3juQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-eslint/bundled-angular-compiler": "20.5.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/utils": "^7.11.0 || ^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*"
+ }
},
- "amdefine": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/amdefine/-/amdefine-1.0.1/4a5282ac164729e93619bcfd3ad151f817ce91f5.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
+ "node_modules/@angular/animations": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.7.tgz",
+ "integrity": "sha512-i655RaL0zmLE3OESUlDnRNBDRIMW/67nTQvMqP6V1cQ42l2+SMJtREsxmX6cWt55/qvvgeytAA6aBN4aerBl5A==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "20.3.7"
+ }
},
- "angular-cli-ghpages": {
- "version": "0.5.2",
- "resolved": "http://npm.trustu.pre/angular-cli-ghpages/-/angular-cli-ghpages-0.5.2/9551c5022c6982d0e4c5c7c97a21cd29d728b14d.tgz",
- "integrity": "sha512-C+eCfJQv9p56FEU1X9Ewcm+2WGO1e7CfdFZKj8u3+g7LNX6PU4qNqcTyI8Va4uI96gGqmwSEM+rf+VSNfdd2Qg==",
- "dev": true,
- "requires": {
- "commander": "2.9.0",
- "denodeify": "1.2.1",
- "fs-extra": "3.0.1",
- "gh-pages": "0.12.0"
- },
- "dependencies": {
- "commander": {
- "version": "2.9.0",
- "resolved": "http://npm.trustu.pre/commander/-/commander-2.9.0/9c99094176e12240cb22d6c5146098400fe0f7d4.tgz",
- "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
- "dev": true,
- "requires": {
- "graceful-readlink": "1.0.1"
- }
+ "node_modules/@angular/build": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.7.tgz",
+ "integrity": "sha512-NHN5JNDqUc0Ux4IZPCe/fpFAnuRHujkxVfRHSqDFW5+jtj2JuW1XO6qlX+kDheFRlj/NvFgTpidKsE9IjpfMWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "2.3.0",
+ "@angular-devkit/architect": "0.2003.7",
+ "@babel/core": "7.28.3",
+ "@babel/helper-annotate-as-pure": "7.27.3",
+ "@babel/helper-split-export-declaration": "7.24.7",
+ "@inquirer/confirm": "5.1.14",
+ "@vitejs/plugin-basic-ssl": "2.1.0",
+ "beasties": "0.3.5",
+ "browserslist": "^4.23.0",
+ "esbuild": "0.25.9",
+ "https-proxy-agent": "7.0.6",
+ "istanbul-lib-instrument": "6.0.3",
+ "jsonc-parser": "3.3.1",
+ "listr2": "9.0.1",
+ "magic-string": "0.30.17",
+ "mrmime": "2.0.1",
+ "parse5-html-rewriting-stream": "8.0.0",
+ "picomatch": "4.0.3",
+ "piscina": "5.1.3",
+ "rollup": "4.52.3",
+ "sass": "1.90.0",
+ "semver": "7.7.2",
+ "source-map-support": "0.5.21",
+ "tinyglobby": "0.2.14",
+ "vite": "7.1.11",
+ "watchpack": "2.4.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "optionalDependencies": {
+ "lmdb": "3.4.2"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "^20.0.0",
+ "@angular/compiler-cli": "^20.0.0",
+ "@angular/core": "^20.0.0",
+ "@angular/localize": "^20.0.0",
+ "@angular/platform-browser": "^20.0.0",
+ "@angular/platform-server": "^20.0.0",
+ "@angular/service-worker": "^20.0.0",
+ "@angular/ssr": "^20.3.7",
+ "karma": "^6.4.0",
+ "less": "^4.2.0",
+ "ng-packagr": "^20.0.0",
+ "postcss": "^8.4.0",
+ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
+ "tslib": "^2.3.0",
+ "typescript": ">=5.8 <6.0",
+ "vitest": "^3.1.1"
+ },
+ "peerDependenciesMeta": {
+ "@angular/core": {
+ "optional": true
+ },
+ "@angular/localize": {
+ "optional": true
+ },
+ "@angular/platform-browser": {
+ "optional": true
+ },
+ "@angular/platform-server": {
+ "optional": true
+ },
+ "@angular/service-worker": {
+ "optional": true
+ },
+ "@angular/ssr": {
+ "optional": true
+ },
+ "karma": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "ng-packagr": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
},
- "fs-extra": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/fs-extra/-/fs-extra-3.0.1/3794f378c58b342ea7dbbb23095109c4b3b62291.tgz",
- "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "3.0.1",
- "universalify": "0.1.1"
- }
+ "tailwindcss": {
+ "optional": true
},
- "jsonfile": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/jsonfile/-/jsonfile-3.0.1/a5ecc6f65f53f662c4415c7675a0331d0992ec66.tgz",
- "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
+ "vitest": {
+ "optional": true
}
}
},
- "ansi-html": {
- "version": "0.0.7",
- "resolved": "http://npm.trustu.pre/ansi-html/-/ansi-html-0.0.7/813584021962a9e9e6fd039f940d12f56ca7859e.tgz",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
- "dev": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/ansi-regex/-/ansi-regex-2.1.1/c3b33ab5ee360d86e0e628f0468ae7ef27d654df.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-3.2.0/c159b8d5be0f9e5a6f346dab94f16ce022161b88.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "node_modules/@angular/build/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
- "requires": {
- "color-convert": "1.9.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "anymatch": {
- "version": "1.3.2",
- "resolved": "http://npm.trustu.pre/anymatch/-/anymatch-1.3.2/553dcb8f91e3c889845dfdba34c77721b90b9d7a.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "node_modules/@angular/build/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
- "requires": {
- "micromatch": "2.3.11",
- "normalize-path": "2.1.1"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "app-root-path": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/app-root-path/-/app-root-path-2.0.1/cd62dcf8e4fd5a417efc664d2e5b10653c651b46.tgz",
- "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=",
- "dev": true
- },
- "append-transform": {
- "version": "0.4.0",
- "resolved": "http://npm.trustu.pre/append-transform/-/append-transform-0.4.0/d76ebf8ca94d276e247a36bad44a4b74ab611991.tgz",
- "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
+ "node_modules/@angular/cli": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.7.tgz",
+ "integrity": "sha512-hNurF7g/e9cDHFBRCKLPSmQJs0n28jZsC3sTl/XuWE8PYtv5egh2EuqrxdruYB5GdANpIqSQNgDGQJrKrk/XnQ==",
"dev": true,
- "requires": {
- "default-require-extensions": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/architect": "0.2003.7",
+ "@angular-devkit/core": "20.3.7",
+ "@angular-devkit/schematics": "20.3.7",
+ "@inquirer/prompts": "7.8.2",
+ "@listr2/prompt-adapter-inquirer": "3.0.1",
+ "@modelcontextprotocol/sdk": "1.17.3",
+ "@schematics/angular": "20.3.7",
+ "@yarnpkg/lockfile": "1.1.0",
+ "algoliasearch": "5.35.0",
+ "ini": "5.0.0",
+ "jsonc-parser": "3.3.1",
+ "listr2": "9.0.1",
+ "npm-package-arg": "13.0.0",
+ "pacote": "21.0.0",
+ "resolve": "1.22.10",
+ "semver": "7.7.2",
+ "yargs": "18.0.0",
+ "zod": "3.25.76"
+ },
+ "bin": {
+ "ng": "bin/ng.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
}
},
- "aproba": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/aproba/-/aproba-1.2.0/6802e6264efd18c790a1b0d517f0f2627bf2c94a.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "resolved": "http://npm.trustu.pre/are-we-there-yet/-/are-we-there-yet-1.1.4/bb5dca382bb94f05e15194373d16fd3ba1ca110d.tgz",
- "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "node_modules/@angular/cli/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "argparse": {
- "version": "1.0.9",
- "resolved": "http://npm.trustu.pre/argparse/-/argparse-1.0.9/73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86.tgz",
- "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "node_modules/@angular/cli/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
- "requires": {
- "sprintf-js": "1.0.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/arr-diff/-/arr-diff-2.0.0/8f3b827f955a8bd669697e4a4256ac3ceae356cf.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "node_modules/@angular/cli/node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
"dev": true,
- "requires": {
- "arr-flatten": "1.1.0"
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
}
},
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/arr-flatten/-/arr-flatten-1.1.0/36048bbff4e7b47e136644316c99669ea5ae91f1.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "array-differ": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/array-differ/-/array-differ-1.0.0/eff52e3758249d33be402b8bb8e564bb2b5d4031.tgz",
- "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/array-find-index/-/array-find-index-1.0.2/df010aa1287e164bbda6f9723b0a96a1ec4187a1.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "array-flatten": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/array-flatten/-/array-flatten-2.1.1/426bb9da84090c1838d812c8150af20a8331e296.tgz",
- "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
- "dev": true
- },
- "array-ify": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/array-ify/-/array-ify-1.0.0/9e528762b4a9066ad163a6962a364418e9626ece.tgz",
- "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
- "dev": true
- },
- "array-includes": {
- "version": "3.0.3",
- "resolved": "http://npm.trustu.pre/array-includes/-/array-includes-3.0.3/184b48f62d92d7452bb31b323165c7f8bd02266d.tgz",
- "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "node_modules/@angular/cli/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
- "requires": {
- "define-properties": "1.1.2",
- "es-abstract": "1.10.0"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "array-slice": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/array-slice/-/array-slice-0.2.3/dd3cfb80ed7973a75117cdac69b0b99ec86186f5.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
- "dev": true
+ "node_modules/@angular/cli/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
},
- "array-union": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/array-union/-/array-union-1.0.2/9a34410e4f4e3da23dea375be5be70f24778ec39.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "node_modules/@angular/cli/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
- "requires": {
- "array-uniq": "1.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/array-uniq/-/array-uniq-1.0.3/af6ac877a25cc7f74e058894753858dfdb24fdb6.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
+ "node_modules/@angular/cli/node_modules/yargs": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^7.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
},
- "array-unique": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/array-unique/-/array-unique-0.2.1/a1d97ccafcbc2625cc70fadceb36a50c58b01a53.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
+ "node_modules/@angular/cli/node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
},
- "arraybuffer.slice": {
- "version": "0.0.6",
- "resolved": "http://npm.trustu.pre/arraybuffer.slice/-/arraybuffer.slice-0.0.6/f33b2159f0532a3f3107a272c0ccfbd1ad2979ca.tgz",
- "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
- "dev": true
+ "node_modules/@angular/common": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.7.tgz",
+ "integrity": "sha512-uf8dXYTJbedk/wudkt2MfbtvN/T97aEZBtOTq8/IFQQZ3722rag6D+Cg76e5hBccROOn+ueGJX2gpxz02phTwA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "20.3.7",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
},
- "arrify": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/arrify/-/arrify-1.0.1/898508da2226f380df904728456849c1501a4b0d.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
+ "node_modules/@angular/compiler": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.7.tgz",
+ "integrity": "sha512-EouHO15dUsgnFArj0M25R8cOPVoUfiFYSt6iXnMO8+S4dY1fDEmbFqkW5smlP66HL5Gys59Nwb5inejfIWHrLw==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ }
},
- "asap": {
- "version": "2.0.6",
- "resolved": "http://npm.trustu.pre/asap/-/asap-2.0.6/e50347611d7e690943208bbdafebcbc2fb866d46.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "node_modules/@angular/compiler-cli": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.7.tgz",
+ "integrity": "sha512-viZwWlwc1BAqryRJE0Wq2WgAxDaW9fuwtYHYrOWnIn9sy9KemKmR6RmU9VRydrwUROOlqK49R9+RC1wQ6sYwqA==",
"dev": true,
- "optional": true
- },
- "asn1": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/asn1/-/asn1-0.2.3/dac8787713c9966849fc8180777ebe9c1ddf3b86.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
- "dev": true
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "7.28.3",
+ "@jridgewell/sourcemap-codec": "^1.4.14",
+ "chokidar": "^4.0.0",
+ "convert-source-map": "^1.5.1",
+ "reflect-metadata": "^0.2.0",
+ "semver": "^7.0.0",
+ "tslib": "^2.3.0",
+ "yargs": "^18.0.0"
+ },
+ "bin": {
+ "ng-xi18n": "bundles/src/bin/ng_xi18n.js",
+ "ngc": "bundles/src/bin/ngc.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "20.3.7",
+ "typescript": ">=5.8 <6.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
},
- "asn1.js": {
- "version": "4.9.2",
- "resolved": "http://npm.trustu.pre/asn1.js/-/asn1.js-4.9.2/8117ef4f7ed87cd8f89044b5bff97ac243a16c9a.tgz",
- "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
+ "node_modules/@angular/compiler-cli/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "inherits": "2.0.3",
- "minimalistic-assert": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "assert": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/assert/-/assert-1.4.1/99912d591836b5a6f5b345c0f07eefc08fc65d91.tgz",
- "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "node_modules/@angular/compiler-cli/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
- "requires": {
- "util": "0.10.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "assert-plus": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-0.2.0/d74e1b87e7affc0db8aadb7021f3fe48101ab234.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
- "dev": true
- },
- "async": {
- "version": "2.6.0",
- "resolved": "http://npm.trustu.pre/async/-/async-2.6.0/61a29abb6fcc026fea77e56d1c6ec53a795951f4.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "node_modules/@angular/compiler-cli/node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
"dev": true,
- "requires": {
- "lodash": "4.17.4"
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
}
},
- "async-each": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/async-each/-/async-each-1.0.1/19d386a1d9edc6e7c1c85d388aedbcc56d33602d.tgz",
- "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
- "dev": true
+ "node_modules/@angular/compiler-cli/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
},
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/async-foreach/-/async-foreach-0.1.3/36121f845c0578172de419a97dbeb1d16ec34542.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+ "node_modules/@angular/compiler-cli/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "http://npm.trustu.pre/asynckit/-/asynckit-0.4.0/c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
+ "node_modules/@angular/compiler-cli/node_modules/yargs": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^7.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
},
- "autoprefixer": {
- "version": "6.7.7",
- "resolved": "http://npm.trustu.pre/autoprefixer/-/autoprefixer-6.7.7/1dbd1c835658e35ce3f9984099db00585c782014.tgz",
- "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+ "node_modules/@angular/compiler-cli/node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
"dev": true,
- "requires": {
- "browserslist": "1.7.7",
- "caniuse-db": "1.0.30000780",
- "normalize-range": "0.1.2",
- "num2fraction": "1.2.2",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "ISC",
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
}
},
- "aws-sign2": {
- "version": "0.6.0",
- "resolved": "http://npm.trustu.pre/aws-sign2/-/aws-sign2-0.6.0/14342dd38dbcc94d0e5b87d763cd63612c0e794f.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
- "dev": true
+ "node_modules/@angular/core": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.7.tgz",
+ "integrity": "sha512-2UuYzC2A5SUtu33tYTN411Wk0WilA+2Uld/GP3O6mragw1O7v/M8pMFmbe9TR5Ah/abRJIocWGlNqeztZmQmrw==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "20.3.7",
+ "rxjs": "^6.5.3 || ^7.4.0",
+ "zone.js": "~0.15.0"
+ },
+ "peerDependenciesMeta": {
+ "@angular/compiler": {
+ "optional": true
+ },
+ "zone.js": {
+ "optional": true
+ }
+ }
},
- "aws4": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/aws4/-/aws4-1.6.0/83ef5ca860b2b32e4a0deedee8c771b9db57471e.tgz",
- "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
- "dev": true
+ "node_modules/@angular/forms": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.7.tgz",
+ "integrity": "sha512-uOCGCoqXeAWIlQMWiIeed/W8g8h2tk91YemMI+Ce1VQ/36Xfft40Bouz4eKcvJV6kLXGygdpWjzFGz32CE+3Og==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/platform-browser": "20.3.7",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/localize": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.3.7.tgz",
+ "integrity": "sha512-FYuuwU9ujiVT+0xjMIutaUT2PErV4AvxeAPWMlYRA1/yQxqn1VyNUd6kHPjAV+yrZg9Q0MDco2/c0Lh8rmAhSA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "7.28.3",
+ "@types/babel__core": "7.20.5",
+ "tinyglobby": "^0.2.12",
+ "yargs": "^18.0.0"
+ },
+ "bin": {
+ "localize-extract": "tools/bundles/src/extract/cli.js",
+ "localize-migrate": "tools/bundles/src/migrate/cli.js",
+ "localize-translate": "tools/bundles/src/translate/cli.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "20.3.7",
+ "@angular/compiler-cli": "20.3.7"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
},
- "babel-code-frame": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-code-frame/-/babel-code-frame-6.26.0/63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
+ "node_modules/@angular/localize/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
},
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
+ "license": "ISC",
"dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/yargs": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^7.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@angular/localize/node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@angular/platform-browser": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.7.tgz",
+ "integrity": "sha512-AbLtyR7fVEGDYyrz95dP2pc69J5XIjLLsFNAuNQPzNX02WPoAxtrWrNY6UnTzGoSrCc5F52hiL2Uo6yPZTiJcg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/animations": "20.3.7",
+ "@angular/common": "20.3.7",
+ "@angular/core": "20.3.7"
+ },
+ "peerDependenciesMeta": {
+ "@angular/animations": {
+ "optional": true
}
}
},
- "babel-generator": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-generator/-/babel-generator-6.26.0/ac1ae20070b79f6e3ca1d3269613053774f20dc5.tgz",
- "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
- "dev": true,
- "requires": {
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "detect-indent": "4.0.0",
- "jsesc": "1.3.0",
- "lodash": "4.17.4",
- "source-map": "0.5.7",
- "trim-right": "1.0.1"
+ "node_modules/@angular/platform-browser-dynamic": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.7.tgz",
+ "integrity": "sha512-4TEPA12183cMeVCzuU/Rmuk5RuIgsunTbjgx0o+ymxvYyULOxKDlhZ4hGDKzmRCOu6s3ZeEs4XbgaLP6pK+Kxg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "20.3.7",
+ "@angular/compiler": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/platform-browser": "20.3.7"
+ }
+ },
+ "node_modules/@angular/platform-server": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-20.3.7.tgz",
+ "integrity": "sha512-ADqOwqeUpTkp97SUpNO4jZ0o9Du7oBpi0mqzLx/c1dQYgL5hKAZYpa7bpG/edn2nSMHXwQAaGw7t+MTmU7elxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0",
+ "xhr2": "^0.2.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "20.3.7",
+ "@angular/compiler": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/platform-browser": "20.3.7",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/router": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.7.tgz",
+ "integrity": "sha512-Lq7mCNcLP1npmNh2JlNEe02YS2jNnaLnCy/t//o+Qq0c6DGV78JRl7pHubiB2R6XXlgvOcZWg88v94Li+y85Iw==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
},
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/platform-browser": "20.3.7",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/ssr": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-20.3.7.tgz",
+ "integrity": "sha512-munpdYSgU2jDdRb5xujmaAXEpnOhFVLNO0ghqPugeDOH8ejeum3oBsHkdWK1w6rhj1PmX32/Q0DlAiuY4VlXCQ==",
+ "license": "MIT",
"dependencies": {
- "jsesc": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/jsesc/-/jsesc-1.3.0/46c3fec8c1892b12b0833db9bc7622176dbab34b.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true
+ "tslib": "^2.3.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "^20.0.0",
+ "@angular/core": "^20.0.0",
+ "@angular/platform-server": "^20.0.0",
+ "@angular/router": "^20.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@angular/platform-server": {
+ "optional": true
}
}
},
- "babel-messages": {
- "version": "6.23.0",
- "resolved": "http://npm.trustu.pre/babel-messages/-/babel-messages-6.23.0/f3cdf4703858035b2a2951c6ec5edf6c62f2630e.tgz",
- "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.0.5.tgz",
+ "integrity": "sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==",
"dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "lru-cache": "^11.2.1"
}
},
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-runtime/-/babel-runtime-6.26.0/965c7058668e82b55d7bfe04ff2337bc8b5647fe.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
+ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
"dev": true,
- "requires": {
- "core-js": "2.5.1",
- "regenerator-runtime": "0.11.0"
+ "license": "ISC",
+ "engines": {
+ "node": "20 || >=22"
}
},
- "babel-template": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-template/-/babel-template-6.26.0/de03e2d16396b069f46dd9fff8521fb1a0e35e02.tgz",
- "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "node_modules/@asamuzakjp/dom-selector": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.3.tgz",
+ "integrity": "sha512-kiGFeY+Hxf5KbPpjRLf+ffWbkos1aGo8MBfd91oxS3O57RgU3XhZrt/6UzoVF9VMpWbC3v87SRc9jxGrc9qHtQ==",
"dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "lodash": "4.17.4"
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/nwsapi": "^2.3.9",
+ "bidi-js": "^1.0.3",
+ "css-tree": "^3.1.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "lru-cache": "^11.2.2"
}
},
- "babel-traverse": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-traverse/-/babel-traverse-6.26.0/46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee.tgz",
- "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
+ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
"dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "debug": "2.6.9",
- "globals": "9.18.0",
- "invariant": "2.2.2",
- "lodash": "4.17.4"
+ "license": "ISC",
+ "engines": {
+ "node": "20 || >=22"
}
},
- "babel-types": {
- "version": "6.26.0",
- "resolved": "http://npm.trustu.pre/babel-types/-/babel-types-6.26.0/a3b073f94ab49eb6fa55cd65227a334380632497.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "node_modules/@asamuzakjp/nwsapi": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz",
+ "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==",
"dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "esutils": "2.0.2",
- "lodash": "4.17.4",
- "to-fast-properties": "1.0.3"
+ "license": "MIT"
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "babylon": {
- "version": "6.18.0",
- "resolved": "http://npm.trustu.pre/babylon/-/babylon-6.18.0/af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
- "dev": true
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "backo2": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/backo2/-/backo2-1.0.2/31ab1ac8b129363463e35b3ebb69f4dfcfba7947.tgz",
- "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
- "dev": true
+ "node_modules/@babel/core": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz",
+ "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.3",
+ "@babel/parser": "^7.28.3",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.3",
+ "@babel/types": "^7.28.2",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
},
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/balanced-match/-/balanced-match-1.0.0/89b4d199ab2bee49de164ea02b89ce462d71b767.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "node_modules/@babel/core/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==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@babel/types": "^7.28.2",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "base64-arraybuffer": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/base64-arraybuffer/-/base64-arraybuffer-0.1.5/73926771923b5a19747ad666aa5cd4bf9c6e9ce8.tgz",
- "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
- "dev": true
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "base64-js": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/base64-js/-/base64-js-1.2.1/a91947da1f4a516ea38e5b4ec0ec3773675e0886.tgz",
- "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
- "dev": true
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "base64id": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/base64id/-/base64id-1.0.0/47688cb99bb6804f0e06d3e763b1c32e57d8e6b6.tgz",
- "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
- "dev": true
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
},
- "batch": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/batch/-/batch-0.6.1/dc34314f4e679318093fc760272525f94bf25c16.tgz",
- "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
- "dev": true
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1/63bc5dcb61331b92bc05fd528953c33462a06f8d.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "dev": true,
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "beeper": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/beeper/-/beeper-1.1.1/e6d5ea8c5dad001304a70b22638447f69cb2f809.tgz",
- "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
- "dev": true
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
},
- "better-assert": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/better-assert/-/better-assert-1.0.2/40866b9e1b9e0b55b481894311e68faffaebc522.tgz",
- "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+ "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dev": true,
- "requires": {
- "callsite": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "big.js": {
- "version": "3.2.0",
- "resolved": "http://npm.trustu.pre/big.js/-/big.js-3.2.0/a5fc298b81b9e0dca2e458824784b65c52ba588e.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "binary-extensions": {
- "version": "1.11.0",
- "resolved": "http://npm.trustu.pre/binary-extensions/-/binary-extensions-1.11.0/46aa1751fb6a2f93ee5e689bb1087d4b14c6c205.tgz",
- "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
- "dev": true
- },
- "blob": {
- "version": "0.0.4",
- "resolved": "http://npm.trustu.pre/blob/-/blob-0.0.4/bcf13052ca54463f30f9fc7e95b9a47630a94921.tgz",
- "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
- "dev": true
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
- "block-stream": {
- "version": "0.0.9",
- "resolved": "http://npm.trustu.pre/block-stream/-/block-stream-0.0.9/13ebfe778a03205cfe03751481ebb4b3300c126a.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "optional": true,
- "requires": {
- "inherits": "2.0.3"
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "blocking-proxy": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/blocking-proxy/-/blocking-proxy-1.0.1/81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2.tgz",
- "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==",
- "dev": true,
- "requires": {
- "minimist": "1.2.0"
+ "node_modules/@babel/traverse": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "bluebird": {
- "version": "3.5.1",
- "resolved": "http://npm.trustu.pre/bluebird/-/bluebird-3.5.1/d9551f9de98f1fcda1e683d17ee91a0602ee2eb9.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
- "dev": true
+ "node_modules/@babel/traverse/node_modules/@babel/generator": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "bn.js": {
- "version": "4.11.8",
- "resolved": "http://npm.trustu.pre/bn.js/-/bn.js-4.11.8/2cde09eb5ee341f484746bb0309b3253b1b1442f.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
- "dev": true
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "body-parser": {
- "version": "1.18.2",
- "resolved": "http://npm.trustu.pre/body-parser/-/body-parser-1.18.2/87678a19d84b47d859b83199bd59bce222b10454.tgz",
- "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==",
"dev": true,
- "requires": {
- "bytes": "3.0.0",
- "content-type": "1.0.4",
- "debug": "2.6.9",
- "depd": "1.1.1",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "on-finished": "2.3.0",
- "qs": "6.5.1",
- "raw-body": "2.3.2",
- "type-is": "1.6.15"
- },
- "dependencies": {
- "qs": {
- "version": "6.5.1",
- "resolved": "http://npm.trustu.pre/qs/-/qs-6.5.1/349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "bonjour": {
- "version": "3.5.0",
- "resolved": "http://npm.trustu.pre/bonjour/-/bonjour-3.5.0/8e890a183d8ee9a2393b3844c691a42bcf7bc9f5.tgz",
- "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "node_modules/@cacheable/memoize": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cacheable/memoize/-/memoize-2.0.3.tgz",
+ "integrity": "sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==",
"dev": true,
- "requires": {
- "array-flatten": "2.1.1",
- "deep-equal": "1.0.1",
- "dns-equal": "1.0.0",
- "dns-txt": "2.0.2",
- "multicast-dns": "6.2.1",
- "multicast-dns-service-types": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "@cacheable/utils": "^2.0.3"
}
},
- "boolbase": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/boolbase/-/boolbase-1.0.0/68dff5fbe60c51eb37725ea9e3ed310dcc1e776e.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
- "dev": true
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "http://npm.trustu.pre/boom/-/boom-2.10.1/39c8918ceff5799f83f9492a848f625add0c766f.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "node_modules/@cacheable/memory": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.3.tgz",
+ "integrity": "sha512-R3UKy/CKOyb1LZG/VRCTMcpiMDyLH7SH3JrraRdK6kf3GweWCOU3sgvE13W3TiDRbxnDKylzKJvhUAvWl9LQOA==",
"dev": true,
- "requires": {
- "hoek": "2.16.3"
+ "license": "MIT",
+ "dependencies": {
+ "@cacheable/memoize": "^2.0.3",
+ "@cacheable/utils": "^2.0.3",
+ "@keyv/bigmap": "^1.0.2",
+ "hookified": "^1.12.1",
+ "keyv": "^5.5.3"
}
},
- "brace-expansion": {
- "version": "1.1.8",
- "resolved": "http://npm.trustu.pre/brace-expansion/-/brace-expansion-1.1.8/c07b211c7c952ec1f8efd51a77ef0d1d3990a292.tgz",
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "node_modules/@cacheable/memory/node_modules/keyv": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz",
+ "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==",
"dev": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
}
},
- "braces": {
- "version": "1.8.5",
- "resolved": "http://npm.trustu.pre/braces/-/braces-1.8.5/ba77962e12dff969d6b76711e914b737857bf6a7.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "node_modules/@cacheable/utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.1.0.tgz",
+ "integrity": "sha512-ZdxfOiaarMqMj+H7qwlt5EBKWaeGihSYVHdQv5lUsbn8MJJOTW82OIwirQ39U5tMZkNvy3bQE+ryzC+xTAb9/g==",
"dev": true,
- "requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
+ "license": "MIT",
+ "dependencies": {
+ "keyv": "^5.5.3"
}
},
- "brorand": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/brorand/-/brorand-1.1.0/12c25efe40a45e3c323eb8675a0a0ce57b22371f.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
- },
- "browserify-aes": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/browserify-aes/-/browserify-aes-1.1.1/38b7ab55edb806ff2dcda1a7f1620773a477c49f.tgz",
- "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "node_modules/@cacheable/utils/node_modules/keyv": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz",
+ "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==",
"dev": true,
- "requires": {
- "buffer-xor": "1.0.3",
- "cipher-base": "1.0.4",
- "create-hash": "1.1.3",
- "evp_bytestokey": "1.0.3",
- "inherits": "2.0.3",
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
}
},
- "browserify-cipher": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/browserify-cipher/-/browserify-cipher-1.0.0/9988244874bf5ed4e28da95666dcd66ac8fc363a.tgz",
- "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
+ "node_modules/@commitlint/cli": {
+ "version": "20.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.1.0.tgz",
+ "integrity": "sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==",
"dev": true,
- "requires": {
- "browserify-aes": "1.1.1",
- "browserify-des": "1.0.0",
- "evp_bytestokey": "1.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/format": "^20.0.0",
+ "@commitlint/lint": "^20.0.0",
+ "@commitlint/load": "^20.1.0",
+ "@commitlint/read": "^20.0.0",
+ "@commitlint/types": "^20.0.0",
+ "tinyexec": "^1.0.0",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "commitlint": "cli.js"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "browserify-des": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/browserify-des/-/browserify-des-1.0.0/daa277717470922ed2fe18594118a175439721dd.tgz",
- "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
+ "node_modules/@commitlint/cli/node_modules/tinyexec": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
+ "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
"dev": true,
- "requires": {
- "cipher-base": "1.0.4",
- "des.js": "1.0.0",
- "inherits": "2.0.3"
- }
+ "license": "MIT"
},
- "browserify-rsa": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/browserify-rsa/-/browserify-rsa-4.0.1/21e0abfaf6f2029cf2fafb133567a701d4135524.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "node_modules/@commitlint/config-conventional": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.0.0.tgz",
+ "integrity": "sha512-q7JroPIkDBtyOkVe9Bca0p7kAUYxZMxkrBArCfuD3yN4KjRAenP9PmYwnn7rsw8Q+hHq1QB2BRmBh0/Z19ZoJw==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "randombytes": "2.0.5"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/types": "^20.0.0",
+ "conventional-changelog-conventionalcommits": "^7.0.2"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "browserify-sign": {
- "version": "4.0.4",
- "resolved": "http://npm.trustu.pre/browserify-sign/-/browserify-sign-4.0.4/aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "node_modules/@commitlint/config-validator": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.0.0.tgz",
+ "integrity": "sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "browserify-rsa": "4.0.1",
- "create-hash": "1.1.3",
- "create-hmac": "1.1.6",
- "elliptic": "6.4.0",
- "inherits": "2.0.3",
- "parse-asn1": "5.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/types": "^20.0.0",
+ "ajv": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "browserify-zlib": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/browserify-zlib/-/browserify-zlib-0.2.0/2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "node_modules/@commitlint/ensure": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.0.0.tgz",
+ "integrity": "sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==",
"dev": true,
- "requires": {
- "pako": "1.0.6"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/types": "^20.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.kebabcase": "^4.1.1",
+ "lodash.snakecase": "^4.1.1",
+ "lodash.startcase": "^4.4.0",
+ "lodash.upperfirst": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "browserslist": {
- "version": "1.7.7",
- "resolved": "http://npm.trustu.pre/browserslist/-/browserslist-1.7.7/0bd76704258be829b2398bb50e4b62d1a166b0b9.tgz",
- "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "node_modules/@commitlint/execute-rule": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz",
+ "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==",
"dev": true,
- "requires": {
- "caniuse-db": "1.0.30000780",
- "electron-to-chromium": "1.3.28"
+ "license": "MIT",
+ "engines": {
+ "node": ">=v18"
}
},
- "btoa": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/btoa/-/btoa-1.1.2/3e40b81663f81d2dd6596a4cb714a8dc16cfabe0.tgz",
- "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=",
- "dev": true
- },
- "buffer": {
- "version": "4.9.1",
- "resolved": "http://npm.trustu.pre/buffer/-/buffer-4.9.1/6d1bb601b07a4efced97094132093027c95bc298.tgz",
- "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "node_modules/@commitlint/format": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.0.0.tgz",
+ "integrity": "sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==",
"dev": true,
- "requires": {
- "base64-js": "1.2.1",
- "ieee754": "1.1.8",
- "isarray": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/types": "^20.0.0",
+ "chalk": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "buffer-indexof": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/buffer-indexof/-/buffer-indexof-1.1.1/52fabcc6a606d1a00302802648ef68f639da268c.tgz",
- "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
- "dev": true
- },
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/buffer-xor/-/buffer-xor-1.0.3/26e61ed1422fb70dd42e6e36729ed51d855fe8d9.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/builtin-modules/-/builtin-modules-1.1.1/270f076c5a72c02f5b65a47df94c5fe3a278892f.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
- "builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/builtin-status-codes/-/builtin-status-codes-3.0.0/85982878e21b98e1c66425e03d0174788f569ee8.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
- "dev": true
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/bytes/-/bytes-3.0.0/d32815404d689699f85a4ea4fa8755dd13a96048.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "dev": true
- },
- "cacache": {
- "version": "10.0.1",
- "resolved": "http://npm.trustu.pre/cacache/-/cacache-10.0.1/3e05f6e616117d9b54665b1b20c8aeb93ea5d36f.tgz",
- "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==",
- "dev": true,
- "requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.1",
- "mississippi": "1.3.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "5.0.0",
- "unique-filename": "1.1.0",
- "y18n": "3.2.1"
- }
- },
- "callsite": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/callsite/-/callsite-1.0.0/280398e5d664bd74038b6f0905153e6e8af1bc20.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
- "dev": true
- },
- "camel-case": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/camel-case/-/camel-case-3.0.0/ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73.tgz",
- "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "node_modules/@commitlint/is-ignored": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.0.0.tgz",
+ "integrity": "sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==",
"dev": true,
- "requires": {
- "no-case": "2.3.2",
- "upper-case": "1.1.3"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/types": "^20.0.0",
+ "semver": "^7.6.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "camelcase": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-2.1.1/7c1d16d679a1bbe59ca02cacecfb011e201f5a1f.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/camelcase-keys/-/camelcase-keys-2.1.0/308beeaffdf28119051efa1d932213c91b8f92e7.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "node_modules/@commitlint/lint": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.0.0.tgz",
+ "integrity": "sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==",
"dev": true,
- "requires": {
- "camelcase": "2.1.1",
- "map-obj": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/is-ignored": "^20.0.0",
+ "@commitlint/parse": "^20.0.0",
+ "@commitlint/rules": "^20.0.0",
+ "@commitlint/types": "^20.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "caniuse-api": {
- "version": "1.6.1",
- "resolved": "http://npm.trustu.pre/caniuse-api/-/caniuse-api-1.6.1/b534e7c734c4f81ec5fbe8aca2ad24354b962c6c.tgz",
- "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+ "node_modules/@commitlint/load": {
+ "version": "20.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.1.0.tgz",
+ "integrity": "sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==",
"dev": true,
- "requires": {
- "browserslist": "1.7.7",
- "caniuse-db": "1.0.30000780",
- "lodash.memoize": "4.1.2",
- "lodash.uniq": "4.5.0"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/config-validator": "^20.0.0",
+ "@commitlint/execute-rule": "^20.0.0",
+ "@commitlint/resolve-extends": "^20.1.0",
+ "@commitlint/types": "^20.0.0",
+ "chalk": "^5.3.0",
+ "cosmiconfig": "^9.0.0",
+ "cosmiconfig-typescript-loader": "^6.1.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "lodash.uniq": "^4.5.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "caniuse-db": {
- "version": "1.0.30000780",
- "resolved": "http://npm.trustu.pre/caniuse-db/-/caniuse-db-1.0.30000780/8d1977561d00ff0f0ed2b6b66140328ab4504c0a.tgz",
- "integrity": "sha1-jRl3Vh0A/w8O0ra2YUAyirRQTAo=",
- "dev": true
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "http://npm.trustu.pre/caseless/-/caseless-0.12.0/1b681c21ff84033c826543090689420d187151dc.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
+ "node_modules/@commitlint/message": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.0.0.tgz",
+ "integrity": "sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=v18"
+ }
},
- "center-align": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/center-align/-/center-align-0.1.3/aa0d32629b6ee972200411cbd4461c907bc2b7ad.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "node_modules/@commitlint/parse": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.0.0.tgz",
+ "integrity": "sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==",
"dev": true,
- "requires": {
- "align-text": "0.1.4",
- "lazy-cache": "1.0.4"
- },
+ "license": "MIT",
"dependencies": {
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/lazy-cache/-/lazy-cache-1.0.4/a1d78fc3a50474cb80845d3b3b6e1da49a446e8e.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true
- }
+ "@commitlint/types": "^20.0.0",
+ "conventional-changelog-angular": "^7.0.0",
+ "conventional-commits-parser": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "chalk": {
- "version": "2.2.2",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.2.2/4403f5cf18f35c05f51fbdf152bf588f956cf7cb.tgz",
- "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==",
+ "node_modules/@commitlint/read": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.0.0.tgz",
+ "integrity": "sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==",
"dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/top-level": "^20.0.0",
+ "@commitlint/types": "^20.0.0",
+ "git-raw-commits": "^4.0.0",
+ "minimist": "^1.2.8",
+ "tinyexec": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "charenc": {
- "version": "0.0.2",
- "resolved": "http://npm.trustu.pre/charenc/-/charenc-0.0.2/c0a1d2f3a7092e03774bfa83f14c0fc5790a8667.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
- "dev": true
- },
- "chokidar": {
- "version": "1.7.0",
- "resolved": "http://npm.trustu.pre/chokidar/-/chokidar-1.7.0/798e689778151c8076b4b360e5edd28cda2bb468.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
- "dev": true,
- "requires": {
- "anymatch": "1.3.2",
- "async-each": "1.0.1",
- "fsevents": "1.1.3",
- "glob-parent": "2.0.0",
- "inherits": "2.0.3",
- "is-binary-path": "1.0.1",
- "is-glob": "2.0.1",
- "path-is-absolute": "1.0.1",
- "readdirp": "2.1.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-2.0.1/d096f926a3ded5600f3fdfd91198cb0888c2d863.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- }
- }
- },
- "chownr": {
+ "node_modules/@commitlint/read/node_modules/tinyexec": {
"version": "1.0.1",
- "resolved": "http://npm.trustu.pre/chownr/-/chownr-1.0.1/e2a75042a9551908bebd25b8523d5f9769d79181.tgz",
- "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
+ "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
+ "dev": true,
+ "license": "MIT"
},
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/cipher-base/-/cipher-base-1.0.4/8760e4ecc272f4c363532f926d874aae2c1397de.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "node_modules/@commitlint/resolve-extends": {
+ "version": "20.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.1.0.tgz",
+ "integrity": "sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "@commitlint/config-validator": "^20.0.0",
+ "@commitlint/types": "^20.0.0",
+ "global-directory": "^4.0.1",
+ "import-meta-resolve": "^4.0.0",
+ "lodash.mergewith": "^4.6.2",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "circular-dependency-plugin": {
- "version": "4.3.0",
- "resolved": "http://npm.trustu.pre/circular-dependency-plugin/-/circular-dependency-plugin-4.3.0/2a12824e584546e1aeea5865b7bf234a11c4a695.tgz",
- "integrity": "sha512-L3W9L1S0wC64rq+QSaZzmWnJW7cVBgimxI2lNEFEX5biwlRG8EHRM68JFi+CX5ZkCGUWJHIpnhdVs181Zlq3wA==",
- "dev": true
- },
- "clap": {
- "version": "1.2.3",
- "resolved": "http://npm.trustu.pre/clap/-/clap-1.2.3/4f36745b32008492557f46412d66d50cb99bce51.tgz",
- "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+ "node_modules/@commitlint/rules": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.0.0.tgz",
+ "integrity": "sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==",
"dev": true,
- "requires": {
- "chalk": "1.1.3"
- },
+ "license": "MIT",
"dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
+ "@commitlint/ensure": "^20.0.0",
+ "@commitlint/message": "^20.0.0",
+ "@commitlint/to-lines": "^20.0.0",
+ "@commitlint/types": "^20.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "classlist.js": {
- "version": "1.1.20150312",
- "resolved": "http://npm.trustu.pre/classlist.js/-/classlist.js-1.1.20150312/1d70842f7022f08d9ac086ce69e5b250f2c57789.tgz",
- "integrity": "sha1-HXCEL3Ai8I2awIbOaeWyUPLFd4k="
- },
- "clean-css": {
- "version": "4.1.9",
- "resolved": "http://npm.trustu.pre/clean-css/-/clean-css-4.1.9/35cee8ae7687a49b98034f70de00c4edd3826301.tgz",
- "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=",
+ "node_modules/@commitlint/to-lines": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz",
+ "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==",
"dev": true,
- "requires": {
- "source-map": "0.5.7"
+ "license": "MIT",
+ "engines": {
+ "node": ">=v18"
}
},
- "cliui": {
- "version": "3.2.0",
- "resolved": "http://npm.trustu.pre/cliui/-/cliui-3.2.0/120601537a916d29940f934da3b48d585a39213d.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "node_modules/@commitlint/top-level": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.0.0.tgz",
+ "integrity": "sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==",
"dev": true,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "clone": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/clone/-/clone-1.0.3/298d7e2231660f40c003c2ed3140decf3f53085f.tgz",
- "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
- "dev": true
- },
- "clone-deep": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/clone-deep/-/clone-deep-0.3.0/348c61ae9cdbe0edfe053d91ff4cc521d790ede8.tgz",
- "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=",
+ "node_modules/@commitlint/types": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz",
+ "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==",
"dev": true,
- "requires": {
- "for-own": "1.0.0",
- "is-plain-object": "2.0.4",
- "kind-of": "3.2.2",
- "shallow-clone": "0.1.2"
+ "license": "MIT",
+ "dependencies": {
+ "@types/conventional-commits-parser": "^5.0.0",
+ "chalk": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=v18"
}
},
- "clone-stats": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/clone-stats/-/clone-stats-0.0.1/b88f94a82cf38b8791d58046ea4029ad88ca99d1.tgz",
- "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
- "dev": true
- },
- "co": {
- "version": "4.6.0",
- "resolved": "http://npm.trustu.pre/co/-/co-4.6.0/6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "coa": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/coa/-/coa-1.0.4/a9ef153660d6a86a8bdec0289a5c684d217432fd.tgz",
- "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
"dev": true,
- "requires": {
- "q": "1.5.1"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
}
},
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/code-point-at/-/code-point-at-1.1.0/0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "codelyzer": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/codelyzer/-/codelyzer-4.0.1/0bb4cf52a325b257790f4980bb3c63833db10789.tgz",
- "integrity": "sha512-MsOcaiLqcBK7hjHbfp9HZrflqWg5tD9A5qVSXkW208OJ8pkf63id8IiOjEiK/XU3o70W8tWbFKi1tAOwiJDMrQ==",
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
"dev": true,
- "requires": {
- "app-root-path": "2.0.1",
- "css-selector-tokenizer": "0.7.0",
- "cssauron": "1.4.0",
- "semver-dsl": "1.0.1",
- "source-map": "0.5.7",
- "sprintf-js": "1.0.3"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "collections": {
- "version": "0.2.2",
- "resolved": "http://npm.trustu.pre/collections/-/collections-0.2.2/1f23026b2ef36f927eecc901e99c5f0d48fa334e.tgz",
- "integrity": "sha1-HyMCay7zb5J+7MkB6ZxfDUj6M04=",
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
"dev": true,
- "requires": {
- "weak-map": "1.0.0"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.1.0",
+ "@csstools/css-calc": "^2.1.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "color": {
- "version": "0.11.4",
- "resolved": "http://npm.trustu.pre/color/-/color-0.11.4/6d7b5c74fb65e841cd48792ad1ed5e07b904d764.tgz",
- "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
"dev": true,
- "requires": {
- "clone": "1.0.3",
- "color-convert": "1.9.1",
- "color-string": "0.3.0"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "color-convert": {
- "version": "1.9.1",
- "resolved": "http://npm.trustu.pre/color-convert/-/color-convert-1.9.1/c1261107aeb2f294ebffec9ed9ecad529a6097ed.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz",
+ "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==",
"dev": true,
- "requires": {
- "color-name": "1.1.3"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/color-name/-/color-name-1.1.3/a7d0558bd89c42f795dd42328f740831ca53bc25.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "color-string": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/color-string/-/color-string-0.3.0/27d46fb67025c5c2fa25993bfbf579e47841b991.tgz",
- "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
"dev": true,
- "requires": {
- "color-name": "1.1.3"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "colormin": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/colormin/-/colormin-1.1.2/ea2f7420a72b96881a38aae59ec124a6f7298133.tgz",
- "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
+ "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
"dev": true,
- "requires": {
- "color": "0.11.4",
- "css-color-names": "0.0.4",
- "has": "1.0.1"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "colors": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/colors/-/colors-1.1.2/168a4701756b6a7f51a12ce0c97bfa28c084ed63.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "dev": true
- },
- "combine-lists": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/combine-lists/-/combine-lists-1.0.1/458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6.tgz",
- "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
+ "node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
"dev": true,
- "requires": {
- "lodash": "4.17.4"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
}
},
- "combined-stream": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/combined-stream/-/combined-stream-1.0.5/938370a57b4a51dea2c77c15d5c5fdf895164009.tgz",
- "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "node_modules/@ctrl/tinycolor": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz",
+ "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==",
"dev": true,
- "requires": {
- "delayed-stream": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
}
},
- "commander": {
- "version": "2.12.2",
- "resolved": "http://npm.trustu.pre/commander/-/commander-2.12.2/0f5946c427ed9ec0d91a46bb9def53e54650e555.tgz",
- "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
- "dev": true
- },
- "common-tags": {
- "version": "1.5.1",
- "resolved": "http://npm.trustu.pre/common-tags/-/common-tags-1.5.1/e2e39931a013cd02253defeed89a1ad615a27f07.tgz",
- "integrity": "sha512-NrUYGY5TApAk9KB+IZXkR3GR4tA3g26HDsoiGt4kCMHZ727gOGkC+UNfq0Z22jE15bLkc/6RV5Jw1RBW6Usg6A==",
+ "node_modules/@dual-bundle/import-meta-resolve": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz",
+ "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==",
"dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/JounQin"
}
},
- "commondir": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/commondir/-/commondir-1.0.1/ddd800da0c66127393cca5950ea968a3aaf1253b.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "compare-func": {
- "version": "1.3.2",
- "resolved": "http://npm.trustu.pre/compare-func/-/compare-func-1.3.2/99dd0ba457e1f9bc722b12c08ec33eeab31fa648.tgz",
- "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "requires": {
- "array-ify": "1.0.0",
- "dot-prop": "3.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "component-bind": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/component-bind/-/component-bind-1.0.0/00c608ab7dcd93897c0009651b1d3a8e1e73bbd1.tgz",
- "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
- "dev": true
- },
- "component-emitter": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/component-emitter/-/component-emitter-1.1.2/296594f2753daa63996d2af08d15a95116c9aec3.tgz",
- "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
- "dev": true
- },
- "component-inherit": {
- "version": "0.0.3",
- "resolved": "http://npm.trustu.pre/component-inherit/-/component-inherit-0.0.3/645fc4adf58b72b649d5cae65135619db26ff143.tgz",
- "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
- "dev": true
- },
- "compressible": {
- "version": "2.0.12",
- "resolved": "http://npm.trustu.pre/compressible/-/compressible-2.0.12/c59a5c99db76767e9876500e271ef63b3493bd66.tgz",
- "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+ "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
"dev": true,
- "requires": {
- "mime-db": "1.30.0"
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "compression": {
- "version": "1.7.1",
- "resolved": "http://npm.trustu.pre/compression/-/compression-1.7.1/eff2603efc2e22cf86f35d2eb93589f9875373db.tgz",
- "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
- "requires": {
- "accepts": "1.3.4",
- "bytes": "3.0.0",
- "compressible": "2.0.12",
- "debug": "2.6.9",
- "on-headers": "1.0.1",
- "safe-buffer": "5.1.1",
- "vary": "1.1.2"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "concat-map": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/concat-map/-/concat-map-0.0.1/d8a96bd77fd68df7793a73036a3ba0d5405d477b.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/concat-stream/-/concat-stream-1.6.0/0aac662fd52be78964d5532f694784e70110acf7.tgz",
- "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3",
- "typedarray": "0.0.6"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "connect": {
- "version": "3.6.5",
- "resolved": "http://npm.trustu.pre/connect/-/connect-3.6.5/fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da.tgz",
- "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=",
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "finalhandler": "1.0.6",
- "parseurl": "1.3.2",
- "utils-merge": "1.0.1"
- },
- "dependencies": {
- "finalhandler": {
- "version": "1.0.6",
- "resolved": "http://npm.trustu.pre/finalhandler/-/finalhandler-1.0.6/007aea33d1a4d3e42017f624848ad58d212f814f.tgz",
- "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "statuses": "1.3.1",
- "unpipe": "1.0.0"
- }
- }
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "connect-history-api-fallback": {
- "version": "1.5.0",
- "resolved": "http://npm.trustu.pre/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0/b06873934bc5e344fef611a196a6faae0aee015a.tgz",
- "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
- "dev": true
- },
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/console-browserify/-/console-browserify-1.1.0/f0241c45730a9fc6323b206dbf38edc741d0bb10.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "node_modules/@eslint/config-array/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,
- "requires": {
- "date-now": "0.1.4"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/console-control-strings/-/console-control-strings-1.1.0/3d7cf4464db6446ea644bf4b39507f9851008e8e.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/constants-browserify/-/constants-browserify-1.0.0/c20b96d8c617748aaf1c16021760cd27fcb8cb75.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "dev": true
- },
- "content-disposition": {
- "version": "0.5.2",
- "resolved": "http://npm.trustu.pre/content-disposition/-/content-disposition-0.5.2/0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
- "dev": true
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/content-type/-/content-type-1.0.4/e138cc75e040c727b1966fe5e5f8c9aee256fe3b.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
- },
- "conventional-changelog": {
- "version": "1.1.7",
- "resolved": "http://npm.trustu.pre/conventional-changelog/-/conventional-changelog-1.1.7/9151a62b1d8edb2d82711dabf5b7cf71041f82b1.tgz",
- "integrity": "sha1-kVGmKx2O2y2CcR2r9bfPcQQfgrE=",
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz",
+ "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==",
"dev": true,
- "requires": {
- "conventional-changelog-angular": "1.5.2",
- "conventional-changelog-atom": "0.1.2",
- "conventional-changelog-codemirror": "0.2.1",
- "conventional-changelog-core": "1.9.3",
- "conventional-changelog-ember": "0.2.9",
- "conventional-changelog-eslint": "0.2.1",
- "conventional-changelog-express": "0.2.1",
- "conventional-changelog-jquery": "0.1.0",
- "conventional-changelog-jscs": "0.1.0",
- "conventional-changelog-jshint": "0.2.1"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.16.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "conventional-changelog-angular": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/conventional-changelog-angular/-/conventional-changelog-angular-1.5.2/2b38f665fe9c5920af1a2f82f547f4babe6de57c.tgz",
- "integrity": "sha1-Kzj2Zf6cWSCvGi+C9Uf0ur5t5Xw=",
+ "node_modules/@eslint/core": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz",
+ "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==",
"dev": true,
- "requires": {
- "compare-func": "1.3.2",
- "q": "1.5.1"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "conventional-changelog-atom": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/conventional-changelog-atom/-/conventional-changelog-atom-0.1.2/12595ad5267a6937c34cf900281b1c65198a4c63.tgz",
- "integrity": "sha1-Ella1SZ6aTfDTPkAKBscZRmKTGM=",
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
"dev": true,
- "requires": {
- "q": "1.5.1"
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "conventional-changelog-codemirror": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.2.1/299a4f7147baf350e6c8158fc54954a291c5cc09.tgz",
- "integrity": "sha1-KZpPcUe681DmyBWPxUlUopHFzAk=",
- "dev": true,
- "requires": {
- "q": "1.5.1"
- }
- },
- "conventional-changelog-core": {
- "version": "1.9.3",
- "resolved": "http://npm.trustu.pre/conventional-changelog-core/-/conventional-changelog-core-1.9.3/2899fe779389a329f0ec4b2746c36ddefb98da2d.tgz",
- "integrity": "sha1-KJn+d5OJoynw7EsnRsNt3vuY2i0=",
- "dev": true,
- "requires": {
- "conventional-changelog-writer": "2.0.2",
- "conventional-commits-parser": "2.0.1",
- "dateformat": "1.0.12",
- "get-pkg-repo": "1.4.0",
- "git-raw-commits": "1.3.0",
- "git-remote-origin-url": "2.0.0",
- "git-semver-tags": "1.2.3",
- "lodash": "4.17.4",
- "normalize-package-data": "2.4.0",
- "q": "1.5.1",
- "read-pkg": "1.1.0",
- "read-pkg-up": "1.0.1",
- "through2": "2.0.3"
- }
- },
- "conventional-changelog-ember": {
- "version": "0.2.9",
- "resolved": "http://npm.trustu.pre/conventional-changelog-ember/-/conventional-changelog-ember-0.2.9/8ec73cc054e3ab064667fb1feb52fe8ef1b16438.tgz",
- "integrity": "sha1-jsc8wFTjqwZGZ/sf61L+jvGxZDg=",
+ "node_modules/@eslint/eslintrc/node_modules/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": {
- "q": "1.5.1"
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "conventional-changelog-eslint": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/conventional-changelog-eslint/-/conventional-changelog-eslint-0.2.1/2c2a11beb216f80649ba72834180293b687c0662.tgz",
- "integrity": "sha1-LCoRvrIW+AZJunKDQYApO2h8BmI=",
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
- "requires": {
- "q": "1.5.1"
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "conventional-changelog-express": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/conventional-changelog-express/-/conventional-changelog-express-0.2.1/838d9e1e6c9099703b150b9c19aa2d781742bd6c.tgz",
- "integrity": "sha1-g42eHmyQmXA7FQucGaoteBdCvWw=",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
- "requires": {
- "q": "1.5.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "conventional-changelog-jquery": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0/0208397162e3846986e71273b6c79c5b5f80f510.tgz",
- "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
- "requires": {
- "q": "1.5.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "conventional-changelog-jscs": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0/0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c.tgz",
- "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
+ "node_modules/@eslint/eslintrc/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,
- "requires": {
- "q": "1.5.1"
- }
+ "license": "MIT"
},
- "conventional-changelog-jshint": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/conventional-changelog-jshint/-/conventional-changelog-jshint-0.2.1/86139bb3ac99899f2b177e9617e09b37d99bcf3a.tgz",
- "integrity": "sha1-hhObs6yZiZ8rF36WF+CbN9mbzzo=",
+ "node_modules/@eslint/eslintrc/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,
- "requires": {
- "compare-func": "1.3.2",
- "q": "1.5.1"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "conventional-changelog-writer": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/conventional-changelog-writer/-/conventional-changelog-writer-2.0.2/b5857ded1b001daf9a78b9cd40926f45c134949b.tgz",
- "integrity": "sha1-tYV97RsAHa+aeLnNQJJvRcE0lJs=",
- "dev": true,
- "requires": {
- "compare-func": "1.3.2",
- "conventional-commits-filter": "1.1.0",
- "dateformat": "1.0.12",
- "handlebars": "4.0.11",
- "json-stringify-safe": "5.0.1",
- "lodash": "4.17.4",
- "meow": "3.7.0",
- "semver": "5.4.1",
- "split": "1.0.1",
- "through2": "2.0.3"
- }
- },
- "conventional-commits-filter": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/conventional-commits-filter/-/conventional-commits-filter-1.1.0/1fc29af30b5edab76f54e229c411b0c663d0f9eb.tgz",
- "integrity": "sha1-H8Ka8wte2rdvVOIpxBGwxmPQ+es=",
+ "node_modules/@eslint/js": {
+ "version": "9.38.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz",
+ "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==",
"dev": true,
- "requires": {
- "is-subset": "0.1.1",
- "modify-values": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
}
},
- "conventional-commits-parser": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/conventional-commits-parser/-/conventional-commits-parser-2.0.1/1f15ce6b844f7ca41495c8190c0833c30b8b1693.tgz",
- "integrity": "sha1-HxXOa4RPfKQUlcgZDAgzwwuLFpM=",
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
"dev": true,
- "requires": {
- "JSONStream": "1.3.1",
- "is-text-path": "1.0.1",
- "lodash": "4.17.4",
- "meow": "3.7.0",
- "split2": "2.2.0",
- "through2": "2.0.3",
- "trim-off-newlines": "1.0.1"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "conventional-recommended-bump": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/conventional-recommended-bump/-/conventional-recommended-bump-1.0.3/472b69b1b8f09c5c4ed40fe28a41e63cc04bd736.tgz",
- "integrity": "sha1-RytpsbjwnFxO1A/iikHmPMBL1zY=",
- "dev": true,
- "requires": {
- "concat-stream": "1.6.0",
- "conventional-commits-filter": "1.1.0",
- "conventional-commits-parser": "2.0.1",
- "git-raw-commits": "1.3.0",
- "git-semver-tags": "1.2.3",
- "meow": "3.7.0",
- "object-assign": "4.1.1"
- }
- },
- "convert-source-map": {
- "version": "1.5.1",
- "resolved": "http://npm.trustu.pre/convert-source-map/-/convert-source-map-1.5.1/b8278097b9bc229365de5c62cf5fcaed8b5599e5.tgz",
- "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
- "dev": true
- },
- "cookie": {
- "version": "0.3.1",
- "resolved": "http://npm.trustu.pre/cookie/-/cookie-0.3.1/e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
- "dev": true
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "http://npm.trustu.pre/cookie-signature/-/cookie-signature-1.0.6/e303a882b342cc3ee8ca513a79999734dab3ae2c.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
- "dev": true
- },
- "copy-concurrently": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/copy-concurrently/-/copy-concurrently-1.0.5/92297398cae34937fcafd6ec8139c18051f0b5e0.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz",
+ "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==",
"dev": true,
- "requires": {
- "aproba": "1.2.0",
- "fs-write-stream-atomic": "1.0.10",
- "iferr": "0.1.5",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.16.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "copy-webpack-plugin": {
- "version": "4.2.3",
- "resolved": "http://npm.trustu.pre/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3/4a3c61089f3b635777f0f0af346c338b39d63755.tgz",
- "integrity": "sha512-cL/Wl3Y1QmmKThl/mWeGB+HH3YH+25tn8nhqEGsZda4Yn7GqGnDZ+TbeKJ7A6zvrxyNhhuviYAxn/tCyyAqh8Q==",
- "dev": true,
- "requires": {
- "bluebird": "3.5.1",
- "glob": "7.1.2",
- "is-glob": "4.0.0",
- "loader-utils": "0.2.17",
- "lodash": "4.17.4",
- "minimatch": "3.0.4"
- },
- "dependencies": {
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "http://npm.trustu.pre/loader-utils/-/loader-utils-0.2.17/f86e6374d43205a6e6c60e9196f17c0299bfb348.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1"
- }
- }
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz",
+ "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.8"
}
},
- "core-js": {
- "version": "2.5.1",
- "resolved": "http://npm.trustu.pre/core-js/-/core-js-2.5.1/ae6874dc66937789b80754ff5428df66819ca50b.tgz",
- "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs="
- },
- "core-object": {
- "version": "3.1.5",
- "resolved": "http://npm.trustu.pre/core-object/-/core-object-3.1.5/fa627b87502adc98045e44678e9a8ec3b9c0d2a9.tgz",
- "integrity": "sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg==",
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz",
+ "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==",
"dev": true,
- "requires": {
- "chalk": "2.2.2"
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.8"
}
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/core-util-is/-/core-util-is-1.0.2/b5fd54220aa2bc5ab57aab7140c940754503c1a7.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz",
+ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==",
+ "dev": true,
+ "license": "MIT"
},
- "cosmiconfig": {
- "version": "2.2.2",
- "resolved": "http://npm.trustu.pre/cosmiconfig/-/cosmiconfig-2.2.2/6173cebd56fac042c1f4390edf7af6c07c7cb892.tgz",
- "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz",
+ "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==",
"dev": true,
- "requires": {
- "is-directory": "0.3.1",
- "js-yaml": "3.7.0",
- "minimist": "1.2.0",
- "object-assign": "4.1.1",
- "os-homedir": "1.0.2",
- "parse-json": "2.2.0",
- "require-from-string": "1.2.1"
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/fast-memoize": "2.2.7",
+ "@formatjs/intl-localematcher": "0.6.2",
+ "decimal.js": "^10.4.3",
+ "tslib": "^2.8.0"
}
},
- "coveralls": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/coveralls/-/coveralls-3.0.0/22ef730330538080d29b8c151dc9146afde88a99.tgz",
- "integrity": "sha512-ZppXR9y5PraUOrf/DzHJY6gzNUhXYE3b9D43xEXs4QYZ7/Oe0Gy0CS+IPKWFfvQFXB3RG9QduaQUFehzSpGAFw==",
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz",
+ "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==",
"dev": true,
- "requires": {
- "js-yaml": "3.7.0",
- "lcov-parse": "0.0.10",
- "log-driver": "1.2.5",
- "minimist": "1.2.0",
- "request": "2.81.0"
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.8.0"
}
},
- "create-ecdh": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/create-ecdh/-/create-ecdh-4.0.0/888c723596cdf7612f6498233eebd7a35301737d.tgz",
- "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
+ "node_modules/@formatjs/icu-messageformat-parser": {
+ "version": "2.11.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz",
+ "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "elliptic": "6.4.0"
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.3.6",
+ "@formatjs/icu-skeleton-parser": "1.8.16",
+ "tslib": "^2.8.0"
}
},
- "create-hash": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/create-hash/-/create-hash-1.1.3/606042ac8b9262750f483caddab0f5819172d8fd.tgz",
- "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
+ "node_modules/@formatjs/icu-skeleton-parser": {
+ "version": "1.8.16",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz",
+ "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==",
"dev": true,
- "requires": {
- "cipher-base": "1.0.4",
- "inherits": "2.0.3",
- "ripemd160": "2.0.1",
- "sha.js": "2.4.9"
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.3.6",
+ "tslib": "^2.8.0"
}
},
- "create-hmac": {
- "version": "1.1.6",
- "resolved": "http://npm.trustu.pre/create-hmac/-/create-hmac-1.1.6/acb9e221a4e17bdb076e90657c42b93e3726cf06.tgz",
- "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz",
+ "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==",
"dev": true,
- "requires": {
- "cipher-base": "1.0.4",
- "create-hash": "1.1.3",
- "inherits": "2.0.3",
- "ripemd160": "2.0.1",
- "safe-buffer": "5.1.1",
- "sha.js": "2.4.9"
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.8.0"
}
},
- "cross-spawn": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/cross-spawn/-/cross-spawn-3.0.1/1256037ecb9f0c5f79e3d6ef135e30770184b982.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "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,
- "optional": true,
- "requires": {
- "lru-cache": "4.1.1",
- "which": "1.3.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "crypt": {
- "version": "0.0.2",
- "resolved": "http://npm.trustu.pre/crypt/-/crypt-0.0.2/88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
- "dev": true
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "http://npm.trustu.pre/cryptiles/-/cryptiles-2.0.5/3bdfecdc608147c1c67202fa291e7dca59eaa3b8.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "dev": true,
- "requires": {
- "boom": "2.10.1"
- }
- },
- "crypto-browserify": {
- "version": "3.12.0",
- "resolved": "http://npm.trustu.pre/crypto-browserify/-/crypto-browserify-3.12.0/396cf9f3137f03e4b8e532c58f698254e00f80ec.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
- "requires": {
- "browserify-cipher": "1.0.0",
- "browserify-sign": "4.0.4",
- "create-ecdh": "4.0.0",
- "create-hash": "1.1.3",
- "create-hmac": "1.1.6",
- "diffie-hellman": "5.0.2",
- "inherits": "2.0.3",
- "pbkdf2": "3.0.14",
- "public-encrypt": "4.0.0",
- "randombytes": "2.0.5",
- "randomfill": "1.0.3"
- }
- },
- "css-color-names": {
- "version": "0.0.4",
- "resolved": "http://npm.trustu.pre/css-color-names/-/css-color-names-0.0.4/808adc2e79cf84738069b646cb20ec27beb629e0.tgz",
- "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
- "dev": true
- },
- "css-loader": {
- "version": "0.28.7",
- "resolved": "http://npm.trustu.pre/css-loader/-/css-loader-0.28.7/5f2ee989dd32edd907717f953317656160999c1b.tgz",
- "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==",
- "dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "css-selector-tokenizer": "0.7.0",
- "cssnano": "3.10.0",
- "icss-utils": "2.1.0",
- "loader-utils": "1.1.0",
- "lodash.camelcase": "4.3.0",
- "object-assign": "4.1.1",
- "postcss": "5.2.18",
- "postcss-modules-extract-imports": "1.1.0",
- "postcss-modules-local-by-default": "1.2.0",
- "postcss-modules-scope": "1.1.0",
- "postcss-modules-values": "1.3.0",
- "postcss-value-parser": "3.3.0",
- "source-list-map": "2.0.0"
- }
- },
- "css-parse": {
- "version": "1.7.0",
- "resolved": "http://npm.trustu.pre/css-parse/-/css-parse-1.7.0/321f6cf73782a6ff751111390fc05e2c657d8c9b.tgz",
- "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
- "dev": true
- },
- "css-select": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/css-select/-/css-select-1.2.0/2b3a110539c5355f1cd8d314623e870b121ec858.tgz",
- "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
"dev": true,
- "requires": {
- "boolbase": "1.0.0",
- "css-what": "2.1.0",
- "domutils": "1.5.1",
- "nth-check": "1.0.1"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "css-selector-tokenizer": {
- "version": "0.7.0",
- "resolved": "http://npm.trustu.pre/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0/e6988474ae8c953477bf5e7efecfceccd9cf4c86.tgz",
- "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
"dev": true,
- "requires": {
- "cssesc": "0.1.0",
- "fastparse": "1.1.1",
- "regexpu-core": "1.0.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "css-what": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/css-what/-/css-what-2.1.0/9467d032c38cfaefb9f2d79501253062f87fa1bd.tgz",
- "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
- "dev": true
- },
- "cssauron": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/cssauron/-/cssauron-1.4.0/a6602dff7e04a8306dc0db9a551e92e8b5662ad8.tgz",
- "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
"dev": true,
- "requires": {
- "through": "2.3.8"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
}
},
- "cssesc": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/cssesc/-/cssesc-0.1.0/c814903e45623371a0477b40109aaafbeeaddbb4.tgz",
- "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
- "dev": true
- },
- "cssnano": {
- "version": "3.10.0",
- "resolved": "http://npm.trustu.pre/cssnano/-/cssnano-3.10.0/4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38.tgz",
- "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
- "dev": true,
- "requires": {
- "autoprefixer": "6.7.7",
- "decamelize": "1.2.0",
- "defined": "1.0.0",
- "has": "1.0.1",
- "object-assign": "4.1.1",
- "postcss": "5.2.18",
- "postcss-calc": "5.3.1",
- "postcss-colormin": "2.2.2",
- "postcss-convert-values": "2.6.1",
- "postcss-discard-comments": "2.0.4",
- "postcss-discard-duplicates": "2.1.0",
- "postcss-discard-empty": "2.1.0",
- "postcss-discard-overridden": "0.1.1",
- "postcss-discard-unused": "2.2.3",
- "postcss-filter-plugins": "2.0.2",
- "postcss-merge-idents": "2.1.7",
- "postcss-merge-longhand": "2.0.2",
- "postcss-merge-rules": "2.1.2",
- "postcss-minify-font-values": "1.0.5",
- "postcss-minify-gradients": "1.0.5",
- "postcss-minify-params": "1.2.2",
- "postcss-minify-selectors": "2.1.1",
- "postcss-normalize-charset": "1.1.1",
- "postcss-normalize-url": "3.0.8",
- "postcss-ordered-values": "2.2.3",
- "postcss-reduce-idents": "2.4.0",
- "postcss-reduce-initial": "1.0.1",
- "postcss-reduce-transforms": "1.0.4",
- "postcss-svgo": "2.1.6",
- "postcss-unique-selectors": "2.0.2",
- "postcss-value-parser": "3.3.0",
- "postcss-zindex": "2.2.0"
- }
- },
- "csso": {
- "version": "2.3.2",
- "resolved": "http://npm.trustu.pre/csso/-/csso-2.3.2/ddd52c587033f49e94b71fc55569f252e8ff5f85.tgz",
- "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
- "requires": {
- "clap": "1.2.3",
- "source-map": "0.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "cuint": {
- "version": "0.2.2",
- "resolved": "http://npm.trustu.pre/cuint/-/cuint-0.2.2/408086d409550c2631155619e9fa7bcadc3b991b.tgz",
- "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "http://npm.trustu.pre/currently-unhandled/-/currently-unhandled-0.4.1/988df33feab191ef799a61369dd76c17adf957ea.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "node_modules/@humanwhocodes/config-array/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,
- "requires": {
- "array-find-index": "1.0.2"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "custom-event": {
+ "node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
- "resolved": "http://npm.trustu.pre/custom-event/-/custom-event-1.0.1/5d02a46850adf1b4a317946a3928fccb5bfd0425.tgz",
- "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
- "dev": true
- },
- "cyclist": {
- "version": "0.2.2",
- "resolved": "http://npm.trustu.pre/cyclist/-/cyclist-0.2.2/1b33792e11e914a2fd6d6ed6447464444e5fa640.tgz",
- "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
- "dev": true
- },
- "d": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/d/-/d-1.0.0/754bb5bfe55451da69a58b94d45f4c5b0462d58f.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "requires": {
- "es5-ext": "0.10.37"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "dargs": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/dargs/-/dargs-4.1.0/03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17.tgz",
- "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
"dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
- }
+ "license": "BSD-3-Clause"
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "http://npm.trustu.pre/dashdash/-/dashdash-1.14.1/853cfa0f7cbe2fed5de20326b8dd581035f6e2f0.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
},
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-1.0.0/f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "date-now": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/date-now/-/date-now-0.1.4/eaf439fd4d4848ad74e5cc7dbef200672b9e345b.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
- "dev": true
- },
- "dateformat": {
- "version": "1.0.12",
- "resolved": "http://npm.trustu.pre/dateformat/-/dateformat-1.0.12/9f124b67594c937ff706932e4a642cca8dbbfee9.tgz",
- "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz",
+ "integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==",
"dev": true,
- "requires": {
- "get-stdin": "4.0.1",
- "meow": "3.7.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "debug": {
- "version": "2.6.9",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.6.9/5d128515df134ff327e90a4c93f4e077a536341f.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/@inquirer/checkbox": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.0.tgz",
+ "integrity": "sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==",
"dev": true,
- "requires": {
- "ms": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "decamelize": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/decamelize/-/decamelize-1.2.0/f6534d15148269b20352e7bee26f501f9a191290.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "deep-equal": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/deep-equal/-/deep-equal-1.0.1/f5d260292b660e084eff4cdbc9f08ad3247448b5.tgz",
- "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/deep-is/-/deep-is-0.1.3/b369d6fb5dbc13eecf524f91b070feedc357cf34.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "default-require-extensions": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/default-require-extensions/-/default-require-extensions-1.0.0/f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8.tgz",
- "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
+ "node_modules/@inquirer/confirm": {
+ "version": "5.1.14",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz",
+ "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==",
"dev": true,
- "requires": {
- "strip-bom": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.1.15",
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "define-properties": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/define-properties/-/define-properties-1.1.2/83a73f2fea569898fb737193c8f873caf6d45c94.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "node_modules/@inquirer/core": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz",
+ "integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==",
"dev": true,
- "requires": {
- "foreach": "2.0.5",
- "object-keys": "1.0.11"
- }
- },
- "defined": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/defined/-/defined-1.0.0/c98d9bcef75674188e110969151199e39b1fa693.tgz",
- "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
- "dev": true
- },
- "del": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/del/-/del-3.0.0/53ecf699ffcbcb39637691ab13baf160819766e5.tgz",
- "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
- "dev": true,
- "requires": {
- "globby": "6.1.0",
- "is-path-cwd": "1.0.0",
- "is-path-in-cwd": "1.0.0",
- "p-map": "1.2.0",
- "pify": "3.0.0",
- "rimraf": "2.6.2"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/pify/-/pify-3.0.0/e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "cli-width": "^4.1.0",
+ "mute-stream": "^2.0.0",
+ "signal-exit": "^4.1.0",
+ "wrap-ansi": "^6.2.0",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
}
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/delayed-stream/-/delayed-stream-1.0.0/df3ae199acadfb7d440aaae0b29e2272b24ec619.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/delegates/-/delegates-1.0.0/84c6e159b81904fdca59a0ef44cd870d31250f9a.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
- "denodeify": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/denodeify/-/denodeify-1.2.1/3a36287f5034e699e7577901052c2e6c94251631.tgz",
- "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
- "dev": true
- },
- "depd": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/depd/-/depd-1.1.1/5783b4e1c459f06fa5ca27f991f3d06e7a310359.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
- "dev": true
- },
- "des.js": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/des.js/-/des.js-1.0.0/c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc.tgz",
- "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "node_modules/@inquirer/editor": {
+ "version": "4.2.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.21.tgz",
+ "integrity": "sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "minimalistic-assert": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/external-editor": "^1.0.2",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "destroy": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/destroy/-/destroy-1.0.4/978857442c44749e4206613e37946205826abd80.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
- },
- "detect-indent": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/detect-indent/-/detect-indent-4.0.0/f76d064352cdf43a1cb6ce619c4ee3a9475de208.tgz",
- "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "node_modules/@inquirer/expand": {
+ "version": "4.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.21.tgz",
+ "integrity": "sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==",
"dev": true,
- "requires": {
- "repeating": "2.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "detect-node": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/detect-node/-/detect-node-2.0.3/a2033c09cc8e158d37748fbde7507832bd6ce127.tgz",
- "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
- "dev": true
- },
- "di": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/di/-/di-0.0.1/806649326ceaa7caa3306d75d985ea2748ba913c.tgz",
- "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
- "dev": true
- },
- "diff": {
- "version": "3.4.0",
- "resolved": "http://npm.trustu.pre/diff/-/diff-3.4.0/b1d85507daf3964828de54b37d0d73ba67dda56c.tgz",
- "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==",
- "dev": true
- },
- "diffie-hellman": {
- "version": "5.0.2",
- "resolved": "http://npm.trustu.pre/diffie-hellman/-/diffie-hellman-5.0.2/b5835739270cfe26acf632099fded2a07f209e5e.tgz",
- "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz",
+ "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "miller-rabin": "4.0.1",
- "randombytes": "2.0.5"
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^2.1.0",
+ "iconv-lite": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "dns-equal": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/dns-equal/-/dns-equal-1.0.0/b39e7f1da6eb0a75ba9c17324b34753c47e0654d.tgz",
- "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
- "dev": true
- },
- "dns-packet": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/dns-packet/-/dns-packet-1.2.2/a8a26bec7646438963fc86e06f8f8b16d6c8bf7a.tgz",
- "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==",
+ "node_modules/@inquirer/external-editor/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
"dev": true,
- "requires": {
- "ip": "1.1.5",
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "dns-txt": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/dns-txt/-/dns-txt-2.0.2/b91d806f5d27188e4ab3e7d107d881a1cc4642b6.tgz",
- "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz",
+ "integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==",
"dev": true,
- "requires": {
- "buffer-indexof": "1.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "docopt": {
- "version": "0.6.2",
- "resolved": "http://npm.trustu.pre/docopt/-/docopt-0.6.2/b28e9e2220da5ec49f7ea5bb24a47787405eeb11.tgz",
- "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=",
- "dev": true
- },
- "dom-converter": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/dom-converter/-/dom-converter-0.1.4/a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b.tgz",
- "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
+ "node_modules/@inquirer/input": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.5.tgz",
+ "integrity": "sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==",
"dev": true,
- "requires": {
- "utila": "0.3.3"
- },
+ "license": "MIT",
"dependencies": {
- "utila": {
- "version": "0.3.3",
- "resolved": "http://npm.trustu.pre/utila/-/utila-0.3.3/d7e8e7d7e309107092b05f8d9688824d633a4226.tgz",
- "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
- "dev": true
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
}
}
},
- "dom-serialize": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/dom-serialize/-/dom-serialize-2.2.1/562ae8999f44be5ea3076f5419dcd59eb43ac95b.tgz",
- "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+ "node_modules/@inquirer/number": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.21.tgz",
+ "integrity": "sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==",
"dev": true,
- "requires": {
- "custom-event": "1.0.1",
- "ent": "2.2.0",
- "extend": "3.0.1",
- "void-elements": "2.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/dom-serializer/-/dom-serializer-0.1.0/073c697546ce0780ce23be4a28e293e40bc30c82.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "node_modules/@inquirer/password": {
+ "version": "4.0.21",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.21.tgz",
+ "integrity": "sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==",
"dev": true,
- "requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
- },
+ "license": "MIT",
"dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/domelementtype/-/domelementtype-1.1.3/bd28773e2642881aec51544924299c5cd822185b.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
- "dev": true
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
}
}
},
- "domain-browser": {
- "version": "1.1.7",
- "resolved": "http://npm.trustu.pre/domain-browser/-/domain-browser-1.1.7/867aa4b093faa05f1de08c06f4d7b21fdf8698bc.tgz",
- "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
- "dev": true
- },
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/domelementtype/-/domelementtype-1.3.0/b17aed82e8ab59e52dd9c19b1756e0fc187204c2.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
- "dev": true
- },
- "domhandler": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/domhandler/-/domhandler-2.1.0/d2646f5e57f6c3bab11cf6cb05d3c0acf7412594.tgz",
- "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+ "node_modules/@inquirer/prompts": {
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.2.tgz",
+ "integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==",
"dev": true,
- "requires": {
- "domelementtype": "1.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/checkbox": "^4.2.1",
+ "@inquirer/confirm": "^5.1.14",
+ "@inquirer/editor": "^4.2.17",
+ "@inquirer/expand": "^4.0.17",
+ "@inquirer/input": "^4.2.1",
+ "@inquirer/number": "^3.0.17",
+ "@inquirer/password": "^4.0.17",
+ "@inquirer/rawlist": "^4.1.5",
+ "@inquirer/search": "^3.1.0",
+ "@inquirer/select": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "domino": {
- "version": "1.0.30",
- "resolved": "http://npm.trustu.pre/domino/-/domino-1.0.30/54a4154ecae968616680f8feba3cedff355c71f4.tgz",
- "integrity": "sha512-ikq8WiDSkICdkElud317F2Sigc6A3EDpWsxWBwIZqOl95km4p/Vc9Rj98id7qKgsjDmExj0AVM7JOd4bb647Xg==",
- "dev": true
- },
- "domutils": {
- "version": "1.5.1",
- "resolved": "http://npm.trustu.pre/domutils/-/domutils-1.5.1/dcd8488a26f563d61079e48c9f7b7e32373682cf.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "node_modules/@inquirer/rawlist": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.9.tgz",
+ "integrity": "sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==",
"dev": true,
- "requires": {
- "dom-serializer": "0.1.0",
- "domelementtype": "1.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "dot-prop": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/dot-prop/-/dot-prop-3.0.0/1b708af094a49c9a0e7dbcad790aba539dac1177.tgz",
- "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "node_modules/@inquirer/search": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.0.tgz",
+ "integrity": "sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==",
"dev": true,
- "requires": {
- "is-obj": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "duplexer2": {
- "version": "0.0.2",
- "resolved": "http://npm.trustu.pre/duplexer2/-/duplexer2-0.0.2/c614dcf67e2fb14995a91711e5a617e8a60a31db.tgz",
- "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "node_modules/@inquirer/select": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.0.tgz",
+ "integrity": "sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==",
"dev": true,
- "requires": {
- "readable-stream": "1.1.14"
- },
+ "license": "MIT",
"dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-0.0.1/8a18acfca9a8f4177e09abfc6038939b05d1eedf.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-1.1.14/7cf4c54ef648e3813084c636dd2079e166c081d9.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-0.10.31/62e203bc41766c6c28c9fc84301dab1c5310fa94.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
+ "@inquirer/ansi": "^1.0.1",
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/figures": "^1.0.14",
+ "@inquirer/type": "^3.0.9",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
}
}
},
- "duplexify": {
- "version": "3.5.1",
- "resolved": "http://npm.trustu.pre/duplexify/-/duplexify-3.5.1/4e1516be68838bc90a49994f0b39a6e5960befcd.tgz",
- "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
+ "node_modules/@inquirer/type": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz",
+ "integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==",
"dev": true,
- "requires": {
- "end-of-stream": "1.4.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.3",
- "stream-shift": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/ecc-jsbn/-/ecc-jsbn-0.1.1/0fc73a9ed5f0d53c38193398523ef7e543777505.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
"dev": true,
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": "20 || >=22"
}
},
- "ee-first": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/ee-first/-/ee-first-1.1.1/590c61156b0ae2f4f0255732a158b266bc56b21d.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "ejs": {
- "version": "2.5.7",
- "resolved": "http://npm.trustu.pre/ejs/-/ejs-2.5.7/cc872c168880ae3c7189762fd5ffc00896c9518a.tgz",
- "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.3.28",
- "resolved": "http://npm.trustu.pre/electron-to-chromium/-/electron-to-chromium-1.3.28/8dd4e6458086644e9f9f0a1cf32e2a1f9dffd9ee.tgz",
- "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=",
- "dev": true
- },
- "elliptic": {
- "version": "6.4.0",
- "resolved": "http://npm.trustu.pre/elliptic/-/elliptic-6.4.0/cac9af8762c85836187003c8dfe193e5e2eae5df.tgz",
- "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "brorand": "1.1.0",
- "hash.js": "1.1.3",
- "hmac-drbg": "1.0.1",
- "inherits": "2.0.3",
- "minimalistic-assert": "1.0.0",
- "minimalistic-crypto-utils": "1.0.1"
- }
- },
- "ember-cli-string-utils": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0/39b677fc2805f55173735376fcef278eaa4452a1.tgz",
- "integrity": "sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE=",
- "dev": true
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/emojis-list/-/emojis-list-2.1.0/4daa4d9db00f9819880c79fa457ae5b09a1fd389.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/encodeurl/-/encodeurl-1.0.1/79e3d58655346909fe6f0f45a5de68103b294d20.tgz",
- "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
- "dev": true
- },
- "end-of-stream": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/end-of-stream/-/end-of-stream-1.4.0/7a90d833efda6cfa6eac0f4949dbb0fad3a63206.tgz",
- "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
- "dev": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "engine.io": {
- "version": "1.8.3",
- "resolved": "http://npm.trustu.pre/engine.io/-/engine.io-1.8.3/8de7f97895d20d39b85f88eeee777b2bd42b13d4.tgz",
- "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
- "dev": true,
- "requires": {
- "accepts": "1.3.3",
- "base64id": "1.0.0",
- "cookie": "0.3.1",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "ws": "1.1.2"
- },
- "dependencies": {
- "accepts": {
- "version": "1.3.3",
- "resolved": "http://npm.trustu.pre/accepts/-/accepts-1.3.3/c3ca7434938648c3e0d9c1e328dd68b622c284ca.tgz",
- "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
- "dev": true,
- "requires": {
- "mime-types": "2.1.17",
- "negotiator": "0.6.1"
- }
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.3.3/40c453e67e6e13c901ddec317af8986cda9eff8c.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.2/ae25cf2512b3885a1d95d7f037868d8431124765.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
+ "license": "MIT",
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
}
},
- "engine.io-client": {
- "version": "1.8.3",
- "resolved": "http://npm.trustu.pre/engine.io-client/-/engine.io-client-1.8.3/1798ed93451246453d4c6f635d7a201fe940d5ab.tgz",
- "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
- "dev": true,
- "requires": {
- "component-emitter": "1.2.1",
- "component-inherit": "0.0.3",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parsejson": "0.0.3",
- "parseqs": "0.0.5",
- "parseuri": "0.0.5",
- "ws": "1.1.2",
- "xmlhttprequest-ssl": "1.5.3",
- "yeast": "0.1.2"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/component-emitter/-/component-emitter-1.2.1/137918d6d78283f7df7a6b7c5a63e140e69425e6.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.3.3/40c453e67e6e13c901ddec317af8986cda9eff8c.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.2/ae25cf2512b3885a1d95d7f037868d8431124765.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "engine.io-parser": {
- "version": "1.3.2",
- "resolved": "http://npm.trustu.pre/engine.io-parser/-/engine.io-parser-1.3.2/937b079f0007d0893ec56d46cb220b8cb435220a.tgz",
- "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "after": "0.8.2",
- "arraybuffer.slice": "0.0.6",
- "base64-arraybuffer": "0.1.5",
- "blob": "0.0.4",
- "has-binary": "0.1.7",
- "wtf-8": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "enhanced-resolve": {
- "version": "3.4.1",
- "resolved": "http://npm.trustu.pre/enhanced-resolve/-/enhanced-resolve-3.4.1/0421e339fd71419b3da13d129b3979040230476e.tgz",
- "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "memory-fs": "0.4.1",
- "object-assign": "4.1.1",
- "tapable": "0.2.8"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "ent": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/ent/-/ent-2.2.0/e964219325a21d05f44466a2f686ed6ce5f5dd1d.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
- "dev": true
- },
- "entities": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/entities/-/entities-1.1.1/6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
- "dev": true
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
},
- "errno": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/errno/-/errno-0.1.4/b896e23a9e5e8ba33871fc996abd3635fc9a1c7d.tgz",
- "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
- "requires": {
- "prr": "0.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "error-ex": {
- "version": "1.3.1",
- "resolved": "http://npm.trustu.pre/error-ex/-/error-ex-1.3.1/f855a86ce61adc4e8621c3cda21e7a7612c3a8dc.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "requires": {
- "is-arrayish": "0.2.1"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "es-abstract": {
- "version": "1.10.0",
- "resolved": "http://npm.trustu.pre/es-abstract/-/es-abstract-1.10.0/1ecb36c197842a00d8ee4c2dfd8646bb97d60864.tgz",
- "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==",
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
- "requires": {
- "es-to-primitive": "1.1.1",
- "function-bind": "1.1.1",
- "has": "1.0.1",
- "is-callable": "1.1.3",
- "is-regex": "1.0.4"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "es-to-primitive": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/es-to-primitive/-/es-to-primitive-1.1.1/45355248a88979034b6792e19bb81f2b7975dd0d.tgz",
- "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dev": true,
- "requires": {
- "is-callable": "1.1.3",
- "is-date-object": "1.0.1",
- "is-symbol": "1.0.1"
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "es5-ext": {
- "version": "0.10.37",
- "resolved": "http://npm.trustu.pre/es5-ext/-/es5-ext-0.10.37/0ee741d148b80069ba27d020393756af257defc3.tgz",
- "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
+ "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==",
"dev": true,
- "requires": {
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/es6-iterator/-/es6-iterator-2.0.3/a7de889141a05a94b0854403b2d0a0fbfa98f3b7.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-symbol": "3.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "es6-map": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/es6-map/-/es6-map-0.1.5/9136e0503dcc06a301690f0bb14ff4e364e949f0.tgz",
- "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-set": "0.1.5",
- "es6-symbol": "3.1.1",
- "event-emitter": "0.3.5"
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
- "es6-promise": {
- "version": "3.0.2",
- "resolved": "http://npm.trustu.pre/es6-promise/-/es6-promise-3.0.2/010d5858423a5f118979665f46486a95c6ee2bb6.tgz",
- "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
- "dev": true
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
},
- "es6-set": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/es6-set/-/es6-set-0.1.5/d2b3ec5d4d800ced818db538d28974db0a73ccb1.tgz",
- "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "node_modules/@keyv/bigmap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.1.0.tgz",
+ "integrity": "sha512-MX7XIUNwVRK+hjZcAbNJ0Z8DREo+Weu9vinBOjGU1thEi9F6vPhICzBbk4CCf3eEefKRz7n6TfZXwUFZTSgj8Q==",
"dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1",
- "event-emitter": "0.3.5"
+ "license": "MIT",
+ "dependencies": {
+ "hookified": "^1.12.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "keyv": "^5.5.3"
}
},
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "http://npm.trustu.pre/es6-symbol/-/es6-symbol-3.1.1/bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "node_modules/@keyv/serialize": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz",
+ "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==",
"dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- }
+ "license": "MIT"
},
- "es6-weak-map": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/es6-weak-map/-/es6-weak-map-2.0.2/5e3ab32251ffd1538a1f8e5ffa1357772f92d96f.tgz",
- "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "node_modules/@listr2/prompt-adapter-inquirer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.1.tgz",
+ "integrity": "sha512-3XFmGwm3u6ioREG+ynAQB7FoxfajgQnMhIu8wC5eo/Lsih4aKDg0VuIMGaOsYn7hJSJagSeaD4K8yfpkEoDEmA==",
"dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/type": "^3.0.7"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@inquirer/prompts": ">= 3 < 8",
+ "listr2": "9.0.1"
}
},
- "escape-html": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/escape-html/-/escape-html-1.0.3/0258eae4d3d0c0974de1c169188ef0051d1d1988.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/escape-string-regexp/-/escape-string-regexp-1.0.5/1b61c0562190a8dff6ae3bb2cf0200ca130b86d4.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
+ "node_modules/@lit-labs/ssr-dom-shim": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz",
+ "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
- "escodegen": {
- "version": "1.8.1",
- "resolved": "http://npm.trustu.pre/escodegen/-/escodegen-1.8.1/5a5b53af4693110bebb0867aa3430dd3b70a1018.tgz",
- "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
- "dev": true,
- "requires": {
- "esprima": "2.7.3",
- "estraverse": "1.9.3",
- "esutils": "2.0.2",
- "optionator": "0.8.2",
- "source-map": "0.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "1.9.3",
- "resolved": "http://npm.trustu.pre/estraverse/-/estraverse-1.9.3/af67f2dc922582415950926091a4005d29c9bb44.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
- "dev": true
- },
- "source-map": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.2.0/dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- }
+ "node_modules/@lit/react": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.6.tgz",
+ "integrity": "sha512-QIss8MPh6qUoFJmuaF4dSHts3qCsA36S3HcOLiNPShxhgYPr4XJRnCBKPipk85sR9xr6TQrOcDMfexwbNdJHYA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peerDependencies": {
+ "@types/react": "17 || 18"
}
},
- "escope": {
- "version": "3.6.0",
- "resolved": "http://npm.trustu.pre/escope/-/escope-3.6.0/e01975e812781a163a6dadfdd80398dc64c889c3.tgz",
- "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+ "node_modules/@lit/reactive-element": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
+ "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
"dev": true,
- "requires": {
- "es6-map": "0.1.5",
- "es6-weak-map": "2.0.2",
- "esrecurse": "4.2.0",
- "estraverse": "4.2.0"
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.2.0"
}
},
- "esprima": {
- "version": "2.7.3",
- "resolved": "http://npm.trustu.pre/esprima/-/esprima-2.7.3/96e3b70d5779f6ad49cd032673d1c312767ba581.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
+ "node_modules/@lmdb/lmdb-darwin-arm64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz",
+ "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-darwin-x64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz",
+ "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz",
+ "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz",
+ "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-x64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz",
+ "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-win32-arm64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz",
+ "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-win32-x64": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz",
+ "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "esrecurse": {
- "version": "4.2.0",
- "resolved": "http://npm.trustu.pre/esrecurse/-/esrecurse-4.2.0/fa9568d98d3823f9a41d91e902dcab9ea6e5b163.tgz",
- "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "node_modules/@modelcontextprotocol/sdk": {
+ "version": "1.17.3",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz",
+ "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==",
"dev": true,
- "requires": {
- "estraverse": "4.2.0",
- "object-assign": "4.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.6",
+ "content-type": "^1.0.5",
+ "cors": "^2.8.5",
+ "cross-spawn": "^7.0.5",
+ "eventsource": "^3.0.2",
+ "eventsource-parser": "^3.0.0",
+ "express": "^5.0.1",
+ "express-rate-limit": "^7.5.0",
+ "pkce-challenge": "^5.0.0",
+ "raw-body": "^3.0.0",
+ "zod": "^3.23.8",
+ "zod-to-json-schema": "^3.24.1"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "estraverse": {
- "version": "4.2.0",
- "resolved": "http://npm.trustu.pre/estraverse/-/estraverse-4.2.0/0dee3fed31fcd469618ce7342099fc1afa0bdb13.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/esutils/-/esutils-2.0.2/0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "http://npm.trustu.pre/etag/-/etag-1.8.1/41ae2eeb65efa62268aebfea83ac7d79299b0887.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true
+ "node_modules/@modelcontextprotocol/sdk/node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "event-emitter": {
- "version": "0.3.5",
- "resolved": "http://npm.trustu.pre/event-emitter/-/event-emitter-0.3.5/df8c69eef1647923c7157b9ce83840610b02cc39.tgz",
- "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/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": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "eventemitter3": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/eventemitter3/-/eventemitter3-1.2.0/1c86991d816ad1e504750e73874224ecf3bec508.tgz",
- "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
- "dev": true
+ "node_modules/@modelcontextprotocol/sdk/node_modules/body-parser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
+ "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "^3.1.2",
+ "content-type": "^1.0.5",
+ "debug": "^4.4.0",
+ "http-errors": "^2.0.0",
+ "iconv-lite": "^0.6.3",
+ "on-finished": "^2.4.1",
+ "qs": "^6.14.0",
+ "raw-body": "^3.0.0",
+ "type-is": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
- "events": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/events/-/events-1.1.1/9ebdb7635ad099c70dcc4c2a1f5004288e8bd924.tgz",
- "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
- "dev": true
+ "node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
+ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "eventsource": {
- "version": "0.1.6",
- "resolved": "http://npm.trustu.pre/eventsource/-/eventsource-0.1.6/0acede849ed7dd1ccc32c811bb11b944d4f29232.tgz",
- "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
"dev": true,
- "requires": {
- "original": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
}
},
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/evp_bytestokey/-/evp_bytestokey-1.0.3/7fcbdb198dc71959432efe13842684e0525acb02.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/express": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
+ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
"dev": true,
- "requires": {
- "md5.js": "1.3.4",
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "^2.0.0",
+ "body-parser": "^2.2.0",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "finalhandler": "^2.1.0",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "merge-descriptors": "^2.0.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "^2.4.1",
+ "once": "^1.4.0",
+ "parseurl": "^1.3.3",
+ "proxy-addr": "^2.0.7",
+ "qs": "^6.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "execa": {
- "version": "0.7.0",
- "resolved": "http://npm.trustu.pre/execa/-/execa-0.7.0/944becd34cc41ee32a63a9faf27ad5a65fc59777.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/cross-spawn/-/cross-spawn-5.1.0/e8bd0efee58fcff6f8f94510a0a554bbfa235449.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "4.1.1",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- }
- }
+ "node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
+ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "on-finished": "^2.4.1",
+ "parseurl": "^1.3.3",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "exit": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/exit/-/exit-0.1.2/0632638f8d877cc82107d30a0fff1a17cba1cd0c.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true
+ "node_modules/@modelcontextprotocol/sdk/node_modules/fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "expand-braces": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/expand-braces/-/expand-braces-0.1.2/488b1d1d2451cb3d3a6b192cfc030f44c5855fea.tgz",
- "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
- "dev": true,
- "requires": {
- "array-slice": "0.2.3",
- "array-unique": "0.2.1",
- "braces": "0.1.5"
- },
- "dependencies": {
- "braces": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/braces/-/braces-0.1.5/c085711085291d8b75fdd74eab0f8597280711e6.tgz",
- "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
- "dev": true,
- "requires": {
- "expand-range": "0.1.1"
- }
- },
- "expand-range": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/expand-range/-/expand-range-0.1.1/4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044.tgz",
- "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
- "dev": true,
- "requires": {
- "is-number": "0.1.1",
- "repeat-string": "0.2.2"
- }
- },
- "is-number": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/is-number/-/is-number-0.1.1/69a7af116963d47206ec9bd9b48a14216f1e3806.tgz",
- "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
- "dev": true
- },
- "repeat-string": {
- "version": "0.2.2",
- "resolved": "http://npm.trustu.pre/repeat-string/-/repeat-string-0.2.2/c7a8d3236068362059a7e4651fc6884e8b1fb4ae.tgz",
- "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
- "dev": true
- }
+ "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/expand-brackets/-/expand-brackets-0.1.5/df07284e342a807cd733ac5af72411e581d1177b.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "node_modules/@modelcontextprotocol/sdk/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,
+ "license": "MIT"
+ },
+ "node_modules/@modelcontextprotocol/sdk/node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
"dev": true,
- "requires": {
- "is-posix-bracket": "0.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "expand-range": {
- "version": "1.8.2",
- "resolved": "http://npm.trustu.pre/expand-range/-/expand-range-1.8.2/a299effd335fe2721ebae8e257ec79644fc85337.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
"dev": true,
- "requires": {
- "fill-range": "2.2.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "exports-loader": {
- "version": "0.6.4",
- "resolved": "http://npm.trustu.pre/exports-loader/-/exports-loader-0.6.4/d70fc6121975b35fc12830cf52754be2740fc886.tgz",
- "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/mime-types": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
+ "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
"dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "source-map": "0.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "express": {
- "version": "4.16.2",
- "resolved": "http://npm.trustu.pre/express/-/express-4.16.2/e35c6dfe2d64b7dca0a5cd4f21781be3299e076c.tgz",
- "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"dev": true,
- "requires": {
- "accepts": "1.3.4",
- "array-flatten": "1.1.1",
- "body-parser": "1.18.2",
- "content-disposition": "0.5.2",
- "content-type": "1.0.4",
- "cookie": "0.3.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "1.1.1",
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "finalhandler": "1.1.0",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "1.1.2",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "2.0.2",
- "qs": "6.5.1",
- "range-parser": "1.2.0",
- "safe-buffer": "5.1.1",
- "send": "0.16.1",
- "serve-static": "1.13.1",
- "setprototypeof": "1.1.0",
- "statuses": "1.3.1",
- "type-is": "1.6.15",
- "utils-merge": "1.0.1",
- "vary": "1.1.2"
- },
- "dependencies": {
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/array-flatten/-/array-flatten-1.1.1/9a5f699051b1e7073328f2a008968b64ea2955d2.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
- "dev": true
- },
- "qs": {
- "version": "6.5.1",
- "resolved": "http://npm.trustu.pre/qs/-/qs-6.5.1/349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
- }
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "extend": {
+ "node_modules/@modelcontextprotocol/sdk/node_modules/raw-body": {
"version": "3.0.1",
- "resolved": "http://npm.trustu.pre/extend/-/extend-3.0.1/a755ea7bc1adfcc5a31ce7e762dbaadc5e636444.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
+ "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.7.0",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
},
- "extglob": {
- "version": "0.3.2",
- "resolved": "http://npm.trustu.pre/extglob/-/extglob-0.3.2/2e18ff3d2f49ab2765cec9023f011daa8d8349a1.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
"dev": true,
- "requires": {
- "is-extglob": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@modelcontextprotocol/sdk/node_modules/send": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- }
+ "debug": "^4.3.5",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "mime-types": "^3.0.1",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
- "extract-text-webpack-plugin": {
- "version": "3.0.2",
- "resolved": "http://npm.trustu.pre/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2/5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7.tgz",
- "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/serve-static": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
"dev": true,
- "requires": {
- "async": "2.6.0",
- "loader-utils": "1.1.0",
- "schema-utils": "0.3.0",
- "webpack-sources": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/extsprintf/-/extsprintf-1.3.0/96918440e3041a7a414f8c52e3c574eb3c3e1e05.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
+ "node_modules/@modelcontextprotocol/sdk/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "fancy-log": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/fancy-log/-/fancy-log-1.3.0/45be17d02bb9917d60ccffd4995c999e6c8c9948.tgz",
- "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "node_modules/@modelcontextprotocol/sdk/node_modules/type-is": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
"dev": true,
- "requires": {
- "chalk": "1.1.3",
- "time-stamp": "1.1.0"
- },
+ "license": "MIT",
"dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "time-stamp": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/time-stamp/-/time-stamp-1.1.0/764a5a11af50561921b133f3b44e618687e0f5c3.tgz",
- "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
- "dev": true
- }
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "fast-deep-equal": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/fast-deep-equal/-/fast-deep-equal-1.0.0/96256a3bc975595eb36d82e9929d060d893439ff.tgz",
- "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
- "dev": true
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0/d5142c0caee6b1189f87d3a76111064f86c8bbf2.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "http://npm.trustu.pre/fast-levenshtein/-/fast-levenshtein-2.0.6/3d8a5c66883a16a30ca8643e851f19baa7797917.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "fastparse": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/fastparse/-/fastparse-1.1.1/d1e2643b38a94d7583b479060e6c4affc94071f8.tgz",
- "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
- "dev": true
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "faye-websocket": {
- "version": "0.10.0",
- "resolved": "http://npm.trustu.pre/faye-websocket/-/faye-websocket-0.10.0/4e492f8d04dfb6f89003507f6edbf2d501e7c6f4.tgz",
- "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
+ "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "websocket-driver": "0.7.0"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "figures": {
- "version": "1.7.0",
- "resolved": "http://npm.trustu.pre/figures/-/figures-1.7.0/cbe1e3affcf1cd44b80cadfed28dc793a9701d2e.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "escape-string-regexp": "1.0.5",
- "object-assign": "4.1.1"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "file-loader": {
- "version": "1.1.5",
- "resolved": "http://npm.trustu.pre/file-loader/-/file-loader-1.1.5/91c25b6b6fbe56dae99f10a425fd64933b5c9daa.tgz",
- "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==",
+ "node_modules/@napi-rs/nice": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz",
+ "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/nice-android-arm-eabi": "1.1.1",
+ "@napi-rs/nice-android-arm64": "1.1.1",
+ "@napi-rs/nice-darwin-arm64": "1.1.1",
+ "@napi-rs/nice-darwin-x64": "1.1.1",
+ "@napi-rs/nice-freebsd-x64": "1.1.1",
+ "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1",
+ "@napi-rs/nice-linux-arm64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-arm64-musl": "1.1.1",
+ "@napi-rs/nice-linux-ppc64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-riscv64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-s390x-gnu": "1.1.1",
+ "@napi-rs/nice-linux-x64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-x64-musl": "1.1.1",
+ "@napi-rs/nice-openharmony-arm64": "1.1.1",
+ "@napi-rs/nice-win32-arm64-msvc": "1.1.1",
+ "@napi-rs/nice-win32-ia32-msvc": "1.1.1",
+ "@napi-rs/nice-win32-x64-msvc": "1.1.1"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm-eabi": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz",
+ "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "schema-utils": "0.3.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/filename-regex/-/filename-regex-2.0.1/c1c4b9bee3e09725ddb106b75c1e301fe2f18b26.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "fileset": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/fileset/-/fileset-2.0.3/8e7548a96d3cc2327ee5e674168723a333bba2a0.tgz",
- "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+ "node_modules/@napi-rs/nice-android-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz",
+ "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "glob": "7.1.2",
- "minimatch": "3.0.4"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "fill-range": {
- "version": "2.2.3",
- "resolved": "http://npm.trustu.pre/fill-range/-/fill-range-2.2.3/50b77dfd7e469bc7492470963699fe7a8485a723.tgz",
- "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
- "dev": true,
- "requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "1.1.7",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/isobject/-/isobject-2.1.0/f065561096a3f1da2ef46272f815c840d87e0c89.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
+ "node_modules/@napi-rs/nice-darwin-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz",
+ "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "finalhandler": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/finalhandler/-/finalhandler-1.1.0/ce0b6855b45853e791b2fcc680046d88253dd7f5.tgz",
- "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "node_modules/@napi-rs/nice-darwin-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz",
+ "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "statuses": "1.3.1",
- "unpipe": "1.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "find-cache-dir": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/find-cache-dir/-/find-cache-dir-1.0.0/9288e3e9e3cc3748717d39eade17cf71fc30ee6f.tgz",
- "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "node_modules/@napi-rs/nice-freebsd-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz",
+ "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "commondir": "1.0.1",
- "make-dir": "1.1.0",
- "pkg-dir": "2.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "find-up": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/find-up/-/find-up-1.1.2/6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "node_modules/@napi-rs/nice-linux-arm-gnueabihf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz",
+ "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "flatten": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/flatten/-/flatten-1.0.2/dae46a9d78fbe25292258cc1e780a41d95c03782.tgz",
- "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
- "dev": true
- },
- "flush-write-stream": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/flush-write-stream/-/flush-write-stream-1.0.2/c81b90d8746766f1a609a46809946c45dd8ae417.tgz",
- "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
+ "node_modules/@napi-rs/nice-linux-arm64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz",
+ "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "for-in": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/for-in/-/for-in-1.0.2/81068d295a8142ec0ac726c6e2200c30fb6d5e80.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "for-own": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/for-own/-/for-own-1.0.0/c63332f415cedc4b04dbfe70cf836494c53cb44b.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "node_modules/@napi-rs/nice-linux-arm64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz",
+ "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "for-in": "1.0.2"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "foreach": {
- "version": "2.0.5",
- "resolved": "http://npm.trustu.pre/foreach/-/foreach-2.0.5/0bee005018aeb260d0a3af3ae658dd0136ec1b99.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
- "dev": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/forever-agent/-/forever-agent-0.6.1/fbc71f0c41adeb37f96c577ad1ed42d8fdacca91.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.1.4",
- "resolved": "http://npm.trustu.pre/form-data/-/form-data-2.1.4/33c183acf193276ecaa98143a69e94bfee1750d1.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "node_modules/@napi-rs/nice-linux-ppc64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz",
+ "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "forwarded": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/forwarded/-/forwarded-0.1.2/98c23dab1175657b8c0573e8ceccd91b0ff18c84.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
- "dev": true
+ "node_modules/@napi-rs/nice-linux-riscv64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz",
+ "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
},
- "fresh": {
- "version": "0.5.2",
- "resolved": "http://npm.trustu.pre/fresh/-/fresh-0.5.2/3d8cadd90d976569fa835ab1f8e4b23a105605a7.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
+ "node_modules/@napi-rs/nice-linux-s390x-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz",
+ "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
},
- "from2": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/from2/-/from2-2.3.0/8bfb5502bde4a4d36cfdeea007fcca21d7e382af.tgz",
- "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "node_modules/@napi-rs/nice-linux-x64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz",
+ "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "fs-access": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/fs-access/-/fs-access-1.0.1/d6a87f262271cefebec30c553407fb995da8777a.tgz",
- "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "node_modules/@napi-rs/nice-linux-x64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz",
+ "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "null-check": "1.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "fs-extra": {
- "version": "4.0.3",
- "resolved": "http://npm.trustu.pre/fs-extra/-/fs-extra-4.0.3/0d852122e5bc5beb453fb028e9c0c9bf36340c94.tgz",
- "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "node_modules/@napi-rs/nice-openharmony-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz",
+ "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "4.0.0",
- "universalify": "0.1.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "http://npm.trustu.pre/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10/b47df53493ef911df75731e70a9ded0189db40c9.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "node_modules/@napi-rs/nice-win32-arm64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz",
+ "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "iferr": "0.1.5",
- "imurmurhash": "0.1.4",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/fs.realpath/-/fs.realpath-1.0.0/1504ad2523158caa40db4a2787cb01411994ea4f.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "node_modules/@napi-rs/nice-win32-ia32-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz",
+ "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
},
- "fsevents": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/fsevents/-/fsevents-1.1.3/11f82318f5fe7bb2cd22965a108e9306208216d8.tgz",
- "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==",
+ "node_modules/@napi-rs/nice-win32-x64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz",
+ "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MIT",
"optional": true,
- "requires": {
- "nan": "2.8.0",
- "node-pre-gyp": "0.6.39"
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ngrx/component": {
+ "version": "20.1.0",
+ "resolved": "https://registry.npmjs.org/@ngrx/component/-/component-20.1.0.tgz",
+ "integrity": "sha512-EFQdAYbSV1tkxunHviGAjNXPcv6/JQb2r1TMoin/XJYC2+r7QwBVj1lmCC1OZnhCXYXytqKmweb4g9ZkT/TYhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "^20.0.0",
+ "@angular/core": "^20.0.0",
+ "rxjs": "^6.5.3 || ^7.5.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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "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,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@npmcli/agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
+ "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.1",
+ "lru-cache": "^10.0.1",
+ "socks-proxy-agent": "^8.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/agent/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
+ "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/git": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.3.tgz",
+ "integrity": "sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/promise-spawn": "^8.0.0",
+ "ini": "^5.0.0",
+ "lru-cache": "^10.0.1",
+ "npm-pick-manifest": "^10.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@npmcli/git/node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/installed-package-contents": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz",
+ "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^4.0.0",
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/node-gyp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
+ "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/package-json": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.2.0.tgz",
+ "integrity": "sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^8.0.0",
+ "json-parse-even-better-errors": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.5.3",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@npmcli/promise-spawn": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
+ "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn/node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/redact": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz",
+ "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/run-script": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.1.0.tgz",
+ "integrity": "sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^4.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "node-gyp": "^11.0.0",
+ "proc-log": "^5.0.0",
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@opentelemetry/api": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
+ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@opentelemetry/api-logs": {
+ "version": "0.57.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz",
+ "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/context-async-hooks": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz",
+ "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.10.0"
+ }
+ },
+ "node_modules/@opentelemetry/core": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz",
+ "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "1.28.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.10.0"
+ }
+ },
+ "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
+ "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation": {
+ "version": "0.57.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz",
+ "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/api-logs": "0.57.2",
+ "@types/shimmer": "^1.2.0",
+ "import-in-the-middle": "^1.8.1",
+ "require-in-the-middle": "^7.1.1",
+ "semver": "^7.5.2",
+ "shimmer": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-amqplib": {
+ "version": "0.46.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz",
+ "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-connect": {
+ "version": "0.43.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz",
+ "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@types/connect": "3.4.38"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-dataloader": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz",
+ "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-express": {
+ "version": "0.47.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz",
+ "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-fs": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz",
+ "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-generic-pool": {
+ "version": "0.43.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz",
+ "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-graphql": {
+ "version": "0.47.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz",
+ "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-hapi": {
+ "version": "0.45.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz",
+ "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-http": {
+ "version": "0.57.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz",
+ "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/instrumentation": "0.57.2",
+ "@opentelemetry/semantic-conventions": "1.28.0",
+ "forwarded-parse": "2.1.2",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
+ "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-ioredis": {
+ "version": "0.47.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz",
+ "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/redis-common": "^0.36.2",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-kafkajs": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz",
+ "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-knex": {
+ "version": "0.44.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz",
+ "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-koa": {
+ "version": "0.47.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz",
+ "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-lru-memoizer": {
+ "version": "0.44.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz",
+ "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-mongodb": {
+ "version": "0.52.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz",
+ "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-mongoose": {
+ "version": "0.46.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz",
+ "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-mysql": {
+ "version": "0.45.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz",
+ "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@types/mysql": "2.15.26"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-mysql2": {
+ "version": "0.45.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz",
+ "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@opentelemetry/sql-common": "^0.40.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-pg": {
+ "version": "0.51.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz",
+ "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.26.0",
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@opentelemetry/sql-common": "^0.40.1",
+ "@types/pg": "8.6.1",
+ "@types/pg-pool": "2.0.6"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-redis-4": {
+ "version": "0.46.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz",
+ "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/redis-common": "^0.36.2",
+ "@opentelemetry/semantic-conventions": "^1.27.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-tedious": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz",
+ "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.57.1",
+ "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@types/tedious": "^4.0.14"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@opentelemetry/instrumentation-undici": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz",
+ "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.8.0",
+ "@opentelemetry/instrumentation": "^0.57.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.7.0"
+ }
+ },
+ "node_modules/@opentelemetry/redis-common": {
+ "version": "0.36.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz",
+ "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/resources": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz",
+ "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/semantic-conventions": "1.28.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.10.0"
+ }
+ },
+ "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
+ "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/sdk-trace-base": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz",
+ "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/resources": "1.30.1",
+ "@opentelemetry/semantic-conventions": "1.28.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": ">=1.0.0 <1.10.0"
+ }
+ },
+ "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
+ "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz",
+ "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@opentelemetry/sql-common": {
+ "version": "0.40.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz",
+ "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/core": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@paulirish/trace_engine": {
+ "version": "0.0.59",
+ "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.59.tgz",
+ "integrity": "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "legacy-javascript": "latest",
+ "third-party-web": "latest"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
+ "node_modules/@playwright/test": {
+ "version": "1.56.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz",
+ "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.56.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@prisma/instrumentation": {
+ "version": "6.11.1",
+ "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.11.1.tgz",
+ "integrity": "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.8"
+ }
+ },
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.10.13",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz",
+ "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.4.3",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.3",
+ "tar-fs": "^3.1.1",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz",
+ "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz",
+ "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz",
+ "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz",
+ "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz",
+ "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz",
+ "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz",
+ "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz",
+ "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz",
+ "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz",
+ "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz",
+ "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz",
+ "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz",
+ "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz",
+ "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz",
+ "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz",
+ "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz",
+ "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz",
+ "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz",
+ "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz",
+ "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz",
+ "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz",
+ "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@schematics/angular": {
+ "version": "20.3.7",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.7.tgz",
+ "integrity": "sha512-jR2LPJVGK6yzPTNXkGJZYtdeLGkNdqJhVow2E+ILt3pk/LZuT/iSdr9V4nArU9yysifGuJFTyZapVOYkEYaykg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "20.3.7",
+ "@angular-devkit/schematics": "20.3.7",
+ "jsonc-parser": "3.3.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@sentry/core": {
+ "version": "9.46.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.46.0.tgz",
+ "integrity": "sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sentry/node": {
+ "version": "9.46.0",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.46.0.tgz",
+ "integrity": "sha512-pRLqAcd7GTGvN8gex5FtkQR5Mcol8gOy1WlyZZFq4rBbVtMbqKOQRhohwqnb+YrnmtFpj7IZ7KNDo077MvNeOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/context-async-hooks": "^1.30.1",
+ "@opentelemetry/core": "^1.30.1",
+ "@opentelemetry/instrumentation": "^0.57.2",
+ "@opentelemetry/instrumentation-amqplib": "^0.46.1",
+ "@opentelemetry/instrumentation-connect": "0.43.1",
+ "@opentelemetry/instrumentation-dataloader": "0.16.1",
+ "@opentelemetry/instrumentation-express": "0.47.1",
+ "@opentelemetry/instrumentation-fs": "0.19.1",
+ "@opentelemetry/instrumentation-generic-pool": "0.43.1",
+ "@opentelemetry/instrumentation-graphql": "0.47.1",
+ "@opentelemetry/instrumentation-hapi": "0.45.2",
+ "@opentelemetry/instrumentation-http": "0.57.2",
+ "@opentelemetry/instrumentation-ioredis": "0.47.1",
+ "@opentelemetry/instrumentation-kafkajs": "0.7.1",
+ "@opentelemetry/instrumentation-knex": "0.44.1",
+ "@opentelemetry/instrumentation-koa": "0.47.1",
+ "@opentelemetry/instrumentation-lru-memoizer": "0.44.1",
+ "@opentelemetry/instrumentation-mongodb": "0.52.0",
+ "@opentelemetry/instrumentation-mongoose": "0.46.1",
+ "@opentelemetry/instrumentation-mysql": "0.45.1",
+ "@opentelemetry/instrumentation-mysql2": "0.45.2",
+ "@opentelemetry/instrumentation-pg": "0.51.1",
+ "@opentelemetry/instrumentation-redis-4": "0.46.1",
+ "@opentelemetry/instrumentation-tedious": "0.18.1",
+ "@opentelemetry/instrumentation-undici": "0.10.1",
+ "@opentelemetry/resources": "^1.30.1",
+ "@opentelemetry/sdk-trace-base": "^1.30.1",
+ "@opentelemetry/semantic-conventions": "^1.34.0",
+ "@prisma/instrumentation": "6.11.1",
+ "@sentry/core": "9.46.0",
+ "@sentry/node-core": "9.46.0",
+ "@sentry/opentelemetry": "9.46.0",
+ "import-in-the-middle": "^1.14.2",
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sentry/node-core": {
+ "version": "9.46.0",
+ "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.46.0.tgz",
+ "integrity": "sha512-XRVu5pqoklZeh4wqhxCLZkz/ipoKhitctgEFXX9Yh1e1BoHM2pIxT52wf+W6hHM676TFmFXW3uKBjsmRM3AjgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry/core": "9.46.0",
+ "@sentry/opentelemetry": "9.46.0",
+ "import-in-the-middle": "^1.14.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/core": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/instrumentation": ">=0.57.1 <1",
+ "@opentelemetry/resources": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/semantic-conventions": "^1.34.0"
+ }
+ },
+ "node_modules/@sentry/opentelemetry": {
+ "version": "9.46.0",
+ "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.46.0.tgz",
+ "integrity": "sha512-w2zTxqrdmwRok0cXBoh+ksXdGRUHUZhlpfL/H2kfTodOL+Mk8rW72qUmfqQceXoqgbz8UyK8YgJbyt+XS5H4Qg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry/core": "9.46.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/core": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0",
+ "@opentelemetry/semantic-conventions": "^1.34.0"
+ }
+ },
+ "node_modules/@shoelace-style/animations": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@shoelace-style/animations/-/animations-1.2.0.tgz",
+ "integrity": "sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "individual",
+ "url": "https://github.com/sponsors/claviska"
+ }
+ },
+ "node_modules/@shoelace-style/localize": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@shoelace-style/localize/-/localize-3.2.1.tgz",
+ "integrity": "sha512-r4C9C/5kSfMBIr0D9imvpRdCNXtUNgyYThc4YlS6K5Hchv1UyxNQ9mxwj+BTRH2i1Neits260sR3OjKMnplsFA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@shoelace-style/shoelace": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/@shoelace-style/shoelace/-/shoelace-2.20.1.tgz",
+ "integrity": "sha512-FSghU95jZPGbwr/mybVvk66qRZYpx5FkXL+vLNpy1Vp8UsdwSxXjIHE3fsvMbKWTKi9UFfewHTkc5e7jAqRYoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ctrl/tinycolor": "^4.1.0",
+ "@floating-ui/dom": "^1.6.12",
+ "@lit/react": "^1.0.6",
+ "@shoelace-style/animations": "^1.2.0",
+ "@shoelace-style/localize": "^3.2.1",
+ "composed-offset-position": "^0.0.6",
+ "lit": "^3.2.1",
+ "qr-creator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14.17.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://github.com/sponsors/claviska"
+ }
+ },
+ "node_modules/@sigstore/bundle": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz",
+ "integrity": "sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.4.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-2.0.0.tgz",
+ "integrity": "sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/protobuf-specs": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz",
+ "integrity": "sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/sign": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.1.0.tgz",
+ "integrity": "sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.0",
+ "make-fetch-happen": "^14.0.2",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/tuf": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.1.tgz",
+ "integrity": "sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.4.1",
+ "tuf-js": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/verify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.1.tgz",
+ "integrity": "sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@standard-schema/spec": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+ "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tufjs/canonical-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz",
+ "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@tufjs/models": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-3.0.1.tgz",
+ "integrity": "sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/canonical-json": "2.0.0",
+ "minimatch": "^9.0.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "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": {
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/conventional-commits-parser": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.2.tgz",
+ "integrity": "sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.17",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
+ "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.19.7",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz",
+ "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/mysql": {
+ "version": "2.15.26",
+ "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz",
+ "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "24.9.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz",
+ "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.16.0"
+ }
+ },
+ "node_modules/@types/pg": {
+ "version": "8.6.1",
+ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz",
+ "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "pg-protocol": "*",
+ "pg-types": "^2.2.0"
+ }
+ },
+ "node_modules/@types/pg-pool": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz",
+ "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/pg": "*"
+ }
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.18",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz",
+ "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/shimmer": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz",
+ "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tedious": {
+ "version": "4.0.14",
+ "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz",
+ "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/validator": {
+ "version": "13.15.4",
+ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.4.tgz",
+ "integrity": "sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz",
+ "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.46.2",
+ "@typescript-eslint/type-utils": "8.46.2",
+ "@typescript-eslint/utils": "8.46.2",
+ "@typescript-eslint/visitor-keys": "8.46.2",
+ "graphemer": "^1.4.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.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.46.2",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz",
+ "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.46.2",
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/typescript-estree": "8.46.2",
+ "@typescript-eslint/visitor-keys": "8.46.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.2.tgz",
+ "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.46.2",
+ "@typescript-eslint/types": "^8.46.2",
+ "debug": "^4.3.4"
+ },
+ "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/scope-manager": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz",
+ "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/visitor-keys": "8.46.2"
+ },
+ "engines": {
+ "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.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz",
+ "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==",
+ "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": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz",
+ "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/typescript-estree": "8.46.2",
+ "@typescript-eslint/utils": "8.46.2",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz",
+ "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz",
+ "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.46.2",
+ "@typescript-eslint/tsconfig-utils": "8.46.2",
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/visitor-keys": "8.46.2",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "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/typescript-estree/node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz",
+ "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.46.2",
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/typescript-estree": "8.46.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz",
+ "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.46.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@vitejs/plugin-basic-ssl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz",
+ "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@vitest/coverage-v8": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.4.tgz",
+ "integrity": "sha512-YM7gDj2TX2AXyGLz0p/B7hvTsTfaQc+kSV/LU0nEnKlep/ZfbdCDppPND4YQiQC43OXyrhkG3y8ZSTqYb2CKqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@bcoe/v8-coverage": "^1.0.2",
+ "@vitest/utils": "4.0.4",
+ "ast-v8-to-istanbul": "^0.3.5",
+ "debug": "^4.4.3",
+ "istanbul-lib-coverage": "^3.2.2",
+ "istanbul-lib-report": "^3.0.1",
+ "istanbul-lib-source-maps": "^5.0.6",
+ "istanbul-reports": "^3.2.0",
+ "magicast": "^0.3.5",
+ "std-env": "^3.9.0",
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@vitest/browser": "4.0.4",
+ "vitest": "4.0.4"
+ },
+ "peerDependenciesMeta": {
+ "@vitest/browser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/coverage-v8/node_modules/istanbul-lib-source-maps": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
+ "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.23",
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vitest/expect": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.4.tgz",
+ "integrity": "sha512-0ioMscWJtfpyH7+P82sGpAi3Si30OVV73jD+tEqXm5+rIx9LgnfdaOn45uaFkKOncABi/PHL00Yn0oW/wK4cXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "4.0.4",
+ "@vitest/utils": "4.0.4",
+ "chai": "^6.0.1",
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.4.tgz",
+ "integrity": "sha512-UTtKgpjWj+pvn3lUM55nSg34098obGhSHH+KlJcXesky8b5wCUgg7s60epxrS6yAG8slZ9W8T9jGWg4PisMf5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "4.0.4",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.19"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/mocker/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": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.4.tgz",
+ "integrity": "sha512-lHI2rbyrLVSd1TiHGJYyEtbOBo2SDndIsN3qY4o4xe2pBxoJLD6IICghNCvD7P+BFin6jeyHXiUICXqgl6vEaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.4.tgz",
+ "integrity": "sha512-99EDqiCkncCmvIZj3qJXBZbyoQ35ghOwVWNnQ5nj0Hnsv4Qm40HmrMJrceewjLVvsxV/JSU4qyx2CGcfMBmXJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "4.0.4",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.4.tgz",
+ "integrity": "sha512-XICqf5Gi4648FGoBIeRgnHWSNDp+7R5tpclGosFaUUFzY6SfcpsfHNMnC7oDu/iOLBxYfxVzaQpylEvpgii3zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.0.4",
+ "magic-string": "^0.30.19",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot/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": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.4.tgz",
+ "integrity": "sha512-G9L13AFyYECo40QG7E07EdYnZZYCKMTSp83p9W8Vwed0IyCG1GnpDLxObkx8uOGPXfDpdeVf24P1Yka8/q1s9g==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.4.tgz",
+ "integrity": "sha512-4bJLmSvZLyVbNsYFRpPYdJViG9jZyRvMZ35IF4ymXbRZoS+ycYghmwTGiscTXduUg2lgKK7POWIyXJNute1hjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.0.4",
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@yarnpkg/lockfile": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/@zeit/schemas": {
+ "version": "2.36.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz",
+ "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/abbrev": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/algoliasearch": {
+ "version": "5.35.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.35.0.tgz",
+ "integrity": "sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/abtesting": "1.1.0",
+ "@algolia/client-abtesting": "5.35.0",
+ "@algolia/client-analytics": "5.35.0",
+ "@algolia/client-common": "5.35.0",
+ "@algolia/client-insights": "5.35.0",
+ "@algolia/client-personalization": "5.35.0",
+ "@algolia/client-query-suggestions": "5.35.0",
+ "@algolia/client-search": "5.35.0",
+ "@algolia/ingestion": "1.35.0",
+ "@algolia/monitoring": "1.35.0",
+ "@algolia/recommend": "5.35.0",
+ "@algolia/requester-browser-xhr": "5.35.0",
+ "@algolia/requester-fetch": "5.35.0",
+ "@algolia/requester-node-http": "5.35.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/angular-eslint": {
+ "version": "20.5.0",
+ "resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-20.5.0.tgz",
+ "integrity": "sha512-TSZWjLl3NF6C+PV4wEs6EV1lw+ENo6aOkLCoZ41jXB2bmSvH76LqgTLzWtVNaSZE/MmAL0RkDJFyRtGcE4dtgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": ">= 20.0.0 < 21.0.0",
+ "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0",
+ "@angular-eslint/builder": "20.5.0",
+ "@angular-eslint/eslint-plugin": "20.5.0",
+ "@angular-eslint/eslint-plugin-template": "20.5.0",
+ "@angular-eslint/schematics": "20.5.0",
+ "@angular-eslint/template-parser": "20.5.0",
+ "@typescript-eslint/types": "^8.0.0",
+ "@typescript-eslint/utils": "^8.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "*",
+ "typescript-eslint": "^8.0.0"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-align/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,
+ "license": "MIT"
+ },
+ "node_modules/ansi-align/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz",
+ "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "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"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz",
+ "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.31",
+ "estree-walker": "^3.0.3",
+ "js-tokens": "^9.0.1"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/atomically": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz",
+ "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "stubborn-fs": "^2.0.0",
+ "when-exit": "^2.1.4"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz",
+ "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
+ "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/bare-events": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.1.tgz",
+ "integrity": "sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-fs": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz",
+ "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
+ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
+ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-url": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz",
+ "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.20",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz",
+ "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/basic-ftp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/beasties": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz",
+ "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "css-select": "^6.0.0",
+ "css-what": "^7.0.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "htmlparser2": "^10.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.49",
+ "postcss-media-query-parser": "^0.2.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/bidi-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/boxen": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
+ "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/boxen/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.27.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz",
+ "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.8.19",
+ "caniuse-lite": "^1.0.30001751",
+ "electron-to-chromium": "^1.5.238",
+ "node-releases": "^2.0.26",
+ "update-browserslist-db": "^1.1.4"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/builtin-modules": {
+ "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": ">=18.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
+ "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^4.0.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^10.0.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^7.0.2",
+ "ssri": "^12.0.0",
+ "tar": "^7.4.3",
+ "unique-filename": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/cacache/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/cacache/node_modules/tar": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz",
+ "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cacheable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.1.1.tgz",
+ "integrity": "sha512-LmF4AXiSNdiRbI2UjH8pAp9NIXxeQsTotpEaegPiDcnN0YPygDJDV3l/Urc0mL72JWdATEorKqIHEx55nDlONg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cacheable/memoize": "^2.0.3",
+ "@cacheable/memory": "^2.0.3",
+ "@cacheable/utils": "^2.1.0",
+ "hookified": "^1.12.2",
+ "keyv": "^5.5.3",
+ "qified": "^0.5.0"
+ }
+ },
+ "node_modules/cacheable/node_modules/keyv": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz",
+ "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.1"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001751",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
+ "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "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/chai": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.0.tgz",
+ "integrity": "sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+ "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/chardet": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz",
+ "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chrome-launcher": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.1.tgz",
+ "integrity": "sha512-qmFR5PLMzHyuNJHwOloHPAHhbaNglkfeV/xDtt5b7xiFFyU1I+AZZX0PYseMuhenJSSirgxELYIbswcoc+5H4A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^2.0.1"
+ },
+ "bin": {
+ "print-chrome-path": "bin/print-chrome-path.cjs"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
+ "node_modules/chromium-bidi": {
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-10.5.1.tgz",
+ "integrity": "sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz",
+ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
+ "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clean-regexp/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
+ "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^5.0.0",
+ "string-width": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/clipboardy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
+ "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arch": "^2.2.0",
+ "execa": "^5.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/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,
+ "license": "MIT"
+ },
+ "node_modules/cliui/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz",
+ "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "node_modules/composed-offset-position": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/composed-offset-position/-/composed-offset-position-0.0.6.tgz",
+ "integrity": "sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@floating-ui/utils": "^0.2.5"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/compression/node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/configstore": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz",
+ "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "atomically": "^2.0.3",
+ "dot-prop": "^9.0.0",
+ "graceful-fs": "^4.2.11",
+ "xdg-basedir": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/dot-prop": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz",
+ "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^4.18.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/conventional-changelog-angular": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
+ "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "compare-func": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/conventional-changelog-conventionalcommits": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz",
+ "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "compare-func": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/conventional-commits-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
+ "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-text-path": "^2.0.0",
+ "JSONStream": "^1.3.5",
+ "meow": "^12.0.1",
+ "split2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.46.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz",
+ "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.26.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cosmiconfig-typescript-loader": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz",
+ "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jiti": "^2.6.1"
+ },
+ "engines": {
+ "node": ">=v18"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "cosmiconfig": ">=9",
+ "typescript": ">=5"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "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",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csp_evaluator": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.5.tgz",
+ "integrity": "sha512-EL/iN9etCTzw/fBnp0/uj0f5BOOGvZut2mzsiiBZ/FdT6gFQCKRO/tmcKOxn5drWZ2Ndm/xBb1SI4zwWbGtmIw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/css-functions-list": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz",
+ "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12 || >=16"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz",
+ "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^7.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "nth-check": "^2.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.12.2",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz",
+ "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssstyle": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz",
+ "integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/css-color": "^4.0.3",
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.14",
+ "css-tree": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/dargs": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz",
+ "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz",
+ "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1507524",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz",
+ "integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "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,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dir-glob/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "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==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.240",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz",
+ "integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==",
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz",
+ "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/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==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.38.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz",
+ "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.1",
+ "@eslint/core": "^0.16.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.38.0",
+ "@eslint/plugin-kit": "^0.4.0",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "10.1.8",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
+ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-config-prettier"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-eslint-comments": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
+ "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5",
+ "ignore": "^5.0.5"
+ },
+ "engines": {
+ "node": ">=6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=4.19.1"
+ }
+ },
+ "node_modules/eslint-plugin-eslint-comments/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint-plugin-eslint-comments/node_modules/ignore": {
+ "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/eslint-plugin-prettier": {
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
+ "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.7"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-promise": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz",
+ "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-unicorn": {
+ "version": "62.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-62.0.0.tgz",
+ "integrity": "sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@eslint-community/eslint-utils": "^4.9.0",
+ "@eslint/plugin-kit": "^0.4.0",
+ "change-case": "^5.4.4",
+ "ci-info": "^4.3.1",
+ "clean-regexp": "^1.0.0",
+ "core-js-compat": "^3.46.0",
+ "esquery": "^1.6.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": "^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-plugin-unicorn/node_modules/indent-string": {
+ "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": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/ignore": {
+ "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/eslint/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,
+ "license": "MIT"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint/node_modules/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,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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/eslint/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "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,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "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/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "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/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "node_modules/eventsource": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+ "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eventsource-parser": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/eventsource-parser": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
+ "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.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,
+ "license": "MIT",
+ "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/execa/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/execa/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/execa/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,
+ "license": "ISC"
+ },
+ "node_modules/expect-type": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz",
+ "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/express-rate-limit": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
+ "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/express-rate-limit"
+ },
+ "peerDependencies": {
+ "express": ">= 4.11"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "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.8"
+ },
+ "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,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
+ "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "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": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
+ "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.2.0",
+ "path-exists": "^5.0.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "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.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/forwarded-parse": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz",
+ "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "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==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
+ "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "dunder-proto": "^1.0.0",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "function-bind": "^1.1.2",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/git-raw-commits": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz",
+ "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dargs": "^8.0.0",
+ "meow": "^12.0.1",
+ "split2": "^4.0.0"
+ },
+ "bin": {
+ "git-raw-commits": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/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,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/glob/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,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/global-directory": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz",
+ "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ini": "4.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-directory/node_modules/ini": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
+ "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "16.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz",
+ "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "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,
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hookified": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.12.2.tgz",
+ "integrity": "sha512-aokUX1VdTpI0DUsndvW+OiwmBpKCu/NgRsSSkuSY0zq8PY6Q6a+lmOfAFDXAAOtBqJELvcWY9L1EVtzjbQcMdg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hosted-git-info": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz",
+ "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^11.1.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
+ "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
+ "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.1",
+ "entities": "^6.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-link-header": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz",
+ "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/husky": {
+ "version": "9.1.7",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
+ "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "husky": "bin.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ignore-walk": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz",
+ "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minimatch": "^10.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/ignore-walk/node_modules/minimatch": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/image-ssim": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz",
+ "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/immutable": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
+ "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-in-the-middle": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz",
+ "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-import-attributes": "^1.9.5",
+ "cjs-module-lexer": "^1.2.2",
+ "module-details-from-path": "^1.0.3"
+ }
+ },
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "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==",
+ "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "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,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz",
+ "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/intl-messageformat": {
+ "version": "10.7.18",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz",
+ "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.3.6",
+ "@formatjs/fast-memoize": "2.2.7",
+ "@formatjs/icu-messageformat-parser": "2.11.4",
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/ip-address": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
+ "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/is-builtin-module": {
+ "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": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
+ "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-port-reachable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
+ "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-text-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
+ "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "text-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
},
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
+ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/js-library-detector": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz",
+ "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "27.0.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz",
+ "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "abbrev": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ajv": {
- "version": "4.11.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "aproba": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.2.9"
- }
- },
- "asn1": {
- "version": "0.2.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "assert-plus": {
- "version": "0.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aws-sign2": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aws4": {
- "version": "1.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "balanced-match": {
- "version": "0.4.2",
- "bundled": true,
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "boom": {
- "version": "2.10.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "brace-expansion": {
- "version": "1.1.7",
- "bundled": true,
- "dev": true,
- "requires": {
- "balanced-match": "0.4.2",
- "concat-map": "0.0.1"
- }
- },
- "buffer-shims": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "caseless": {
- "version": "0.12.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "co": {
- "version": "4.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "delayed-stream": "1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "cryptiles": {
- "version": "2.0.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "boom": "2.10.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "debug": {
- "version": "2.6.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "deep-extend": {
- "version": "0.4.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "extend": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "extsprintf": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "form-data": {
- "version": "2.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.15"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "fstream": {
- "version": "1.0.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.1"
- }
- },
- "fstream-ignore": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "fstream": "1.0.11",
- "inherits": "2.0.3",
- "minimatch": "3.0.4"
- }
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "1.1.1",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "glob": {
- "version": "7.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "bundled": true,
- "dev": true
- },
- "har-schema": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "har-validator": {
- "version": "4.2.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ajv": "4.11.8",
- "har-schema": "1.0.5"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "hawk": {
- "version": "3.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "bundled": true,
- "dev": true
- },
- "http-signature": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.0",
- "sshpk": "1.13.0"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true
- },
- "ini": {
- "version": "1.3.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "jodid25519": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "jsonify": "0.0.0"
- }
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "jsonify": {
- "version": "0.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "jsprim": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.0.2",
- "json-schema": "0.2.3",
- "verror": "1.3.6"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "mime-db": {
- "version": "1.27.0",
- "bundled": true,
- "dev": true
- },
- "mime-types": {
- "version": "2.1.15",
- "bundled": true,
- "dev": true,
- "requires": {
- "mime-db": "1.27.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "node-pre-gyp": {
- "version": "0.6.39",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "1.0.2",
- "hawk": "3.1.3",
- "mkdirp": "0.5.1",
- "nopt": "4.0.1",
- "npmlog": "4.1.0",
- "rc": "1.2.1",
- "request": "2.81.0",
- "rimraf": "2.6.1",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "tar-pack": "3.4.0"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1.1.0",
- "osenv": "0.1.4"
- }
- },
- "npmlog": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "oauth-sign": {
- "version": "0.8.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "performance-now": {
- "version": "0.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "bundled": true,
- "dev": true
- },
- "punycode": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "qs": {
- "version": "6.4.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.4",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.2.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "buffer-shims": "1.0.0",
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "1.0.1",
- "util-deprecate": "1.0.2"
- }
- },
- "request": {
- "version": "2.81.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "4.2.1",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.15",
- "oauth-sign": "0.8.2",
- "performance-now": "0.2.0",
- "qs": "6.4.0",
- "safe-buffer": "5.0.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.2",
- "tunnel-agent": "0.6.0",
- "uuid": "3.0.1"
- }
- },
- "rimraf": {
- "version": "2.6.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "glob": "7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.0.1",
- "bundled": true,
- "dev": true
- },
- "semver": {
- "version": "5.3.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sntp": {
- "version": "1.0.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "sshpk": {
- "version": "1.13.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jodid25519": "1.0.2",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string_decoder": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "safe-buffer": "5.0.1"
- }
- },
- "stringstream": {
- "version": "0.0.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "2.2.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- }
- },
- "tar-pack": {
- "version": "3.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "2.6.8",
- "fstream": "1.0.11",
- "fstream-ignore": "1.0.5",
- "once": "1.4.0",
- "readable-stream": "2.2.9",
- "rimraf": "2.6.1",
- "tar": "2.2.1",
- "uid-number": "0.0.6"
- }
- },
- "tough-cookie": {
- "version": "2.3.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "punycode": "1.4.1"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "bundled": true,
- "dev": true,
+ "@asamuzakjp/dom-selector": "^6.7.2",
+ "cssstyle": "^5.3.1",
+ "data-urls": "^6.0.0",
+ "decimal.js": "^10.6.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.6",
+ "is-potential-custom-element-name": "^1.0.1",
+ "parse5": "^8.0.0",
+ "rrweb-cssom": "^0.8.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^6.0.0",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^8.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.1.0",
+ "ws": "^8.18.3",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "peerDependencies": {
+ "canvas": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
"optional": true
- },
- "uid-number": {
- "version": "0.0.6",
- "bundled": true,
- "dev": true,
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
"optional": true
},
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "uuid": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
+ "utf-8-validate": {
"optional": true
- },
- "verror": {
- "version": "1.3.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "extsprintf": "1.0.2"
- }
- },
- "wide-align": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
}
}
},
- "fstream": {
- "version": "1.0.11",
- "resolved": "http://npm.trustu.pre/fstream/-/fstream-1.0.11/5c1fb1f117477114f0632a0eb4b71b3cb0fd3171.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz",
+ "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/function-bind/-/function-bind-1.1.1/a56899d3ea3c9bab874bb9773b7c5ede92f4895d.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "license": "MIT"
},
- "gauge": {
- "version": "2.7.4",
- "resolved": "http://npm.trustu.pre/gauge/-/gauge-2.7.4/2c03405c7538c39d7eb37b317022e325fb018bf7.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "node_modules/JSONStream": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"dev": true,
- "requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
+ "license": "(MIT OR Apache-2.0)",
+ "dependencies": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ },
+ "bin": {
+ "JSONStream": "bin.js"
+ },
+ "engines": {
+ "node": "*"
}
},
- "gaze": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/gaze/-/gaze-1.1.2/847224677adb8870d679257ed3388fdb61e40105.tgz",
- "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
+ "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,
- "optional": true,
- "requires": {
- "globule": "1.2.0"
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/known-css-properties": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz",
+ "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/legacy-javascript": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/legacy-javascript/-/legacy-javascript-0.0.1.tgz",
+ "integrity": "sha512-lPyntS4/aS7jpuvOlitZDFifBCb4W8L/3QU0PLbUTUj+zYah8rfVjYic88yG7ZKTxhS5h9iz7duT8oUXKszLhg==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "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": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lighthouse": {
+ "version": "12.8.2",
+ "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.2.tgz",
+ "integrity": "sha512-+5SKYzVaTFj22MgoYDPNrP9tlD2/Ay7j3SxPSFD9FpPyVxGr4UtOQGKyrdZ7wCmcnBaFk0mCkPfARU3CsE0nvA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@paulirish/trace_engine": "0.0.59",
+ "@sentry/node": "^9.28.1",
+ "axe-core": "^4.10.3",
+ "chrome-launcher": "^1.2.0",
+ "configstore": "^7.0.0",
+ "csp_evaluator": "1.1.5",
+ "devtools-protocol": "0.0.1507524",
+ "enquirer": "^2.3.6",
+ "http-link-header": "^1.1.1",
+ "intl-messageformat": "^10.5.3",
+ "jpeg-js": "^0.4.4",
+ "js-library-detector": "^6.7.0",
+ "lighthouse-logger": "^2.0.2",
+ "lighthouse-stack-packs": "1.12.2",
+ "lodash-es": "^4.17.21",
+ "lookup-closest-locale": "6.2.0",
+ "metaviewport-parser": "0.3.0",
+ "open": "^8.4.0",
+ "parse-cache-control": "1.0.1",
+ "puppeteer-core": "^24.17.1",
+ "robots-parser": "^3.0.1",
+ "speedline-core": "^1.4.3",
+ "third-party-web": "^0.27.0",
+ "tldts-icann": "^7.0.12",
+ "ws": "^7.0.0",
+ "yargs": "^17.3.1",
+ "yargs-parser": "^21.0.0"
+ },
+ "bin": {
+ "chrome-debug": "core/scripts/manual-chrome-launcher.js",
+ "lighthouse": "cli/index.js",
+ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js"
+ },
+ "engines": {
+ "node": ">=18.16"
+ }
+ },
+ "node_modules/lighthouse-logger": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.2.tgz",
+ "integrity": "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.4.1",
+ "marky": "^1.2.2"
+ }
+ },
+ "node_modules/lighthouse-stack-packs": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.2.tgz",
+ "integrity": "sha512-Ug8feS/A+92TMTCK6yHYLwaFMuelK/hAKRMdldYkMNwv+d9PtWxjXEg6rwKtsUXTADajhdrhXyuNCJ5/sfmPFw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/lint-staged": {
+ "version": "16.2.6",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.2.6.tgz",
+ "integrity": "sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^14.0.1",
+ "listr2": "^9.0.5",
+ "micromatch": "^4.0.8",
+ "nano-spawn": "^2.0.0",
+ "pidtree": "^0.6.0",
+ "string-argv": "^0.3.2",
+ "yaml": "^2.8.1"
+ },
+ "bin": {
+ "lint-staged": "bin/lint-staged.js"
+ },
+ "engines": {
+ "node": ">=20.17"
+ },
+ "funding": {
+ "url": "https://opencollective.com/lint-staged"
+ }
+ },
+ "node_modules/lint-staged/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/node_modules/cli-truncate": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz",
+ "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^7.1.0",
+ "string-width": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/cli-truncate/node_modules/string-width": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz",
+ "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/listr2": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz",
+ "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^5.0.0",
+ "colorette": "^2.0.20",
+ "eventemitter3": "^5.0.1",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
}
},
- "generate-function": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/generate-function/-/generate-function-2.0.0/6858fe7c0969b7d4e9093337647ac79f60dfbe74.tgz",
- "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+ "node_modules/lint-staged/node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
},
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/generate-object-property/-/generate-object-property-1.2.0/9c0e1c40308ce804f4783618b937fa88f99d50d0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "node_modules/lint-staged/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "optional": true,
- "requires": {
- "is-property": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "get-caller-file": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/get-caller-file/-/get-caller-file-1.0.2/f702e63127e7e231c160a80c1554acb70d5047e5.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
- "dev": true
- },
- "get-pkg-repo": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/get-pkg-repo/-/get-pkg-repo-1.4.0/c73b489c06d80cc5536c2c853f9e05232056972d.tgz",
- "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
+ "node_modules/lint-staged/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
- "requires": {
- "hosted-git-info": "2.5.0",
- "meow": "3.7.0",
- "normalize-package-data": "2.4.0",
- "parse-github-repo-url": "1.4.1",
- "through2": "2.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/get-stdin/-/get-stdin-4.0.1/b968c6b0a04384324902e8bf1a5df32579a450fe.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/get-stream/-/get-stream-3.0.0/8e943d1358dc37555054ecbe2edb05aa174ede14.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "http://npm.trustu.pre/getpass/-/getpass-0.1.7/5eff8e3e684d569ae4cb2b1282604e8ba62149fa.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "node_modules/listr2": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz",
+ "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-1.0.0/f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "cli-truncate": "^4.0.0",
+ "colorette": "^2.0.20",
+ "eventemitter3": "^5.0.1",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
}
},
- "gh-pages": {
- "version": "0.12.0",
- "resolved": "http://npm.trustu.pre/gh-pages/-/gh-pages-0.12.0/d951e3ed98b85699d4b0418eb1a15b1a04988dc1.tgz",
- "integrity": "sha1-2VHj7Zi4VpnUsEGOsaFbGgSYjcE=",
- "dev": true,
- "requires": {
- "async": "2.1.2",
- "commander": "2.9.0",
- "globby": "6.1.0",
- "graceful-fs": "4.1.10",
- "q": "1.4.1",
- "q-io": "1.13.2",
- "rimraf": "2.6.2"
- },
- "dependencies": {
- "async": {
- "version": "2.1.2",
- "resolved": "http://npm.trustu.pre/async/-/async-2.1.2/612a4ab45ef42a70cde806bad86ee6db047e8385.tgz",
- "integrity": "sha1-YSpKtF70KnDN6Aa62G7m2wR+g4U=",
- "dev": true,
- "requires": {
- "lodash": "4.17.4"
- }
- },
- "commander": {
- "version": "2.9.0",
- "resolved": "http://npm.trustu.pre/commander/-/commander-2.9.0/9c99094176e12240cb22d6c5146098400fe0f7d4.tgz",
- "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
- "dev": true,
- "requires": {
- "graceful-readlink": "1.0.1"
- }
- },
- "graceful-fs": {
- "version": "4.1.10",
- "resolved": "http://npm.trustu.pre/graceful-fs/-/graceful-fs-4.1.10/f2d720c22092f743228775c75e3612632501f131.tgz",
- "integrity": "sha1-8tcgwiCS90Mih3XHXjYSYyUB8TE=",
- "dev": true
- },
- "q": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/q/-/q-1.4.1/55705bcd93c5f3673530c2c2cbc0c2b3addc286e.tgz",
- "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
- "dev": true
- }
+ "node_modules/listr2/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "git-raw-commits": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/git-raw-commits/-/git-raw-commits-1.3.0/0bc8596e90d5ffe736f7f5546bd2d12f73abaac6.tgz",
- "integrity": "sha1-C8hZbpDV/+c29/VUa9LRL3OrqsY=",
- "dev": true,
- "requires": {
- "dargs": "4.1.0",
- "lodash.template": "4.4.0",
- "meow": "3.7.0",
- "split2": "2.2.0",
- "through2": "2.0.3"
- },
- "dependencies": {
- "lodash.template": {
- "version": "4.4.0",
- "resolved": "http://npm.trustu.pre/lodash.template/-/lodash.template-4.4.0/e73a0385c8355591746e020b99679c690e68fba0.tgz",
- "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
- "dev": true,
- "requires": {
- "lodash._reinterpolate": "3.0.0",
- "lodash.templatesettings": "4.1.0"
- }
- },
- "lodash.templatesettings": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/lodash.templatesettings/-/lodash.templatesettings-4.1.0/2b4d4e95ba440d915ff08bc899e4553666713316.tgz",
- "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
- "dev": true,
- "requires": {
- "lodash._reinterpolate": "3.0.0"
- }
- }
+ "node_modules/listr2/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "git-remote-origin-url": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/git-remote-origin-url/-/git-remote-origin-url-2.0.0/5282659dae2107145a11126112ad3216ec5fa65f.tgz",
- "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "node_modules/listr2/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "requires": {
- "gitconfiglocal": "1.0.0",
- "pify": "2.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "git-semver-tags": {
- "version": "1.2.3",
- "resolved": "http://npm.trustu.pre/git-semver-tags/-/git-semver-tags-1.2.3/188b453882bf9d7a23afd31baba537dab7388d5d.tgz",
- "integrity": "sha1-GItFOIK/nXojr9Mbq6U32rc4jV0=",
+ "node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
- "requires": {
- "meow": "3.7.0",
- "semver": "5.4.1"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "gitconfiglocal": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/gitconfiglocal/-/gitconfiglocal-1.0.0/41d045f3851a5ea88f03f24ca1c6178114464b9b.tgz",
- "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "node_modules/lit": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz",
+ "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==",
"dev": true,
- "requires": {
- "ini": "1.3.5"
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit/reactive-element": "^2.0.4",
+ "lit-element": "^4.1.0",
+ "lit-html": "^3.2.0"
}
},
- "glob": {
- "version": "7.1.2",
- "resolved": "http://npm.trustu.pre/glob/-/glob-7.1.2/c19c9df9a028702d678612384a6552404c636d15.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "node_modules/lit-element": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz",
+ "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==",
"dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.2.0",
+ "@lit/reactive-element": "^2.0.4",
+ "lit-html": "^3.2.0"
}
},
- "glob-base": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/glob-base/-/glob-base-0.3.0/dbb164f6221b1c0b1ccf82aea328b497df0ea3c4.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "node_modules/lit-html": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz",
+ "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==",
"dev": true,
- "requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
- },
+ "license": "BSD-3-Clause",
"dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-2.0.1/d096f926a3ded5600f3fdfd91198cb0888c2d863.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- }
+ "@types/trusted-types": "^2.0.2"
}
},
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/glob-parent/-/glob-parent-2.0.0/81383d72db054fcccf5336daa902f182f6edbb28.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "node_modules/lmdb": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz",
+ "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==",
"dev": true,
- "requires": {
- "is-glob": "2.0.1"
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "msgpackr": "^1.11.2",
+ "node-addon-api": "^6.1.0",
+ "node-gyp-build-optional-packages": "5.2.2",
+ "ordered-binary": "^1.5.3",
+ "weak-lru-cache": "^1.2.2"
+ },
+ "bin": {
+ "download-lmdb-prebuilds": "bin/download-prebuilds.js"
},
+ "optionalDependencies": {
+ "@lmdb/lmdb-darwin-arm64": "3.4.2",
+ "@lmdb/lmdb-darwin-x64": "3.4.2",
+ "@lmdb/lmdb-linux-arm": "3.4.2",
+ "@lmdb/lmdb-linux-arm64": "3.4.2",
+ "@lmdb/lmdb-linux-x64": "3.4.2",
+ "@lmdb/lmdb-win32-arm64": "3.4.2",
+ "@lmdb/lmdb-win32-x64": "3.4.2"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-2.0.1/d096f926a3ded5600f3fdfd91198cb0888c2d863.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- }
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "globals": {
- "version": "9.18.0",
- "resolved": "http://npm.trustu.pre/globals/-/globals-9.18.0/aa3896b3e69b487f17e31ed2143d69a8e30c2d8a.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
- "dev": true
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT"
},
- "globby": {
- "version": "6.1.0",
- "resolved": "http://npm.trustu.pre/globby/-/globby-6.1.0/f5a6d70e8395e21c858fb0489d64df02424d506c.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"dev": true,
- "requires": {
- "array-union": "1.0.2",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
+ "license": "MIT"
},
- "globule": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/globule/-/globule-1.2.0/1dc49c6822dd9e8a2fa00ba2a295006e8664bd09.tgz",
- "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"dev": true,
- "optional": true,
- "requires": {
- "glob": "7.1.2",
- "lodash": "4.17.4",
- "minimatch": "3.0.4"
- }
+ "license": "MIT"
},
- "glogg": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/glogg/-/glogg-1.0.0/7fe0f199f57ac906cf512feead8f90ee4a284fc5.tgz",
- "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
"dev": true,
- "requires": {
- "sparkles": "1.0.0"
- }
+ "license": "MIT"
},
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "http://npm.trustu.pre/graceful-fs/-/graceful-fs-4.1.11/0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
- "dev": true
+ "node_modules/lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "dev": true,
+ "license": "MIT"
},
- "graceful-readlink": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/graceful-readlink/-/graceful-readlink-1.0.1/4cafad76bc62f02fa039b2f94e9a3dd3a391a725.tgz",
- "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
- "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,
+ "license": "MIT"
},
- "gulp-util": {
- "version": "3.0.7",
- "resolved": "http://npm.trustu.pre/gulp-util/-/gulp-util-3.0.7/78925c4b8f8b49005ac01a011c557e6218941cbb.tgz",
- "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=",
- "dev": true,
- "requires": {
- "array-differ": "1.0.0",
- "array-uniq": "1.0.3",
- "beeper": "1.1.1",
- "chalk": "1.1.3",
- "dateformat": "1.0.12",
- "fancy-log": "1.3.0",
- "gulplog": "1.0.0",
- "has-gulplog": "0.1.0",
- "lodash._reescape": "3.0.0",
- "lodash._reevaluate": "3.0.0",
- "lodash._reinterpolate": "3.0.0",
- "lodash.template": "3.6.2",
- "minimist": "1.2.0",
- "multipipe": "0.1.2",
- "object-assign": "3.0.0",
- "replace-ext": "0.0.1",
- "through2": "2.0.3",
- "vinyl": "0.5.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "object-assign": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/object-assign/-/object-assign-3.0.0/9bedd5ca0897949bca47e7ff408062d549f587f2.tgz",
- "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
+ "node_modules/lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
+ "dev": true,
+ "license": "MIT"
},
- "gulplog": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/gulplog/-/gulplog-1.0.0/e28c4d45d05ecbbed818363ce8f9c5926229ffe5.tgz",
- "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "node_modules/lodash.snakecase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
+ "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
"dev": true,
- "requires": {
- "glogg": "1.0.0"
- }
+ "license": "MIT"
},
- "hammerjs": {
- "version": "2.0.8",
- "resolved": "http://npm.trustu.pre/hammerjs/-/hammerjs-2.0.8/04ef77862cff2bb79d30f7692095930222bf60f1.tgz",
- "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=",
- "dev": true
+ "node_modules/lodash.startcase": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz",
+ "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==",
+ "dev": true,
+ "license": "MIT"
},
- "handle-thing": {
- "version": "1.2.5",
- "resolved": "http://npm.trustu.pre/handle-thing/-/handle-thing-1.2.5/fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4.tgz",
- "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
- "dev": true
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true,
+ "license": "MIT"
},
- "handlebars": {
- "version": "4.0.11",
- "resolved": "http://npm.trustu.pre/handlebars/-/handlebars-4.0.11/630a35dfe0294bc281edae6ffc5d329fc7982dcc.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
"dev": true,
- "requires": {
- "async": "1.5.2",
- "optimist": "0.6.1",
- "source-map": "0.4.4",
- "uglify-js": "2.8.29"
- },
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/async/-/async-1.5.2/ec6a61ae56480c0c3cb241c95618e20892f9672a.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "camelcase": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-1.2.1/9bb5304d2e0b56698b2c758b08a3eaa9daa58a39.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true,
- "optional": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/cliui/-/cliui-2.1.0/4b475760ff80264c762c3a1719032e91c7fea0d1.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
- "wordwrap": "0.0.2"
- }
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.4.4/eba4f5da9c0dc999de68032d8b4f76173652036b.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "http://npm.trustu.pre/uglify-js/-/uglify-js-2.8.29/29c5733148057bb4e1f75df35b7a9cb72e6a59dd.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "optional": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.5.7/8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "optional": true
- }
- }
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-3.10.0/f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
- "window-size": "0.1.0"
- }
- }
- }
+ "license": "MIT"
},
- "har-schema": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/har-schema/-/har-schema-1.0.5/d263135f43307c02c602afc8fe95970c0151369e.tgz",
- "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
- "dev": true
+ "node_modules/lodash.upperfirst": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
+ "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
+ "dev": true,
+ "license": "MIT"
},
- "har-validator": {
- "version": "4.2.1",
- "resolved": "http://npm.trustu.pre/har-validator/-/har-validator-4.2.1/33481d0f1bbff600dd203d75812a6a5fba002e2a.tgz",
- "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "node_modules/log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
"dev": true,
- "requires": {
- "ajv": "4.11.8",
- "har-schema": "1.0.5"
- },
+ "license": "MIT",
"dependencies": {
- "ajv": {
- "version": "4.11.8",
- "resolved": "http://npm.trustu.pre/ajv/-/ajv-4.11.8/82ffb02b29e662ae53bdc20af15947706739c536.tgz",
- "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
- "dev": true,
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- }
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "has": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/has/-/has-1.0.1/8461733f538b0837c9361e39a9ab9e9704dc2f28.tgz",
- "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "node_modules/log-symbols/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
"dev": true,
- "requires": {
- "function-bind": "1.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/has-ansi/-/has-ansi-2.0.0/34f5049ce1ecdf2b0649af3ef24e45ed35416d91.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "node_modules/log-update": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
"dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "cli-cursor": "^5.0.0",
+ "slice-ansi": "^7.1.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "has-binary": {
- "version": "0.1.7",
- "resolved": "http://npm.trustu.pre/has-binary/-/has-binary-0.1.7/68e61eb16210c9545a0a5cce06a873912fe1e68c.tgz",
- "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
+ "node_modules/log-update/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "isarray": "0.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
},
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-0.0.1/8a18acfca9a8f4177e09abfc6038939b05d1eedf.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "has-cors": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/has-cors/-/has-cors-1.1.0/5e474793f7ea9843d1bb99c23eef49ff126fff39.tgz",
- "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
- "dev": true
- },
- "has-flag": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/has-flag/-/has-flag-2.0.0/e8207af1cc7b30d446cc70b734b5e8be18f88d51.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
- "dev": true
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
},
- "has-gulplog": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/has-gulplog/-/has-gulplog-0.1.0/6414c82913697da51590397dafb12f22967811ce.tgz",
- "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "node_modules/log-update/node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
"dev": true,
- "requires": {
- "sparkles": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/has-unicode/-/has-unicode-2.0.1/e0e6fe6a28cf51138855e086d1691e771de2a8b9.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
+ "node_modules/log-update/node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
},
- "hash-base": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/hash-base/-/hash-base-2.0.2/66ea1d856db4e8a5470cadf6fce23ae5244ef2e1.tgz",
- "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
+ "node_modules/log-update/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "requires": {
- "inherits": "2.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "hash.js": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/hash.js/-/hash.js-1.1.3/340dedbe6290187151c1ea1d777a3448935df846.tgz",
- "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "node_modules/log-update/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "minimalistic-assert": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "hawk": {
- "version": "3.1.3",
- "resolved": "http://npm.trustu.pre/hawk/-/hawk-3.1.3/078444bd7c1640b0fe540d2c9b73d59678e8e1c4.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "node_modules/loglevel": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
+ "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
"dev": true,
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ },
+ "funding": {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/loglevel"
}
},
- "he": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/he/-/he-1.1.1/93410fd21b009735151f8868c2f271f3427e23fd.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
- "dev": true
+ "node_modules/loglevel-colored-level-prefix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz",
+ "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "loglevel": "^1.4.1"
+ }
},
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/hmac-drbg/-/hmac-drbg-1.0.1/d2745701025a6c775a6c545793ed502fc0c649a1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
- "requires": {
- "hash.js": "1.1.3",
- "minimalistic-assert": "1.0.0",
- "minimalistic-crypto-utils": "1.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "hoek": {
- "version": "2.16.3",
- "resolved": "http://npm.trustu.pre/hoek/-/hoek-2.16.3/20bb7403d3cea398e91dc4710a8ff1b8274a25ed.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
- "dev": true
+ "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "homedir-polyfill": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/homedir-polyfill/-/homedir-polyfill-1.0.1/4c2bbc8a758998feebf5ed68580f76d46768b4bc.tgz",
- "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "node_modules/loglevel-colored-level-prefix/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
"dev": true,
- "requires": {
- "parse-passwd": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "hosted-git-info": {
- "version": "2.5.0",
- "resolved": "http://npm.trustu.pre/hosted-git-info/-/hosted-git-info-2.5.0/6d60e34b3abbc8313062c3b798ef8d901a07af3c.tgz",
- "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
- "dev": true
+ "node_modules/loglevel-colored-level-prefix/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
- "hpack.js": {
- "version": "2.1.6",
- "resolved": "http://npm.trustu.pre/hpack.js/-/hpack.js-2.1.6/87774c0949e513f42e84575b3c45681fade2a0b2.tgz",
- "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "obuf": "1.1.1",
- "readable-stream": "2.3.3",
- "wbuf": "1.7.2"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "html-comment-regex": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/html-comment-regex/-/html-comment-regex-1.1.1/668b93776eaae55ebde8f3ad464b307a4963625e.tgz",
- "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
- "dev": true
+ "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
},
- "html-entities": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/html-entities/-/html-entities-1.2.1/0df29351f0721163515dfb9e5543e5f6eed5162f.tgz",
- "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
- "dev": true
+ "node_modules/lookup-closest-locale": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz",
+ "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==",
+ "dev": true,
+ "license": "MIT"
},
- "html-minifier": {
- "version": "3.5.7",
- "resolved": "http://npm.trustu.pre/html-minifier/-/html-minifier-3.5.7/511e69bb5a8e7677d1012ebe03819aa02ca06208.tgz",
- "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==",
- "dev": true,
- "requires": {
- "camel-case": "3.0.0",
- "clean-css": "4.1.9",
- "commander": "2.12.2",
- "he": "1.1.1",
- "ncname": "1.0.0",
- "param-case": "2.1.1",
- "relateurl": "0.2.7",
- "uglify-js": "3.2.1"
- }
- },
- "html-webpack-plugin": {
- "version": "2.30.1",
- "resolved": "http://npm.trustu.pre/html-webpack-plugin/-/html-webpack-plugin-2.30.1/7f9c421b7ea91ec460f56527d78df484ee7537d5.tgz",
- "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=",
- "dev": true,
- "requires": {
- "bluebird": "3.5.1",
- "html-minifier": "3.5.7",
- "loader-utils": "0.2.17",
- "lodash": "4.17.4",
- "pretty-error": "2.1.1",
- "toposort": "1.0.6"
- },
- "dependencies": {
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "http://npm.trustu.pre/loader-utils/-/loader-utils-0.2.17/f86e6374d43205a6e6c60e9196f17c0299bfb348.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1"
- }
- }
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
}
},
- "htmlparser2": {
- "version": "3.3.0",
- "resolved": "http://npm.trustu.pre/htmlparser2/-/htmlparser2-3.3.0/cc70d05a59f6542e43f0e685c982e14c924a9efe.tgz",
- "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
- "dev": true,
- "requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.1.0",
- "domutils": "1.1.6",
- "readable-stream": "1.0.34"
- },
- "dependencies": {
- "domutils": {
- "version": "1.1.6",
- "resolved": "http://npm.trustu.pre/domutils/-/domutils-1.1.6/bddc3de099b9a2efacc51c623f28f416ecc57485.tgz",
- "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
- "dev": true,
- "requires": {
- "domelementtype": "1.3.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-0.0.1/8a18acfca9a8f4177e09abfc6038939b05d1eedf.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-1.0.34/125820e34bc842d2f2aaafafe4c2916ee32c157c.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-0.10.31/62e203bc41766c6c28c9fc84301dab1c5310fa94.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
- "http-deceiver": {
- "version": "1.2.7",
- "resolved": "http://npm.trustu.pre/http-deceiver/-/http-deceiver-1.2.7/fa7168944ab9a519d337cb0bec7284dc3e723d87.tgz",
- "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
- "dev": true
- },
- "http-errors": {
- "version": "1.6.2",
- "resolved": "http://npm.trustu.pre/http-errors/-/http-errors-1.6.2/0a002cc85707192a7e7946ceedc11155f60ec736.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "node_modules/magicast": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
+ "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
"dev": true,
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": "1.3.1"
- },
+ "license": "MIT",
"dependencies": {
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/setprototypeof/-/setprototypeof-1.0.3/66567e37043eeb4f04d91bd658c0cbefb55b8e04.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
- "dev": true
- }
+ "@babel/parser": "^7.25.4",
+ "@babel/types": "^7.25.4",
+ "source-map-js": "^1.2.0"
}
},
- "http-parser-js": {
- "version": "0.4.9",
- "resolved": "http://npm.trustu.pre/http-parser-js/-/http-parser-js-0.4.9/ea1a04fb64adff0242e9974f297dd4c3cad271e1.tgz",
- "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=",
- "dev": true
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "http-proxy": {
- "version": "1.16.2",
- "resolved": "http://npm.trustu.pre/http-proxy/-/http-proxy-1.16.2/06dff292952bf64dbe8471fa9df73066d4f37742.tgz",
- "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "node_modules/make-fetch-happen": {
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
+ "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
"dev": true,
- "requires": {
- "eventemitter3": "1.2.0",
- "requires-port": "1.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/agent": "^3.0.0",
+ "cacache": "^19.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^4.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^1.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "ssri": "^12.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "http-proxy-middleware": {
- "version": "0.17.4",
- "resolved": "http://npm.trustu.pre/http-proxy-middleware/-/http-proxy-middleware-0.17.4/642e8848851d66f09d4f124912846dbaeb41b833.tgz",
- "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
- "dev": true,
- "requires": {
- "http-proxy": "1.16.2",
- "is-glob": "3.1.0",
- "lodash": "4.17.4",
- "micromatch": "2.3.11"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-3.1.0/7ba5ae24217804ac70707b96922567486cc3e84a.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "2.1.1"
- }
- }
+ "node_modules/marky": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
+ "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
}
},
- "http-signature": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/http-signature/-/http-signature-1.1.1/df72e267066cd0ac67fb76adf8e134a8fbcf91bf.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "node_modules/mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
"dev": true,
- "requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "https-browserify": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/https-browserify/-/https-browserify-1.0.0/ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
+ "node_modules/mdn-data": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
+ "dev": true,
+ "license": "CC0-1.0"
},
- "https-proxy-agent": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/https-proxy-agent/-/https-proxy-agent-1.0.0/35f7da6c48ce4ddbfa264891ac593ee5ff8671e6.tgz",
- "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+ "node_modules/meow": {
+ "version": "12.1.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
+ "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
"dev": true,
- "requires": {
- "agent-base": "2.1.1",
- "debug": "2.6.9",
- "extend": "3.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "http://npm.trustu.pre/iconv-lite/-/iconv-lite-0.4.19/f7468f60135f5e5dad3399c0a81be9a1603a082b.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
- },
- "icss-replace-symbols": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/icss-replace-symbols/-/icss-replace-symbols-1.1.0/06ea6f83679a7749e386cfe1fe812ae5db223ded.tgz",
- "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
- "dev": true
+ "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,
+ "license": "MIT"
},
- "icss-utils": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/icss-utils/-/icss-utils-2.1.0/83f0a0ec378bf3246178b6c2ad9136f135b1c962.tgz",
- "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
- "dev": true,
- "requires": {
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
}
},
- "ieee754": {
- "version": "1.1.8",
- "resolved": "http://npm.trustu.pre/ieee754/-/ieee754-1.1.8/be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4.tgz",
- "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
- "dev": true
- },
- "iferr": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/iferr/-/iferr-0.1.5/c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
- "dev": true
+ "node_modules/metaviewport-parser": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz",
+ "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ==",
+ "dev": true,
+ "license": "MIT"
},
- "image-size": {
- "version": "0.5.5",
- "resolved": "http://npm.trustu.pre/image-size/-/image-size-0.5.5/09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c.tgz",
- "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
},
- "immediate": {
- "version": "3.0.6",
- "resolved": "http://npm.trustu.pre/immediate/-/immediate-3.0.6/9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b.tgz",
- "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
- "dev": true
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
- "import-local": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/import-local/-/import-local-0.1.1/b1179572aacdc11c6a91009fb430dbcab5f668a8.tgz",
- "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=",
+ "node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"dev": true,
- "requires": {
- "pkg-dir": "2.0.0",
- "resolve-cwd": "2.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/imurmurhash/-/imurmurhash-0.1.4/9218b9b2b928a238b13dc4fb6b6d576f231453ea.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
+ "node_modules/mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "~1.33.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "in-publish": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/in-publish/-/in-publish-2.0.0/e20ff5e3a2afc2690320b6dc552682a9c7fadf51.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+ "node_modules/mime-types/node_modules/mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
- "indent-string": {
+ "node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "http://npm.trustu.pre/indent-string/-/indent-string-2.1.0/8e2d48348742121b4a8218b7a137e9a52049dc80.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
- "requires": {
- "repeating": "2.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/indexes-of/-/indexes-of-1.0.1/f30f716c8e2bd346c7b67d3df3915566a7c05607.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
- },
- "indexof": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/indexof/-/indexof-0.0.1/82dc336d232b9062179d05ab3293a66059fd435d.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
- "dev": true
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "inflight": {
- "version": "1.0.6",
- "resolved": "http://npm.trustu.pre/inflight/-/inflight-1.0.6/49bd6331d7d02d0c09bc910a1075ba8165b56df9.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "inherits": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/inherits/-/inherits-2.0.3/633c2c83e3da42a502f52466022480f4208261de.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "ini": {
- "version": "1.3.5",
- "resolved": "http://npm.trustu.pre/ini/-/ini-1.3.5/eee25f56db1c9ec6085e0c22778083f596abf927.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
},
- "internal-ip": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/internal-ip/-/internal-ip-1.2.0/ae9fbf93b984878785d50a8de1b356956058cf5c.tgz",
- "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+ "node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
"dev": true,
- "requires": {
- "meow": "3.7.0"
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
}
},
- "interpret": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/interpret/-/interpret-1.1.0/7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614.tgz",
- "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
- "dev": true
+ "node_modules/minipass-fetch": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
+ "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
},
- "invariant": {
- "version": "2.2.2",
- "resolved": "http://npm.trustu.pre/invariant/-/invariant-2.2.2/9e1f56ac0acdb6bf303306f338be3b204ae60360.tgz",
- "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
"dev": true,
- "requires": {
- "loose-envify": "1.3.1"
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/invert-kv/-/invert-kv-1.0.0/104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "ip": {
- "version": "1.1.5",
- "resolved": "http://npm.trustu.pre/ip/-/ip-1.1.5/bdded70114290828c0a039e72ef25f5aaec4354a.tgz",
- "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
- "dev": true
+ "node_modules/minipass-flush/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,
+ "license": "ISC"
},
- "ipaddr.js": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/ipaddr.js/-/ipaddr.js-1.5.2/d4b505bde9946987ccf0fc58d9010ff9607e3fa0.tgz",
- "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=",
- "dev": true
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "is-absolute-url": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/is-absolute-url/-/is-absolute-url-2.1.0/50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6.tgz",
- "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
- "dev": true
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/is-arrayish/-/is-arrayish-0.2.1/77c99840527aa8ecb1a8ba697b80645a7a926a9d.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
+ "node_modules/minipass-pipeline/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,
+ "license": "ISC"
},
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-binary-path/-/is-binary-path-1.0.1/75f16642b480f187a711c814161fd3a4a7655898.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
"dev": true,
- "requires": {
- "binary-extensions": "1.11.0"
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "http://npm.trustu.pre/is-buffer/-/is-buffer-1.1.6/efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-builtin-module/-/is-builtin-module-1.0.0/540572d34f7ac3119f8f76c30cbc1b1e037affbe.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
- "requires": {
- "builtin-modules": "1.1.1"
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "is-callable": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/is-callable/-/is-callable-1.1.3/86eb75392805ddc33af71c92a0eedf74ee7604b2.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
- "dev": true
+ "node_modules/minipass-sized/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,
+ "license": "ISC"
},
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-date-object/-/is-date-object-1.0.1/9aa20eb6aeebbff77fbd33e74ca01b33581d3a16.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
+ "node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
},
- "is-directory": {
- "version": "0.3.1",
- "resolved": "http://npm.trustu.pre/is-directory/-/is-directory-0.3.1/61339b6f2475fc772fd9c9d83f5c8575dc154ae1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true,
+ "license": "MIT"
},
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/is-dotfile/-/is-dotfile-1.0.3/a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
+ "node_modules/module-details-from-path": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz",
+ "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==",
+ "dev": true,
+ "license": "MIT"
},
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/is-equal-shallow/-/is-equal-shallow-0.1.3/2238098fc221de0bcfa5d9eac4c45d638aa1c534.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
"dev": true,
- "requires": {
- "is-primitive": "2.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
}
},
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/is-extendable/-/is-extendable-0.1.1/62b110e289a471418e3ec36a617d472e301dfc89.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-2.1.1/a88c02535791f02ed37c76a1b9ea9773c833f8c2.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
+ "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==",
+ "license": "MIT"
},
- "is-finite": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/is-finite/-/is-finite-1.0.2/cc6677695602be550ef11e8b4aa6305342b6d0aa.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "node_modules/msgpackr": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz",
+ "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==",
"dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
+ "license": "MIT",
+ "optional": true,
+ "optionalDependencies": {
+ "msgpackr-extract": "^3.0.2"
}
},
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0/ef9e31386f031a7f0d643af82fde50c457ef00cb.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "node_modules/msgpackr-extract": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
+ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
"dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-gyp-build-optional-packages": "5.2.2"
+ },
+ "bin": {
+ "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
+ },
+ "optionalDependencies": {
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
}
},
- "is-glob": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-4.0.0/9521c76845cc2610a85203ddf080a958c2ffabc0.tgz",
- "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "node_modules/mute-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
"dev": true,
- "requires": {
- "is-extglob": "2.1.1"
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "is-my-json-valid": {
- "version": "2.16.1",
- "resolved": "http://npm.trustu.pre/is-my-json-valid/-/is-my-json-valid-2.16.1/5a846777e2c2620d1e69104e5d3a03b1f6088f11.tgz",
- "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
+ "node_modules/nano-spawn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.0.0.tgz",
+ "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==",
"dev": true,
- "optional": true,
- "requires": {
- "generate-function": "2.0.0",
- "generate-object-property": "1.2.0",
- "jsonpointer": "4.0.1",
- "xtend": "4.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1"
}
},
- "is-number": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/is-number/-/is-number-2.1.0/01fcbbb393463a548f2f466cce16dece49db908f.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "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,
- "requires": {
- "kind-of": "3.2.2"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "is-obj": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-obj/-/is-obj-1.0.1/3e4729ac1f5fde025cd7d83a896dab9f4f67db0f.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-path-cwd/-/is-path-cwd-1.0.0/d225ec23132e89edd38fda767472e62e65f1106d.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
- "dev": true
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
},
- "is-path-in-cwd": {
+ "node_modules/negotiator": {
"version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-path-in-cwd/-/is-path-in-cwd-1.0.0/6477582b8214d602346094567003be8a9eac04dc.tgz",
- "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"dev": true,
- "requires": {
- "is-path-inside": "1.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-path-inside/-/is-path-inside-1.0.1/8ef5b7de50437a3fdca6b4e865ef7aa55cb48036.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"dev": true,
- "requires": {
- "path-is-inside": "1.0.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
}
},
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/is-plain-obj/-/is-plain-obj-1.1.0/71a50c8429dfca773c92a390a4a03b39fcd51d3e.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
+ "node_modules/ng-extract-i18n-merge": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-3.1.0.tgz",
+ "integrity": "sha512-4rJRcpTcP54xf5cjoz3S1By0T04X2RoyQcMDxr4wLdRx3fVxkeP8jeuLzmj9F4G5n0yMQb+6jhUiFERxpkfs1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/architect": "^0.2000.0",
+ "@angular-devkit/core": "^20.0.0",
+ "@angular-devkit/schematics": "^20.0.0",
+ "@schematics/angular": "^20.0.0",
+ "xmldoc": "^1.1.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@angular/build": "^20.0.0"
+ }
},
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "http://npm.trustu.pre/is-plain-object/-/is-plain-object-2.0.4/2c163b3fafb1b606d9d17928f05c2a1c38e07677.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": {
+ "version": "0.2000.6",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2000.6.tgz",
+ "integrity": "sha512-LvXYe7hqEgkBKzDy4VKTgCg2E2nAl8vC986n1+snzt2zMjo2l8wFl6BWal3AtaKGhPlp8/57Y53MdG2TIgUJNA==",
"dev": true,
- "requires": {
- "isobject": "3.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "20.0.6",
+ "rxjs": "7.8.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
}
},
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/is-posix-bracket/-/is-posix-bracket-0.1.1/3334dc79774368e92f016e6fbc0a88f5cd6e6bc4.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
+ "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": {
+ "version": "20.0.6",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.0.6.tgz",
+ "integrity": "sha512-kalYqR/soAMPgYdaKJL3iOMCubiq0gljpbQFzS+Uey/P1nn+MDY8V0zzc9cBNhKKkAxCXPN/NIEKC7ICOfaJbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.17.1",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.2",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
},
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/is-primitive/-/is-primitive-2.0.0/207bab91638499c07b2adf240a41a87210034575.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
+ "node_modules/ngx-progressbar": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/ngx-progressbar/-/ngx-progressbar-14.0.0.tgz",
+ "integrity": "sha512-tDj7h5F2aSI4/XaJjs50FnELVe6qFqyz3vVq22acacd3oDW2EyJB4c+IYaxMf5972OdTw0WL4n6UwQ3dqC+gCA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "peerDependencies": {
+ "@angular/cdk": ">=17.3.0",
+ "@angular/common": ">=17.3.0",
+ "@angular/core": ">=17.3.0",
+ "rxjs": ">=7.0.0"
+ }
},
- "is-property": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/is-property/-/is-property-1.0.2/57fe1c4e48474edd65b09911f26b1cd4095dda84.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "node_modules/node-addon-api": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
+ "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
"dev": true,
+ "license": "MIT",
"optional": true
},
- "is-regex": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/is-regex/-/is-regex-1.0.4/5517489b547091b0930e095654ced25ee97e9491.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "node_modules/node-gyp": {
+ "version": "11.5.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
+ "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
"dev": true,
- "requires": {
- "has": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^14.0.3",
+ "nopt": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "tar": "^7.4.3",
+ "tinyglobby": "^0.2.12",
+ "which": "^5.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/is-stream/-/is-stream-1.1.0/12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "is-subset": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/is-subset/-/is-subset-0.1.1/8a59117d932de1de00f245fcdd39ce43f1e939a6.tgz",
- "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
- "dev": true
- },
- "is-svg": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/is-svg/-/is-svg-2.1.0/cf61090da0d9efbcab8722deba6f032208dbb0e9.tgz",
- "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+ "node_modules/node-gyp-build-optional-packages": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
"dev": true,
- "requires": {
- "html-comment-regex": "1.1.1"
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.1"
+ },
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
}
},
- "is-symbol": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-symbol/-/is-symbol-1.0.1/3cc59f00025194b6ab2e38dbae6689256b660572.tgz",
- "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
- "dev": true
- },
- "is-text-path": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/is-text-path/-/is-text-path-1.0.1/4e1aa0fb51bfbcb3e92688001397202c1775b66e.tgz",
- "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "node_modules/node-gyp/node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
"dev": true,
- "requires": {
- "text-extensions": "1.7.0"
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
}
},
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-typedarray/-/is-typedarray-1.0.0/e479c80858df0c1b11ddda6940f96011fcda4a9a.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
+ "node_modules/node-gyp/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/is-utf8/-/is-utf8-0.2.1/4b0da1442104d1b336340e80797e865cf39f7d72.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
+ "node_modules/node-gyp/node_modules/tar": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz",
+ "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/is-wsl/-/is-wsl-1.1.0/1f16e4aa22b04d1336b66188a66af3c600c3a66d.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
+ "node_modules/node-gyp/node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
},
- "isarray": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-1.0.0/bb935d48582cba168c06834957a54a3e07124f11.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
+ "node_modules/node-gyp/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
},
- "isbinaryfile": {
- "version": "3.0.2",
- "resolved": "http://npm.trustu.pre/isbinaryfile/-/isbinaryfile-3.0.2/4a3e974ec0cba9004d3fc6cde7209ea69368a621.tgz",
- "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
- "dev": true
+ "node_modules/node-releases": {
+ "version": "2.0.26",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz",
+ "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==",
+ "license": "MIT"
},
- "isexe": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/isexe/-/isexe-2.0.0/e8fbf374dc556ff8947a10dcb0572d633f2cfa10.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
+ "node_modules/nopt": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
},
- "isobject": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/isobject/-/isobject-3.0.1/4e431e92b11a9731636aa1f9c8d1ccbcfdab78df.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/isstream/-/isstream-0.1.2/47e63f7af55afa6f92e1500e690eb8b8529c099a.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
+ "node_modules/npm-bundled": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz",
+ "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
},
- "istanbul": {
- "version": "0.4.5",
- "resolved": "http://npm.trustu.pre/istanbul/-/istanbul-0.4.5/65c7d73d4c4da84d4f3ac310b918fb0b8033733b.tgz",
- "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
- "dev": true,
- "requires": {
- "abbrev": "1.0.9",
- "async": "1.5.2",
- "escodegen": "1.8.1",
- "esprima": "2.7.3",
- "glob": "5.0.15",
- "handlebars": "4.0.11",
- "js-yaml": "3.7.0",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "once": "1.4.0",
- "resolve": "1.1.7",
- "supports-color": "3.2.3",
- "which": "1.3.0",
- "wordwrap": "1.0.0"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.0.9",
- "resolved": "http://npm.trustu.pre/abbrev/-/abbrev-1.0.9/91b4792588a7738c25f35dd6f63752a2f8776135.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/async/-/async-1.5.2/ec6a61ae56480c0c3cb241c95618e20892f9672a.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "http://npm.trustu.pre/glob/-/glob-5.0.15/1bc936b9e02f4a603fcc222ecf7633d30b8b93b1.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/has-flag/-/has-flag-1.0.0/9d9e793165ce017a00f00418c43f942a7b1d11fa.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "http://npm.trustu.pre/nopt/-/nopt-3.0.6/c6465dbf08abcd4db359317f79ac68a646b28ff9.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1.0.9"
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "http://npm.trustu.pre/resolve/-/resolve-1.1.7/203114d82ad2c5ed9e8e0411b3932875e889e97b.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-3.2.3/65ac0504b3954171d8a64946b2ae3cbb8a5f54f6.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "1.0.0"
- }
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/wordwrap/-/wordwrap-1.0.0/27584810891456a4171c8d0226441ade90cbcaeb.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- }
+ "node_modules/npm-install-checks": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.2.tgz",
+ "integrity": "sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "istanbul-api": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/istanbul-api/-/istanbul-api-1.2.1/0c60a0515eb11c7d65c6b50bba2c6e999acd8620.tgz",
- "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==",
- "dev": true,
- "requires": {
- "async": "2.6.0",
- "fileset": "2.0.3",
- "istanbul-lib-coverage": "1.1.1",
- "istanbul-lib-hook": "1.1.0",
- "istanbul-lib-instrument": "1.9.1",
- "istanbul-lib-report": "1.1.2",
- "istanbul-lib-source-maps": "1.2.2",
- "istanbul-reports": "1.1.3",
- "js-yaml": "3.7.0",
- "mkdirp": "0.5.1",
- "once": "1.4.0"
- }
- },
- "istanbul-instrumenter-loader": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0/e5492900ab0bba835efa8024cb00be9b3eea2700.tgz",
- "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=",
- "dev": true,
- "requires": {
- "convert-source-map": "1.5.1",
- "istanbul-lib-instrument": "1.9.1",
- "loader-utils": "0.2.17",
- "object-assign": "4.1.1"
- },
- "dependencies": {
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "http://npm.trustu.pre/loader-utils/-/loader-utils-0.2.17/f86e6374d43205a6e6c60e9196f17c0299bfb348.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1"
- }
- }
+ "node_modules/npm-normalize-package-bin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz",
+ "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "istanbul-lib-coverage": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1/73bfb998885299415c93d38a3e9adf784a77a9da.tgz",
- "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==",
- "dev": true
+ "node_modules/npm-package-arg": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.0.tgz",
+ "integrity": "sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^9.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
},
- "istanbul-lib-hook": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0/8538d970372cb3716d53e55523dd54b557a8d89b.tgz",
- "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==",
+ "node_modules/npm-packlist": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz",
+ "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==",
"dev": true,
- "requires": {
- "append-transform": "0.4.0"
+ "license": "ISC",
+ "dependencies": {
+ "ignore-walk": "^8.0.0",
+ "proc-log": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
}
},
- "istanbul-lib-instrument": {
- "version": "1.9.1",
- "resolved": "http://npm.trustu.pre/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1/250b30b3531e5d3251299fdd64b0b2c9db6b558e.tgz",
- "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
+ "node_modules/npm-packlist/node_modules/proc-log": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.0.0.tgz",
+ "integrity": "sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==",
"dev": true,
- "requires": {
- "babel-generator": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "istanbul-lib-coverage": "1.1.1",
- "semver": "5.4.1"
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
}
},
- "istanbul-lib-report": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/istanbul-lib-report/-/istanbul-lib-report-1.1.2/922be27c13b9511b979bd1587359f69798c1d425.tgz",
- "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==",
+ "node_modules/npm-pick-manifest": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz",
+ "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==",
"dev": true,
- "requires": {
- "istanbul-lib-coverage": "1.1.1",
- "mkdirp": "0.5.1",
- "path-parse": "1.0.5",
- "supports-color": "3.2.3"
- },
+ "license": "ISC",
"dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/has-flag/-/has-flag-1.0.0/9d9e793165ce017a00f00418c43f942a7b1d11fa.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-3.2.3/65ac0504b3954171d8a64946b2ae3cbb8a5f54f6.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "1.0.0"
- }
- }
+ "npm-install-checks": "^7.1.0",
+ "npm-normalize-package-bin": "^4.0.0",
+ "npm-package-arg": "^12.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "istanbul-lib-source-maps": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2/750578602435f28a0c04ee6d7d9e0f2960e62c1c.tgz",
- "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==",
- "dev": true,
- "requires": {
- "debug": "3.1.0",
- "istanbul-lib-coverage": "1.1.1",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "source-map": "0.5.7"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "http://npm.trustu.pre/debug/-/debug-3.1.0/5bb5a0672628b64149566ba16819e61518c67261.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
+ "node_modules/npm-pick-manifest/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "istanbul-reports": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/istanbul-reports/-/istanbul-reports-1.1.3/3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10.tgz",
- "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==",
+ "node_modules/npm-pick-manifest/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
- "requires": {
- "handlebars": "4.0.11"
- }
+ "license": "ISC"
},
- "jasmine": {
- "version": "2.8.0",
- "resolved": "http://npm.trustu.pre/jasmine/-/jasmine-2.8.0/6b089c0a11576b1f16df11b80146d91d4e8b8a3e.tgz",
- "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
+ "node_modules/npm-pick-manifest/node_modules/npm-package-arg": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz",
+ "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==",
"dev": true,
- "requires": {
- "exit": "0.1.2",
- "glob": "7.1.2",
- "jasmine-core": "2.8.0"
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "jasmine-core": {
- "version": "2.8.0",
- "resolved": "http://npm.trustu.pre/jasmine-core/-/jasmine-core-2.8.0/bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e.tgz",
- "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
- "dev": true
- },
- "jasmine-spec-reporter": {
- "version": "4.2.1",
- "resolved": "http://npm.trustu.pre/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1/1d632aec0341670ad324f92ba84b4b32b35e9e22.tgz",
- "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==",
+ "node_modules/npm-registry-fetch": {
+ "version": "18.0.2",
+ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz",
+ "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==",
"dev": true,
- "requires": {
- "colors": "1.1.2"
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/redact": "^3.0.0",
+ "jsonparse": "^1.3.1",
+ "make-fetch-happen": "^14.0.0",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^4.0.0",
+ "minizlib": "^3.0.1",
+ "npm-package-arg": "^12.0.0",
+ "proc-log": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "jasminewd2": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/jasminewd2/-/jasminewd2-2.2.0/e37cf0b17f199cce23bea71b2039395246b4ec4e.tgz",
- "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
- "dev": true
- },
- "js-base64": {
- "version": "2.4.0",
- "resolved": "http://npm.trustu.pre/js-base64/-/js-base64-2.4.0/9e566fee624751a1d720c966cd6226d29d4025aa.tgz",
- "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==",
- "dev": true
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "http://npm.trustu.pre/js-tokens/-/js-tokens-3.0.2/9866df395102130e38f7f996bceb65443209c25b.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.7.0",
- "resolved": "http://npm.trustu.pre/js-yaml/-/js-yaml-3.7.0/5c967ddd837a9bfdca5f2de84253abe8a1c03b80.tgz",
- "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+ "node_modules/npm-registry-fetch/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
"dev": true,
- "requires": {
- "argparse": "1.0.9",
- "esprima": "2.7.3"
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/jsbn/-/jsbn-0.1.1/a5e654c2e5a2deb5f201d96cefbca80c0ef2f513.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "node_modules/npm-registry-fetch/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
- "optional": true
- },
- "jsesc": {
- "version": "0.5.0",
- "resolved": "http://npm.trustu.pre/jsesc/-/jsesc-0.5.0/e7dee66e35d6fc16f710fe91d5cf69f70f08911d.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- },
- "json-loader": {
- "version": "0.5.7",
- "resolved": "http://npm.trustu.pre/json-loader/-/json-loader-0.5.7/dca14a70235ff82f0ac9a3abeb60d337a365185d.tgz",
- "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
- "dev": true
+ "license": "ISC"
},
- "json-schema": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/json-schema/-/json-schema-0.2.3/b480c892e59a2f05954ce727bd3f2a4e882f9e13.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "http://npm.trustu.pre/json-schema-traverse/-/json-schema-traverse-0.3.1/349a6d44c53a51de89b40805c5d5e59b417d3340.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/json-stable-stringify/-/json-stable-stringify-1.0.1/9a759d39c5f2ff503fd5300646ed445f88c4f9af.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "node_modules/npm-registry-fetch/node_modules/npm-package-arg": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz",
+ "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==",
"dev": true,
- "requires": {
- "jsonify": "0.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "http://npm.trustu.pre/json-stringify-safe/-/json-stringify-safe-5.0.1/1296a2d58fd45f19a0f6ce01d65701e2c735b6eb.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "json3": {
- "version": "3.3.2",
- "resolved": "http://npm.trustu.pre/json3/-/json3-3.3.2/3c0434743df93e2f5c42aee7b19bcb483575f4e1.tgz",
- "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "http://npm.trustu.pre/json5/-/json5-0.5.1/1eade7acc012034ad84e2396767ead9fa5495821.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/jsonfile/-/jsonfile-4.0.0/8771aae0799b64076b76640fca058f9c10e33ecb.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "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==",
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "jsonify": {
- "version": "0.0.0",
- "resolved": "http://npm.trustu.pre/jsonify/-/jsonify-0.0.0/2c74b6ee41d93ca51b7b5aaee8f503631d252a73.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "http://npm.trustu.pre/jsonparse/-/jsonparse-1.3.1/3f4dae4a91fac315f71062f8521cc239f1366280.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
- "dev": true
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
},
- "jsonpointer": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/jsonpointer/-/jsonpointer-4.0.1/4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9.tgz",
- "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "jsprim": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/jsprim/-/jsprim-1.4.1/313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "node_modules/object-inspect": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
},
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-1.0.0/f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "jszip": {
- "version": "3.1.5",
- "resolved": "http://npm.trustu.pre/jszip/-/jszip-3.1.5/e3c2a6c6d706ac6e603314036d43cd40beefdf37.tgz",
- "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dev": true,
- "requires": {
- "core-js": "2.3.0",
- "es6-promise": "3.0.2",
- "lie": "3.1.1",
- "pako": "1.0.6",
- "readable-stream": "2.0.6"
- },
+ "license": "MIT",
"dependencies": {
- "core-js": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/core-js/-/core-js-2.3.0/fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65.tgz",
- "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-2.0.6/8f90341e68a53ccc928788dacfcd11b36eb9b78e.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-0.10.31/62e203bc41766c6c28c9fc84301dab1c5310fa94.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "karma": {
- "version": "1.7.1",
- "resolved": "http://npm.trustu.pre/karma/-/karma-1.7.1/85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae.tgz",
- "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==",
- "dev": true,
- "requires": {
- "bluebird": "3.5.1",
- "body-parser": "1.18.2",
- "chokidar": "1.7.0",
- "colors": "1.1.2",
- "combine-lists": "1.0.1",
- "connect": "3.6.5",
- "core-js": "2.5.1",
- "di": "0.0.1",
- "dom-serialize": "2.2.1",
- "expand-braces": "0.1.2",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "http-proxy": "1.16.2",
- "isbinaryfile": "3.0.2",
- "lodash": "3.10.1",
- "log4js": "0.6.38",
- "mime": "1.6.0",
- "minimatch": "3.0.4",
- "optimist": "0.6.1",
- "qjobs": "1.1.5",
- "range-parser": "1.2.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
- "socket.io": "1.7.3",
- "source-map": "0.5.7",
- "tmp": "0.0.31",
- "useragent": "2.2.1"
- },
- "dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "http://npm.trustu.pre/lodash/-/lodash-3.10.1/5bf45e8e49ba4189e17d482789dfd15bd140b7b6.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
- }
+ "node_modules/on-headers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "karma-chrome-launcher": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0/cf1b9d07136cc18fe239327d24654c3dbc368acf.tgz",
- "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
- "requires": {
- "fs-access": "1.0.1",
- "which": "1.3.0"
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
}
},
- "karma-cli": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/karma-cli/-/karma-cli-1.0.1/ae6c3c58a313a1d00b45164c455b9b86ce17f960.tgz",
- "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=",
+ "node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
"dev": true,
- "requires": {
- "resolve": "1.5.0"
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "karma-coverage-istanbul-reporter": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0/d142cd9c55731c9e363ef7374e8ef1a31bebfadb.tgz",
- "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=",
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dev": true,
- "requires": {
- "istanbul-api": "1.2.1",
- "minimatch": "3.0.4"
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "karma-jasmine": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/karma-jasmine/-/karma-jasmine-1.1.1/6fe840e75a11600c9d91e84b33c458e1c46a3529.tgz",
- "integrity": "sha1-b+hA51oRYAydkehLM8RY4cRqNSk=",
- "dev": true
- },
- "karma-jasmine-html-reporter": {
- "version": "0.2.2",
- "resolved": "http://npm.trustu.pre/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2/48a8e5ef18807617ee2b5e33c1194c35b439524c.tgz",
- "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=",
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
- "requires": {
- "karma-jasmine": "1.1.1"
+ "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.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "karma-remap-istanbul": {
- "version": "0.6.0",
- "resolved": "http://npm.trustu.pre/karma-remap-istanbul/-/karma-remap-istanbul-0.6.0/97f3b770065254f9b4724f2d9be4a3a2e1baf6fc.tgz",
- "integrity": "sha1-l/O3cAZSVPm0ck8tm+SjouG69vw=",
+ "node_modules/ora": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
+ "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
"dev": true,
- "requires": {
- "istanbul": "0.4.5",
- "remap-istanbul": "0.9.5"
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.2",
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "karma-source-map-support": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/karma-source-map-support/-/karma-source-map-support-1.2.0/1bf81e7bb4b089627ab352ec4179e117c406a540.tgz",
- "integrity": "sha1-G/gee7SwiWJ6s1LsQXnhF8QGpUA=",
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "source-map-support": "0.4.18"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "killable": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/killable/-/killable-1.0.0/da8b84bd47de5395878f95d64d02f2449fe05e6b.tgz",
- "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://npm.trustu.pre/kind-of/-/kind-of-3.2.2/31ea21a734bab9bbb0f32466d893aea51e4a3c64.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "requires": {
- "is-buffer": "1.1.6"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "lazy-cache": {
- "version": "0.2.7",
- "resolved": "http://npm.trustu.pre/lazy-cache/-/lazy-cache-0.2.7/7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65.tgz",
- "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=",
- "dev": true
+ "node_modules/ordered-binary": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz",
+ "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/lcid/-/lcid-1.0.0/308accafa0bc483a3867b4b6f2b9506251d1b835.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
"dev": true,
- "requires": {
- "invert-kv": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "lcov-parse": {
- "version": "0.0.10",
- "resolved": "http://npm.trustu.pre/lcov-parse/-/lcov-parse-0.0.10/1b0b8ff9ac9c7889250582b70b71315d9da6d9a3.tgz",
- "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=",
- "dev": true
- },
- "less": {
- "version": "2.7.3",
- "resolved": "http://npm.trustu.pre/less/-/less-2.7.3/cc1260f51c900a9ec0d91fb6998139e02507b63b.tgz",
- "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
+ "node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
"dev": true,
- "requires": {
- "errno": "0.1.4",
- "graceful-fs": "4.1.11",
- "image-size": "0.5.5",
- "mime": "1.6.0",
- "mkdirp": "0.5.1",
- "promise": "7.3.1",
- "request": "2.81.0",
- "source-map": "0.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "less-loader": {
- "version": "4.0.5",
- "resolved": "http://npm.trustu.pre/less-loader/-/less-loader-4.0.5/ae155a7406cac6acd293d785587fcff0f478c4dd.tgz",
- "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=",
+ "node_modules/p-map": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
+ "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
"dev": true,
- "requires": {
- "clone": "2.1.1",
- "loader-utils": "1.1.0",
- "pify": "2.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
},
- "dependencies": {
- "clone": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/clone/-/clone-2.1.1/d217d1e961118e3ac9a4b8bba3285553bf647cdb.tgz",
- "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "levn": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/levn/-/levn-0.3.0/3b09924edf9f083c0490fdd4c0bc4421e04764ee.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "node_modules/pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
"dev": true,
- "requires": {
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2"
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "license-webpack-plugin": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/license-webpack-plugin/-/license-webpack-plugin-1.1.1/76b2cedccc78f139fd7877e576f756cfc141b8c2.tgz",
- "integrity": "sha512-TjKOyiC0exqd4Idy/4M8/DETR22dXBZks387DuS5LbslxHiMRXGx/Q2F/j9IUtvEoH5uFvt72vRgk/G6f8j3Dg==",
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
"dev": true,
- "requires": {
- "ejs": "2.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "lie": {
- "version": "3.1.1",
- "resolved": "http://npm.trustu.pre/lie/-/lie-3.1.1/9a436b2cc7746ca59de7a41fa469b3efb76bd87e.tgz",
- "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
"dev": true,
- "requires": {
- "immediate": "3.0.6"
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/pacote": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.0.tgz",
+ "integrity": "sha512-lcqexq73AMv6QNLo7SOpz0JJoaGdS3rBFgF122NZVl1bApo2mfu+XzUBU/X/XsiJu+iUmKpekRayqQYAs+PhkA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.0",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "@npmcli/run-script": "^9.0.0",
+ "cacache": "^19.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^7.0.2",
+ "npm-package-arg": "^12.0.0",
+ "npm-packlist": "^10.0.0",
+ "npm-pick-manifest": "^10.0.0",
+ "npm-registry-fetch": "^18.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "sigstore": "^3.0.0",
+ "ssri": "^12.0.0",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "pacote": "bin/index.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
}
},
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/load-json-file/-/load-json-file-1.1.0/956905708d58b4bab4c2261b04f59f31c99374c0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "node_modules/pacote/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "strip-bom": "2.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "loader-runner": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/loader-runner/-/loader-runner-2.3.0/f482aea82d543e07921700d5a46ef26fdac6b8a2.tgz",
- "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
- "dev": true
+ "node_modules/pacote/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
},
- "loader-utils": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/loader-utils/-/loader-utils-1.1.0/c98aef488bcceda2ffb5e2de646d6a754429f5cd.tgz",
- "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "node_modules/pacote/node_modules/npm-package-arg": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz",
+ "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==",
"dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1"
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "locate-path": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/locate-path/-/locate-path-2.0.0/2b568b265eec944c6d9c0de9c3dbbbca0354cd8e.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "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==",
"dev": true,
- "requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/path-exists/-/path-exists-3.0.0/ce0ebeaa5f78cb18925ea7d810d7b59b010fd515.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "lodash": {
- "version": "4.17.4",
- "resolved": "http://npm.trustu.pre/lodash/-/lodash-4.17.4/78203a4d1c328ae1d86dca6460e369b57f4055ae.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
- "dev": true
- },
- "lodash._basecopy": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/lodash._basecopy/-/lodash._basecopy-3.0.1/8da0e6a876cf344c0ad8a54882111dd3c5c7ca36.tgz",
- "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
- "dev": true
- },
- "lodash._basetostring": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/lodash._basetostring/-/lodash._basetostring-3.0.1/d1861d877f824a52f669832dcaf3ee15566a07d5.tgz",
- "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
- "dev": true
- },
- "lodash._basevalues": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/lodash._basevalues/-/lodash._basevalues-3.0.0/5b775762802bde3d3297503e26300820fdf661b7.tgz",
- "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
- "dev": true
- },
- "lodash._getnative": {
- "version": "3.9.1",
- "resolved": "http://npm.trustu.pre/lodash._getnative/-/lodash._getnative-3.9.1/570bc7dede46d61cdcde687d65d3eecbaa3aaff5.tgz",
- "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
- "dev": true
- },
- "lodash._isiterateecall": {
- "version": "3.0.9",
- "resolved": "http://npm.trustu.pre/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9/5203ad7ba425fae842460e696db9cf3e6aac057c.tgz",
- "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
- "dev": true
- },
- "lodash._reescape": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/lodash._reescape/-/lodash._reescape-3.0.0/2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a.tgz",
- "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
- "dev": true
- },
- "lodash._reevaluate": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/lodash._reevaluate/-/lodash._reevaluate-3.0.0/58bc74c40664953ae0b124d806996daca431e2ed.tgz",
- "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
- "dev": true
- },
- "lodash._reinterpolate": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0/0ccf2d89166af03b3663c796538b75ac6e114d9d.tgz",
- "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
- "dev": true
- },
- "lodash._root": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/lodash._root/-/lodash._root-3.0.1/fba1c4524c19ee9a5f8136b4609f017cf4ded692.tgz",
- "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+ "node_modules/parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==",
"dev": true
},
- "lodash.assign": {
- "version": "4.2.0",
- "resolved": "http://npm.trustu.pre/lodash.assign/-/lodash.assign-4.2.0/0d99f3ccd7a6d261d19bdaeb9245005d285808e7.tgz",
- "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+ "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==",
"dev": true,
- "optional": 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"
+ }
},
- "lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "http://npm.trustu.pre/lodash.camelcase/-/lodash.camelcase-4.3.0/b28aa6288a2b9fc651035c7711f65ab6190331a6.tgz",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
- "dev": true
+ "node_modules/parse-json/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,
+ "license": "MIT"
},
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "http://npm.trustu.pre/lodash.clonedeep/-/lodash.clonedeep-4.5.0/e23f3f9c4f8fbdde872529c1071857a086e5ccef.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
+ "node_modules/parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
+ "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
},
- "lodash.escape": {
- "version": "3.2.0",
- "resolved": "http://npm.trustu.pre/lodash.escape/-/lodash.escape-3.2.0/995ee0dc18c1b48cc92effae71a10aab5b487698.tgz",
- "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "node_modules/parse5-html-rewriting-stream": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz",
+ "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==",
"dev": true,
- "requires": {
- "lodash._root": "3.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0",
+ "parse5": "^8.0.0",
+ "parse5-sax-parser": "^8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "lodash.isarguments": {
- "version": "3.1.0",
- "resolved": "http://npm.trustu.pre/lodash.isarguments/-/lodash.isarguments-3.1.0/2f573d85c6a24289ff00663b491c1d338ff3458a.tgz",
- "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
- "dev": true
+ "node_modules/parse5-html-rewriting-stream/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
},
- "lodash.isarray": {
- "version": "3.0.4",
- "resolved": "http://npm.trustu.pre/lodash.isarray/-/lodash.isarray-3.0.4/79e4eb88c36a8122af86f844aa9bcd851b5fbb55.tgz",
- "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
- "dev": true
+ "node_modules/parse5-sax-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz",
+ "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
},
- "lodash.keys": {
- "version": "3.1.2",
- "resolved": "http://npm.trustu.pre/lodash.keys/-/lodash.keys-3.1.2/4dbc0472b156be50a0b286855d1bd0b0c656098a.tgz",
- "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"dev": true,
- "requires": {
- "lodash._getnative": "3.9.1",
- "lodash.isarguments": "3.1.0",
- "lodash.isarray": "3.0.4"
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "lodash.memoize": {
- "version": "4.1.2",
- "resolved": "http://npm.trustu.pre/lodash.memoize/-/lodash.memoize-4.1.2/bcc6c49a42a2840ed997f323eada5ecd182e0bfe.tgz",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
- "dev": true
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "lodash.mergewith": {
- "version": "4.6.0",
- "resolved": "http://npm.trustu.pre/lodash.mergewith/-/lodash.mergewith-4.6.0/150cf0a16791f5903b8891eab154609274bdea55.tgz",
- "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=",
+ "node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
},
- "lodash.restparam": {
- "version": "3.6.1",
- "resolved": "http://npm.trustu.pre/lodash.restparam/-/lodash.restparam-3.6.1/936a4e309ef330a7645ed4145986c85ae5b20805.tgz",
- "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
- "dev": true
+ "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "lodash.tail": {
- "version": "4.1.1",
- "resolved": "http://npm.trustu.pre/lodash.tail/-/lodash.tail-4.1.1/d2333a36d9e7717c8ad2f7cacafec7c32b444664.tgz",
- "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
- "dev": true
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true,
+ "license": "(WTFPL OR MIT)"
},
- "lodash.template": {
- "version": "3.6.2",
- "resolved": "http://npm.trustu.pre/lodash.template/-/lodash.template-3.6.2/f8cdecc6169a255be9098ae8b0c53d378931d14f.tgz",
- "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
- "dev": true,
- "requires": {
- "lodash._basecopy": "3.0.1",
- "lodash._basetostring": "3.0.1",
- "lodash._basevalues": "3.0.0",
- "lodash._isiterateecall": "3.0.9",
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0",
- "lodash.keys": "3.1.2",
- "lodash.restparam": "3.6.1",
- "lodash.templatesettings": "3.1.1"
- }
- },
- "lodash.templatesettings": {
+ "node_modules/path-key": {
"version": "3.1.1",
- "resolved": "http://npm.trustu.pre/lodash.templatesettings/-/lodash.templatesettings-3.1.1/fb307844753b66b9f1afa54e262c745307dba8e5.tgz",
- "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
- "requires": {
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "http://npm.trustu.pre/lodash.uniq/-/lodash.uniq-4.5.0/d0225373aeb652adc1bc82e4945339a842754773.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
- "dev": true
- },
- "log-driver": {
- "version": "1.2.5",
- "resolved": "http://npm.trustu.pre/log-driver/-/log-driver-1.2.5/7ae4ec257302fd790d557cb10c97100d857b0056.tgz",
- "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=",
- "dev": true
+ "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,
+ "license": "MIT"
},
- "log4js": {
- "version": "0.6.38",
- "resolved": "http://npm.trustu.pre/log4js/-/log4js-0.6.38/2c494116695d6fb25480943d3fc872e662a522fd.tgz",
- "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
- "requires": {
- "readable-stream": "1.0.34",
- "semver": "4.3.6"
- },
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-0.0.1/8a18acfca9a8f4177e09abfc6038939b05d1eedf.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-1.0.34/125820e34bc842d2f2aaafafe4c2916ee32c157c.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "semver": {
- "version": "4.3.6",
- "resolved": "http://npm.trustu.pre/semver/-/semver-4.3.6/300bc6e0e86374f7ba61068b5b1ecd57fc6532da.tgz",
- "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
- "dev": true
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-0.10.31/62e203bc41766c6c28c9fc84301dab1c5310fa94.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "loglevel": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/loglevel/-/loglevel-1.6.0/ae0caa561111498c5ba13723d6fb631d24003934.tgz",
- "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=",
- "dev": true
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
},
- "longest": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/longest/-/longest-1.0.1/30a0b2da38f73770e8294a0d22e6625ed77d0097.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
- "dev": true
+ "node_modules/path-to-regexp": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
+ "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==",
+ "dev": true,
+ "license": "MIT"
},
- "loose-envify": {
- "version": "1.3.1",
- "resolved": "http://npm.trustu.pre/loose-envify/-/loose-envify-1.3.1/d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "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,
- "requires": {
- "js-tokens": "3.0.2"
- }
+ "license": "MIT"
},
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/loud-rejection/-/loud-rejection-1.6.0/5b46f80147edee578870f086d04821cf998e551f.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pg-int8": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
"dev": true,
- "requires": {
- "currently-unhandled": "0.4.1",
- "signal-exit": "3.0.2"
+ "license": "ISC",
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "lower-case": {
- "version": "1.1.4",
- "resolved": "http://npm.trustu.pre/lower-case/-/lower-case-1.1.4/9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
- "dev": true
+ "node_modules/pg-protocol": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz",
+ "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==",
+ "dev": true,
+ "license": "MIT"
},
- "lru-cache": {
- "version": "4.1.1",
- "resolved": "http://npm.trustu.pre/lru-cache/-/lru-cache-4.1.1/622e32e82488b49279114a4f9ecf45e7cd6bba55.tgz",
- "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "node_modules/pg-types": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
"dev": true,
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
+ "license": "MIT",
+ "dependencies": {
+ "pg-int8": "1.0.1",
+ "postgres-array": "~2.0.0",
+ "postgres-bytea": "~1.0.0",
+ "postgres-date": "~1.0.4",
+ "postgres-interval": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "macaddress": {
- "version": "0.2.8",
- "resolved": "http://npm.trustu.pre/macaddress/-/macaddress-0.2.8/5904dc537c39ec6dbefeae902327135fa8511f12.tgz",
- "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
- "dev": true
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
- "magic-string": {
- "version": "0.22.4",
- "resolved": "http://npm.trustu.pre/magic-string/-/magic-string-0.22.4/31039b4e40366395618c1d6cf8193c53917475ff.tgz",
- "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==",
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
"dev": true,
- "requires": {
- "vlq": "0.2.3"
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "make-dir": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/make-dir/-/make-dir-1.1.0/19b4369fe48c116f53c2af95ad102c0e39e85d51.tgz",
- "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==",
+ "node_modules/piscina": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.3.tgz",
+ "integrity": "sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==",
"dev": true,
- "requires": {
- "pify": "3.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.x"
},
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/pify/-/pify-3.0.0/e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
+ "optionalDependencies": {
+ "@napi-rs/nice": "^1.0.4"
}
},
- "make-error": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/make-error/-/make-error-1.3.0/52ad3a339ccf10ce62b4040b708fe707244b8b96.tgz",
- "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
- "dev": true
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/map-obj/-/map-obj-1.0.1/d933ceb9205d82bdcf4886f6742bdc2b4dea146d.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "math-expression-evaluator": {
- "version": "1.2.17",
- "resolved": "http://npm.trustu.pre/math-expression-evaluator/-/math-expression-evaluator-1.2.17/de819fdbcd84dccd8fae59c6aeb79615b9d266ac.tgz",
- "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
- "dev": true
- },
- "md5": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/md5/-/md5-2.2.1/53ab38d5fe3c8891ba465329ea23fac0540126f9.tgz",
- "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
- "dev": true,
- "requires": {
- "charenc": "0.0.2",
- "crypt": "0.0.2",
- "is-buffer": "1.1.6"
- }
- },
- "md5.js": {
- "version": "1.3.4",
- "resolved": "http://npm.trustu.pre/md5.js/-/md5.js-1.3.4/e9bdbde94a20a5ac18b04340fc5764d5b09d901d.tgz",
- "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
- "dev": true,
- "requires": {
- "hash-base": "3.0.4",
- "inherits": "2.0.3"
- },
- "dependencies": {
- "hash-base": {
- "version": "3.0.4",
- "resolved": "http://npm.trustu.pre/hash-base/-/hash-base-3.0.4/5fc8686847ecd73499403319a6b0a3f3f6ae4918.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
- "dev": true,
- "requires": {
- "inherits": "2.0.3",
- "safe-buffer": "5.1.1"
- }
- }
+ "node_modules/pkce-challenge": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz",
+ "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.20.0"
}
},
- "media-typer": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/media-typer/-/media-typer-0.3.0/8710d7af0aa626f8fffa1ce00168545263255748.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
+ "node_modules/playwright": {
+ "version": "1.56.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz",
+ "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.56.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
},
- "mem": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/mem/-/mem-1.1.0/5edd52b485ca1d900fe64895505399a0dfa45f76.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "node_modules/playwright-core": {
+ "version": "1.56.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz",
+ "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==",
"dev": true,
- "requires": {
- "mimic-fn": "1.1.0"
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "memory-fs": {
- "version": "0.4.1",
- "resolved": "http://npm.trustu.pre/memory-fs/-/memory-fs-0.4.1/3a9a20b8462523e447cfbc7e8bb80ed667bfc552.tgz",
- "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
"dev": true,
- "requires": {
- "errno": "0.1.4",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
}
},
- "meow": {
- "version": "3.7.0",
- "resolved": "http://npm.trustu.pre/meow/-/meow-3.7.0/72cb668b425228290abbfa856892587308a801fb.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"dev": true,
- "requires": {
- "camelcase-keys": "2.1.0",
- "decamelize": "1.2.0",
- "loud-rejection": "1.6.0",
- "map-obj": "1.0.1",
- "minimist": "1.2.0",
- "normalize-package-data": "2.4.0",
- "object-assign": "4.1.1",
- "read-pkg-up": "1.0.1",
- "redent": "1.0.0",
- "trim-newlines": "1.0.0"
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
}
},
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/merge-descriptors/-/merge-descriptors-1.0.1/b00aaa556dd8b44568150ec9d1b953f3f90cbb61.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
- "dev": true
+ "node_modules/postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true,
+ "license": "MIT"
},
- "methods": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/methods/-/methods-1.1.2/5529a4d67654134edcc5266656835b0f851afcee.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
+ "node_modules/postcss-resolve-nested-selector": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
+ "dev": true,
+ "license": "MIT"
},
- "micromatch": {
- "version": "2.3.11",
- "resolved": "http://npm.trustu.pre/micromatch/-/micromatch-2.3.11/86677c97d1720b363431d04d0d15293bd38c1565.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.4"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
+ "node_modules/postcss-safe-parser": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz",
+ "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
},
- "is-glob": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-2.0.1/d096f926a3ded5600f3fdfd91198cb0888c2d863.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
}
},
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/miller-rabin/-/miller-rabin-4.0.1/f080351c865b0dc562a8462966daa53543c78a4d.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "node_modules/postcss-scss": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
+ "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "brorand": "1.1.0"
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-scss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.29"
}
},
- "mime": {
- "version": "1.6.0",
- "resolved": "http://npm.trustu.pre/mime/-/mime-1.6.0/32cd9e5c64553bd58d19a568af452acff04981b1.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
- },
- "mime-db": {
- "version": "1.30.0",
- "resolved": "http://npm.trustu.pre/mime-db/-/mime-db-1.30.0/74c643da2dd9d6a45399963465b26d5ca7d71f01.tgz",
- "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
- "dev": true
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "mime-types": {
- "version": "2.1.17",
- "resolved": "http://npm.trustu.pre/mime-types/-/mime-types-2.1.17/09d7a393f03e995a79f8af857b70a9e0ab16557a.tgz",
- "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "node_modules/postcss-sorting": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-9.1.0.tgz",
+ "integrity": "sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==",
"dev": true,
- "requires": {
- "mime-db": "1.30.0"
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.4.20"
}
},
- "mimeparse": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/mimeparse/-/mimeparse-0.1.4/dafb02752370fd226093ae3152c271af01ac254a.tgz",
- "integrity": "sha1-2vsCdSNw/SJgk64xUsJxrwGsJUo=",
- "dev": true
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
},
- "mimic-fn": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/mimic-fn/-/mimic-fn-1.1.0/e667783d92e89dbd342818b5230b9d62a672ad18.tgz",
- "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
- "dev": true
+ "node_modules/postgres-array": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
},
- "minimalistic-assert": {
+ "node_modules/postgres-bytea": {
"version": "1.0.0",
- "resolved": "http://npm.trustu.pre/minimalistic-assert/-/minimalistic-assert-1.0.0/702be2dda6b37f4836bcb3f5db56641b64a1d3d3.tgz",
- "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1/f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+ "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "http://npm.trustu.pre/minimatch/-/minimatch-3.0.4/5166e286457f03306064be5497e8dbb0c3d32083.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "node_modules/postgres-date": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
"dev": true,
- "requires": {
- "brace-expansion": "1.1.8"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "minimist": {
+ "node_modules/postgres-interval": {
"version": "1.2.0",
- "resolved": "http://npm.trustu.pre/minimist/-/minimist-1.2.0/a35008b20f41383eec1fb914f4cd5df79a264284.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "mississippi": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/mississippi/-/mississippi-1.3.0/d201583eb12327e3c5c1642a404a9cacf94e34f5.tgz",
- "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=",
- "dev": true,
- "requires": {
- "concat-stream": "1.6.0",
- "duplexify": "3.5.1",
- "end-of-stream": "1.4.0",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "1.0.3",
- "pumpify": "1.3.5",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
- }
- },
- "mixin-object": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/mixin-object/-/mixin-object-2.0.1/4fb949441dab182540f1fe035ba60e1947a5e57e.tgz",
- "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
"dev": true,
- "requires": {
- "for-in": "0.1.8",
- "is-extendable": "0.1.1"
- },
+ "license": "MIT",
"dependencies": {
- "for-in": {
- "version": "0.1.8",
- "resolved": "http://npm.trustu.pre/for-in/-/for-in-0.1.8/d8773908e31256109952b1fdb9b3fa867d2775e1.tgz",
- "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
- "dev": true
- }
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "http://npm.trustu.pre/mkdirp/-/mkdirp-0.5.1/30057438eac6cf7f8c4767f38648d6697d75c903.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "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,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "http://npm.trustu.pre/minimist/-/minimist-0.0.8/857fcabfc3397d2625b8228262e86aa7a011b05d.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "modify-values": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/modify-values/-/modify-values-1.0.0/e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2.tgz",
- "integrity": "sha1-4rbN65zhn5kxelNyLz2/XfXqqrI=",
- "dev": true
- },
- "move-concurrently": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/move-concurrently/-/move-concurrently-1.0.1/be2c005fda32e0b29af1f05d7c4b33214c701f92.tgz",
- "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "node_modules/prettier": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
+ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
- "requires": {
- "aproba": "1.2.0",
- "copy-concurrently": "1.0.5",
- "fs-write-stream-atomic": "1.0.10",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "ms": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/ms/-/ms-2.0.0/5608aeadfc00be6c2901df5f9861788de0d597c8.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "multicast-dns": {
- "version": "6.2.1",
- "resolved": "http://npm.trustu.pre/multicast-dns/-/multicast-dns-6.2.1/c5035defa9219d30640558a49298067352098060.tgz",
- "integrity": "sha512-uV3/ckdsffHx9IrGQrx613mturMdMqQ06WTq+C09NsStJ9iNG6RcUWgPKs1Rfjy+idZT6tfQoXEusGNnEZhT3w==",
+ "node_modules/prettier-eslint": {
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.4.2.tgz",
+ "integrity": "sha512-vtJAQEkaN8fW5QKl08t7A5KCjlZuDUNeIlr9hgolMS5s3+uzbfRHDwaRnzrdqnY2YpHDmeDS/8zY0MKQHXJtaA==",
"dev": true,
- "requires": {
- "dns-packet": "1.2.2",
- "thunky": "0.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/parser": "^6.21.0",
+ "common-tags": "^1.8.2",
+ "dlv": "^1.1.3",
+ "eslint": "^8.57.1",
+ "indent-string": "^4.0.0",
+ "lodash.merge": "^4.6.2",
+ "loglevel-colored-level-prefix": "^1.0.0",
+ "prettier": "^3.5.3",
+ "pretty-format": "^29.7.0",
+ "require-relative": "^0.8.7",
+ "tslib": "^2.8.1",
+ "vue-eslint-parser": "^9.4.3"
+ },
+ "engines": {
+ "node": ">=16.10.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/prettier-eslint"
+ },
+ "peerDependencies": {
+ "prettier-plugin-svelte": "^3.0.0",
+ "svelte-eslint-parser": "*"
+ },
+ "peerDependenciesMeta": {
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "svelte-eslint-parser": {
+ "optional": true
+ }
}
},
- "multicast-dns-service-types": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0/899f11d9686e5e05cb91b35d5f0e63b773cfc901.tgz",
- "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
- "dev": true
- },
- "multipipe": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/multipipe/-/multipipe-0.1.2/2a8f2ddf70eed564dff2d57f1e1a137d9f05078b.tgz",
- "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "node_modules/prettier-eslint/node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
- "requires": {
- "duplexer2": "0.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "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"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "nan": {
- "version": "2.8.0",
- "resolved": "http://npm.trustu.pre/nan/-/nan-2.8.0/ed715f3fe9de02b57a5e6252d90a96675e1f085a.tgz",
- "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=",
+ "node_modules/prettier-eslint/node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
- "optional": true
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "ncname": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/ncname/-/ncname-1.0.0/5b57ad18b1ca092864ef62b0b1ed8194f383b71c.tgz",
- "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=",
+ "node_modules/prettier-eslint/node_modules/@eslint/eslintrc/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,
- "requires": {
- "xml-char-classes": "1.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "negotiator": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/negotiator/-/negotiator-0.6.1/2b327184e8992101177b28563fb5e7102acd0ca9.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
- "dev": true
- },
- "no-case": {
- "version": "2.3.2",
- "resolved": "http://npm.trustu.pre/no-case/-/no-case-2.3.2/60b813396be39b3f1288a4c1ed5d1e7d28b464ac.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "node_modules/prettier-eslint/node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
- "requires": {
- "lower-case": "1.1.4"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node-forge": {
- "version": "0.6.33",
- "resolved": "http://npm.trustu.pre/node-forge/-/node-forge-0.6.33/463811879f573d45155ad6a9f43dc296e8e85ebc.tgz",
- "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=",
- "dev": true
- },
- "node-gyp": {
- "version": "3.6.2",
- "resolved": "http://npm.trustu.pre/node-gyp/-/node-gyp-3.6.2/9bfbe54562286284838e750eac05295853fa1c60.tgz",
- "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
+ "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
+ "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
"dev": true,
- "optional": true,
- "requires": {
- "fstream": "1.0.11",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.4",
- "request": "2.81.0",
- "rimraf": "2.6.2",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.3.0"
- },
- "dependencies": {
- "nopt": {
- "version": "3.0.6",
- "resolved": "http://npm.trustu.pre/nopt/-/nopt-3.0.6/c6465dbf08abcd4db359317f79ac68a646b28ff9.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1.1.1"
- }
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "http://npm.trustu.pre/semver/-/semver-5.3.0/9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
"optional": true
}
}
},
- "node-libs-browser": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/node-libs-browser/-/node-libs-browser-2.1.0/5f94263d404f6e44767d726901fff05478d600df.tgz",
- "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
- "dev": true,
- "requires": {
- "assert": "1.4.1",
- "browserify-zlib": "0.2.0",
- "buffer": "4.9.1",
- "console-browserify": "1.1.0",
- "constants-browserify": "1.0.0",
- "crypto-browserify": "3.12.0",
- "domain-browser": "1.1.7",
- "events": "1.1.1",
- "https-browserify": "1.0.0",
- "os-browserify": "0.3.0",
- "path-browserify": "0.0.0",
- "process": "0.11.10",
- "punycode": "1.4.1",
- "querystring-es3": "0.2.1",
- "readable-stream": "2.3.3",
- "stream-browserify": "2.0.1",
- "stream-http": "2.7.2",
- "string_decoder": "1.0.3",
- "timers-browserify": "2.0.4",
- "tty-browserify": "0.0.0",
- "url": "0.11.0",
- "util": "0.10.3",
- "vm-browserify": "0.0.4"
- }
- },
- "node-modules-path": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/node-modules-path/-/node-modules-path-1.0.1/40096b08ce7ad0ea14680863af449c7c75a5d1c8.tgz",
- "integrity": "sha1-QAlrCM560OoUaAhjr0ScfHWl0cg=",
- "dev": true
- },
- "node-sass": {
- "version": "4.7.2",
- "resolved": "http://npm.trustu.pre/node-sass/-/node-sass-4.7.2/9366778ba1469eb01438a9e8592f4262bcb6794e.tgz",
- "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==",
+ "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
+ "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
"dev": true,
- "optional": true,
- "requires": {
- "async-foreach": "0.1.3",
- "chalk": "1.1.3",
- "cross-spawn": "3.0.1",
- "gaze": "1.1.2",
- "get-stdin": "4.0.1",
- "glob": "7.1.2",
- "in-publish": "2.0.0",
- "lodash.assign": "4.2.0",
- "lodash.clonedeep": "4.5.0",
- "lodash.mergewith": "4.6.0",
- "meow": "3.7.0",
- "mkdirp": "0.5.1",
- "nan": "2.8.0",
- "node-gyp": "3.6.2",
- "npmlog": "4.1.2",
- "request": "2.79.0",
- "sass-graph": "2.2.4",
- "stdout-stream": "1.4.0",
- "true-case-path": "1.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "caseless": {
- "version": "0.11.0",
- "resolved": "http://npm.trustu.pre/caseless/-/caseless-0.11.0/715b96ea9841593cc33067923f5ec60ebda4f7d7.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
- "dev": true,
- "optional": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "har-validator": {
- "version": "2.0.6",
- "resolved": "http://npm.trustu.pre/har-validator/-/har-validator-2.0.6/cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
- "dev": true,
- "optional": true,
- "requires": {
- "chalk": "1.1.3",
- "commander": "2.12.2",
- "is-my-json-valid": "2.16.1",
- "pinkie-promise": "2.0.1"
- }
- },
- "qs": {
- "version": "6.3.2",
- "resolved": "http://npm.trustu.pre/qs/-/qs-6.3.2/e75bd5f6e268122a2a0e0bda630b2550c166502c.tgz",
- "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
- "dev": true,
- "optional": true
- },
- "request": {
- "version": "2.79.0",
- "resolved": "http://npm.trustu.pre/request/-/request-2.79.0/4dfe5bf6be8b8cdc37fcf93e04b65577722710de.tgz",
- "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
- "dev": true,
- "optional": true,
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.11.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "qs": "6.3.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.4.3",
- "uuid": "3.1.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "resolved": "http://npm.trustu.pre/tunnel-agent/-/tunnel-agent-0.4.3/6373db76909fe570e08d73583365ed828a74eeeb.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true,
- "optional": true
- }
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "nopt": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/nopt/-/nopt-4.0.1/d0d4685afd5415193c8c7505602d0d17cd64474d.tgz",
- "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
+ "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
"dev": true,
- "requires": {
- "abbrev": "1.1.1",
- "osenv": "0.1.4"
+ "license": "MIT",
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "normalize-package-data": {
- "version": "2.4.0",
- "resolved": "http://npm.trustu.pre/normalize-package-data/-/normalize-package-data-2.4.0/12f95a307d58352075a04907b84ac8be98ac012f.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
+ "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
"dev": true,
- "requires": {
- "hosted-git-info": "2.5.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.4.1",
- "validate-npm-package-license": "3.0.1"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/normalize-path/-/normalize-path-2.1.1/1ab28b556e198363a8c1a6f7e6fa20137fe6aed9.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
+ "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
"dev": true,
- "requires": {
- "remove-trailing-separator": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/normalize-range/-/normalize-range-0.1.2/2d10c06bdfd312ea9777695a4d28439456b75942.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
- "dev": true
- },
- "normalize-url": {
- "version": "1.9.1",
- "resolved": "http://npm.trustu.pre/normalize-url/-/normalize-url-1.9.1/2cc0d66b31ea23036458436e3620d85954c66c3c.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "node_modules/prettier-eslint/node_modules/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": {
- "object-assign": "4.1.1",
- "prepend-http": "1.0.4",
- "query-string": "4.3.4",
- "sort-keys": "1.1.2"
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/npm-run-path/-/npm-run-path-2.0.2/35a9232dfa35d7067b4cb2ddf2357b1871536c5f.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "node_modules/prettier-eslint/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==",
"dev": true,
- "requires": {
- "path-key": "2.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "npmlog": {
+ "node_modules/prettier-eslint/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "http://npm.trustu.pre/npmlog/-/npmlog-4.1.2/08a7f2a8bf734604779a9efa4ad5cc717abb954b.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "nth-check": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/nth-check/-/nth-check-1.0.1/9929acdf628fc2c41098deab82ac580cf149aae4.tgz",
- "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "node_modules/prettier-eslint/node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
- "requires": {
- "boolbase": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "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.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "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",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "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.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "null-check": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/null-check/-/null-check-1.0.0/977dffd7176012b9ec30d2a39db5cf72a0439edd.tgz",
- "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
- "dev": true
- },
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/num2fraction/-/num2fraction-1.2.2/6f682b6a027a4e9ddfa4564cd2589d1d4e669ede.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
- "dev": true
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/number-is-nan/-/number-is-nan-1.0.1/097b602b53422a522c1afb8790318336941a011d.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "http://npm.trustu.pre/oauth-sign/-/oauth-sign-0.8.2/46a6ab7f0aead8deae9ec0565780b7d4efeb9d43.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "http://npm.trustu.pre/object-assign/-/object-assign-4.1.1/2109adc7965887cfc05cbbd442cac8bfbb360863.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object-component": {
- "version": "0.0.3",
- "resolved": "http://npm.trustu.pre/object-component/-/object-component-0.0.3/f0c69aa50efc95b866c186f400a33769cb2f1291.tgz",
- "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
- "dev": true
- },
- "object-keys": {
- "version": "1.0.11",
- "resolved": "http://npm.trustu.pre/object-keys/-/object-keys-1.0.11/c54601778ad560f1142ce0e01bcca8b56d13426d.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
- "dev": true
- },
- "object.omit": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/object.omit/-/object.omit-2.0.1/1a9c744829f39dbb858c76ca3579ae2a54ebd1fa.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
- },
- "dependencies": {
- "for-own": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/for-own/-/for-own-0.1.5/5265c681a4f294dabbf17c9509b6763aa84510ce.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "1.0.2"
- }
- }
+ "node_modules/prettier-eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "obuf": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/obuf/-/obuf-1.1.1/104124b6c602c6796881a042541d36db43a5264e.tgz",
- "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
- "dev": true
+ "node_modules/prettier-eslint/node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/on-finished/-/on-finished-2.3.0/20f1336481b083cd75337992a16971aa2d906947.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "node_modules/prettier-eslint/node_modules/eslint/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,
- "requires": {
- "ee-first": "1.1.1"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "on-headers": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/on-headers/-/on-headers-1.0.1/928f5d0f470d49342651ea6794b0857c100693f7.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
- "dev": true
+ "node_modules/prettier-eslint/node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
},
- "once": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/once/-/once-1.4.0/583b1aa775961d4b113ac17d9c50baef9dd76bd1.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "node_modules/prettier-eslint/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==",
"dev": true,
- "requires": {
- "wrappy": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "open": {
- "version": "0.0.5",
- "resolved": "http://npm.trustu.pre/open/-/open-0.0.5/42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc.tgz",
- "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=",
- "dev": true
- },
- "opn": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/opn/-/opn-5.1.0/72ce2306a17dbea58ff1041853352b4a8fc77519.tgz",
- "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
+ "node_modules/prettier-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==",
"dev": true,
- "requires": {
- "is-wsl": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "optimist": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/optimist/-/optimist-0.6.1/da3ea74686fa21a19a111c326e90eb15a0196686.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "node_modules/prettier-eslint/node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
- "requires": {
- "minimist": "0.0.10",
- "wordwrap": "0.0.2"
- },
+ "license": "MIT",
"dependencies": {
- "minimist": {
- "version": "0.0.10",
- "resolved": "http://npm.trustu.pre/minimist/-/minimist-0.0.10/de3f98543dbf96082be48ad1a0c7cda836301dcf.tgz",
- "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
- "dev": true
- }
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "optionator": {
- "version": "0.8.2",
- "resolved": "http://npm.trustu.pre/optionator/-/optionator-0.8.2/364c5e409d3f4d6301d6c0b4c05bba50180aeb64.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "node_modules/prettier-eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
- "requires": {
- "deep-is": "0.1.3",
- "fast-levenshtein": "2.0.6",
- "levn": "0.3.0",
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2",
- "wordwrap": "1.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/wordwrap/-/wordwrap-1.0.0/27584810891456a4171c8d0226441ade90cbcaeb.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- }
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "options": {
- "version": "0.0.6",
- "resolved": "http://npm.trustu.pre/options/-/options-0.0.6/ec22d312806bb53e731773e7cdaefcf1c643128f.tgz",
- "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
- "dev": true
- },
- "original": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/original/-/original-1.0.0/9147f93fa1696d04be61e01bd50baeaca656bd3b.tgz",
- "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
- "dev": true,
- "requires": {
- "url-parse": "1.0.5"
- },
- "dependencies": {
- "url-parse": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/url-parse/-/url-parse-1.0.5/0854860422afdcfefeb6c965c662d4800169927b.tgz",
- "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
- "dev": true,
- "requires": {
- "querystringify": "0.0.4",
- "requires-port": "1.0.0"
- }
- }
+ "node_modules/prettier-eslint/node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "license": "MIT",
+ "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"
}
},
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/os-browserify/-/os-browserify-0.3.0/854373c7f5c2315914fc9bfc6bd8238fdda1ec27.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
- "dev": true
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/os-homedir/-/os-homedir-1.0.2/ffbc4988336e0e833de0c168c7ef152121aa7fb3.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/os-locale/-/os-locale-1.4.0/20f9f17ae29ed345e8bde583b13d2009803c14d9.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "node_modules/prettier-eslint/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
- "requires": {
- "lcid": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/os-tmpdir/-/os-tmpdir-1.0.2/bbe67406c79aa85c5cfec766fe5734555dfa1274.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
+ "node_modules/prettier-eslint/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,
+ "license": "MIT"
},
- "osenv": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/osenv/-/osenv-0.1.4/42fe6d5953df06c8064be6f176c3d05aaaa34644.tgz",
- "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+ "node_modules/prettier-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==",
"dev": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "p-finally": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/p-finally/-/p-finally-1.0.0/3fbcfb15b899a44123b34b6dcc18b724336a2cae.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-limit": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/p-limit/-/p-limit-1.1.0/b07ff2d9a5d88bec806035895a2bab66a27988bc.tgz",
- "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
- "dev": true
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/p-locate/-/p-locate-2.0.0/20a0103b222a70c8fd39cc2e580680f3dde5ec43.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "node_modules/prettier-eslint/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"dev": true,
- "requires": {
- "p-limit": "1.1.0"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "p-map": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/p-map/-/p-map-1.2.0/e4e94f311eabbc8633a1e79908165fca26241b6b.tgz",
- "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
- "dev": true
- },
- "pako": {
- "version": "1.0.6",
- "resolved": "http://npm.trustu.pre/pako/-/pako-1.0.6/0101211baa70c4bca4a0f63f2206e97b7dfaf258.tgz",
- "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
- "dev": true
- },
- "parallel-transform": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/parallel-transform/-/parallel-transform-1.1.0/d410f065b05da23081fcd10f28854c29bda33b06.tgz",
- "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "node_modules/prettier-eslint/node_modules/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": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "param-case": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/param-case/-/param-case-2.1.1/df94fd8cf6531ecf75e6bef9a0858fbc72be2247.tgz",
- "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "node_modules/prettier-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==",
"dev": true,
- "requires": {
- "no-case": "2.3.2"
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "parse-asn1": {
- "version": "5.1.0",
- "resolved": "http://npm.trustu.pre/parse-asn1/-/parse-asn1-5.1.0/37c4f9b7ed3ab65c74817b5f2480937fbf97c712.tgz",
- "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
+ "node_modules/prettier-eslint/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,
- "requires": {
- "asn1.js": "4.9.2",
- "browserify-aes": "1.1.1",
- "create-hash": "1.1.3",
- "evp_bytestokey": "1.0.3",
- "pbkdf2": "3.0.14"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "parse-github-repo-url": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/parse-github-repo-url/-/parse-github-repo-url-1.4.1/9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50.tgz",
- "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
- "dev": true
+ "node_modules/prettier-eslint/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
},
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "http://npm.trustu.pre/parse-glob/-/parse-glob-3.0.4/b2c376cfb11f35513badd173ef0bb6e3a388391c.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "node_modules/prettier-eslint/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==",
"dev": true,
- "requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
},
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/is-extglob/-/is-extglob-1.0.0/ac468177c4943405a092fc8f29760c6ffc6206c0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/is-glob/-/is-glob-2.0.1/d096f926a3ded5600f3fdfd91198cb0888c2d863.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "parse-json": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/parse-json/-/parse-json-2.2.0/f480f40434ef80741f8469099f8dea18f55a4dc9.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "node_modules/prettier-eslint/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,
- "requires": {
- "error-ex": "1.3.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "parse-passwd": {
+ "node_modules/prettier-linter-helpers": {
"version": "1.0.0",
- "resolved": "http://npm.trustu.pre/parse-passwd/-/parse-passwd-1.0.0/6d5b934a456993b23d37f40a382d6f1666a8e5c6.tgz",
- "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
- "dev": true
- },
- "parsejson": {
- "version": "0.0.3",
- "resolved": "http://npm.trustu.pre/parsejson/-/parsejson-0.0.3/ab7e3759f209ece99437973f7d0f1f64ae0e64ab.tgz",
- "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
"dev": true,
- "requires": {
- "better-assert": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "parseqs": {
- "version": "0.0.5",
- "resolved": "http://npm.trustu.pre/parseqs/-/parseqs-0.0.5/d5208a3738e46766e291ba2ea173684921a8b89d.tgz",
- "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+ "node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
- "requires": {
- "better-assert": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "parseuri": {
- "version": "0.0.5",
- "resolved": "http://npm.trustu.pre/parseuri/-/parseuri-0.0.5/80204a50d4dbb779bfdc6ebe2778d90e4bce320a.tgz",
- "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+ "node_modules/proc-log": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
+ "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
"dev": true,
- "requires": {
- "better-assert": "1.0.2"
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "parseurl": {
- "version": "1.3.2",
- "resolved": "http://npm.trustu.pre/parseurl/-/parseurl-1.3.2/fc289d4ed8993119460c156253262cdc8de65bf3.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.0",
- "resolved": "http://npm.trustu.pre/path-browserify/-/path-browserify-0.0.0/a0b870729aae214005b7d5032ec2cbbb0fb4451a.tgz",
- "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
- "dev": true
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/path-exists/-/path-exists-2.1.0/0feb6c64f0fc518d9a754dd5efb62c7022761f4b.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
- "requires": {
- "pinkie-promise": "2.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/path-is-absolute/-/path-is-absolute-1.0.1/174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/path-is-inside/-/path-is-inside-1.0.2/365417dede44430d1c11af61027facf074bdfc53.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
+ "node_modules/promise-retry": {
"version": "2.0.1",
- "resolved": "http://npm.trustu.pre/path-key/-/path-key-2.0.1/411cadb574c5a140d3a4b1910d40d80cc9f40b40.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/path-parse/-/path-parse-1.0.5/3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
- "dev": true
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "http://npm.trustu.pre/path-to-regexp/-/path-to-regexp-0.1.7/df604178005f522f15eb4490e7247a1bfaa67f8c.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "path-type": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/path-type/-/path-type-1.1.0/59c44f7ee491da704da415da5a4070ba4f8fe441.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
}
},
- "pbkdf2": {
- "version": "3.0.14",
- "resolved": "http://npm.trustu.pre/pbkdf2/-/pbkdf2-3.0.14/a35e13c64799b06ce15320f459c230e68e73bade.tgz",
- "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
+ "node_modules/proxy-addr/node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"dev": true,
- "requires": {
- "create-hash": "1.1.3",
- "create-hmac": "1.1.6",
- "ripemd160": "2.0.1",
- "safe-buffer": "5.1.1",
- "sha.js": "2.4.9"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
}
},
- "performance-now": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/performance-now/-/performance-now-0.2.0/33ef30c5c77d4ea21c5a53869d91b56d8f2555e5.tgz",
- "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
- "dev": true
+ "node_modules/proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
},
- "pify": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/pify/-/pify-2.3.0/ed141a6ac043a849ea588498e7dca8b15330e90c.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
},
- "pinkie": {
- "version": "2.0.4",
- "resolved": "http://npm.trustu.pre/pinkie/-/pinkie-2.0.4/72556b80cfa0d48a974e80e77248e80ed4f7f870.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true,
+ "license": "MIT"
},
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/pinkie-promise/-/pinkie-promise-2.0.1/2135d6dfa7a358c069ac9b178776288228450ffa.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "node_modules/pump": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
"dev": true,
- "requires": {
- "pinkie": "2.0.4"
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "pkg-dir": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/pkg-dir/-/pkg-dir-2.0.0/f6d5d1109e19d63edf428e0bd57e12777615334b.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "node_modules/puppeteer-core": {
+ "version": "24.29.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.29.0.tgz",
+ "integrity": "sha512-WTxTpGBJMETB4tQ8heMK9XozjpmCNfoA8iov8H65upwhoQpcosZWGTZkPFNndEjILww9IKg/mbTlg8BnZ8L6wQ==",
"dev": true,
- "requires": {
- "find-up": "2.1.0"
- },
+ "license": "Apache-2.0",
"dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/find-up/-/find-up-2.1.0/45d1b7e506c717ddd482775a2b77920a3c0c57a7.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- }
+ "@puppeteer/browsers": "2.10.13",
+ "chromium-bidi": "10.5.1",
+ "debug": "^4.4.3",
+ "devtools-protocol": "0.0.1521046",
+ "typed-query-selector": "^2.12.0",
+ "webdriver-bidi-protocol": "0.3.8",
+ "ws": "^8.18.3"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "portfinder": {
- "version": "1.0.13",
- "resolved": "http://npm.trustu.pre/portfinder/-/portfinder-1.0.13/bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9.tgz",
- "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+ "node_modules/puppeteer-core/node_modules/devtools-protocol": {
+ "version": "0.0.1521046",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz",
+ "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==",
"dev": true,
- "requires": {
- "async": "1.5.2",
- "debug": "2.6.9",
- "mkdirp": "0.5.1"
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
},
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/async/-/async-1.5.2/ec6a61ae56480c0c3cb241c95618e20892f9672a.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
}
}
},
- "postcss": {
- "version": "5.2.18",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-5.2.18/badfa1497d46244f6390f58b319830d9107853c5.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "node_modules/qified": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.1.tgz",
+ "integrity": "sha512-+BtFN3dCP+IaFA6IYNOu/f/uK1B8xD2QWyOeCse0rjtAebBmkzgd2d1OAXi3ikAzJMIBSdzZDNZ3wZKEUDQs5w==",
"dev": true,
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.0",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- },
+ "license": "MIT",
"dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
+ "hookified": "^1.12.2"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/qr-creator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/qr-creator/-/qr-creator-1.0.0.tgz",
+ "integrity": "sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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"
},
- "has-flag": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/has-flag/-/has-flag-1.0.0/9d9e793165ce017a00f00418c43f942a7b1d11fa.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "supports-color": {
- "version": "3.2.3",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-3.2.3/65ac0504b3954171d8a64946b2ae3cbb8a5f54f6.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "1.0.0"
- }
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
+ ],
+ "license": "MIT"
},
- "postcss-calc": {
- "version": "5.3.1",
- "resolved": "http://npm.trustu.pre/postcss-calc/-/postcss-calc-5.3.1/77bae7ca928ad85716e2fda42f261bf7c1d65b5e.tgz",
- "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "postcss-message-helpers": "2.0.0",
- "reduce-css-calc": "1.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "postcss-colormin": {
- "version": "2.2.2",
- "resolved": "http://npm.trustu.pre/postcss-colormin/-/postcss-colormin-2.2.2/6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b.tgz",
- "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
- "requires": {
- "colormin": "1.1.2",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
}
},
- "postcss-convert-values": {
- "version": "2.6.1",
- "resolved": "http://npm.trustu.pre/postcss-convert-values/-/postcss-convert-values-2.6.1/bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d.tgz",
- "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+ "node_modules/rc/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "ISC"
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "postcss-custom-properties": {
- "version": "6.2.0",
- "resolved": "http://npm.trustu.pre/postcss-custom-properties/-/postcss-custom-properties-6.2.0/5d929a7f06e9b84e0f11334194c0ba9a30acfbe9.tgz",
- "integrity": "sha512-eNR2h9T9ciKMoQEORrPjH33XeN/nuvVuxArOKmHtsFbGbNss631tgTrKou3/pmjAZbA4QQkhLIkPQkIk3WW+8w==",
- "dev": true,
- "requires": {
- "balanced-match": "1.0.0",
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "postcss-discard-comments": {
- "version": "2.0.4",
- "resolved": "http://npm.trustu.pre/postcss-discard-comments/-/postcss-discard-comments-2.0.4/befe89fafd5b3dace5ccce51b76b81514be00e3d.tgz",
- "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+ "node_modules/reflect-metadata": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
+ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/regexp-tree": {
+ "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,
- "requires": {
- "postcss": "5.2.18"
+ "license": "MIT",
+ "bin": {
+ "regexp-tree": "bin/regexp-tree"
}
},
- "postcss-discard-duplicates": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0/b9abf27b88ac188158a5eb12abcae20263b91932.tgz",
- "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+ "node_modules/registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
+ "license": "MIT",
+ "dependencies": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
}
},
- "postcss-discard-empty": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/postcss-discard-empty/-/postcss-discard-empty-2.1.0/d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5.tgz",
- "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+ "node_modules/registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
+ "license": "MIT",
+ "dependencies": {
+ "rc": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "postcss-discard-overridden": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1/8b1eaf554f686fb288cd874c55667b0aa3668d58.tgz",
- "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+ "node_modules/regjsparser": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+ "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~3.1.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "postcss-discard-unused": {
- "version": "2.2.3",
- "resolved": "http://npm.trustu.pre/postcss-discard-unused/-/postcss-discard-unused-2.2.3/bce30b2cc591ffc634322b5fb3464b6d934f4433.tgz",
- "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+ "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==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "uniqs": "2.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "postcss-filter-plugins": {
+ "node_modules/require-from-string": {
"version": "2.0.2",
- "resolved": "http://npm.trustu.pre/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2/6d85862534d735ac420e4a85806e1f5d4286d84c.tgz",
- "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "uniqid": "4.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "postcss-load-config": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/postcss-load-config/-/postcss-load-config-1.2.0/539e9afc9ddc8620121ebf9d8c3673e0ce50d28a.tgz",
- "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
+ "node_modules/require-in-the-middle": {
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz",
+ "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==",
"dev": true,
- "requires": {
- "cosmiconfig": "2.2.2",
- "object-assign": "4.1.1",
- "postcss-load-options": "1.2.0",
- "postcss-load-plugins": "2.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.5",
+ "module-details-from-path": "^1.0.3",
+ "resolve": "^1.22.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
}
},
- "postcss-load-options": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/postcss-load-options/-/postcss-load-options-1.2.0/b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c.tgz",
- "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
+ "node_modules/require-relative": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+ "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"dev": true,
- "requires": {
- "cosmiconfig": "2.2.2",
- "object-assign": "4.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "postcss-load-plugins": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/postcss-load-plugins/-/postcss-load-plugins-2.3.0/745768116599aca2f009fad426b00175049d8d92.tgz",
- "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
- "dev": true,
- "requires": {
- "cosmiconfig": "2.2.2",
- "object-assign": "4.1.1"
- }
- },
- "postcss-loader": {
- "version": "2.0.9",
- "resolved": "http://npm.trustu.pre/postcss-loader/-/postcss-loader-2.0.9/001fdf7bfeeb159405ee61d1bb8e59b528dbd309.tgz",
- "integrity": "sha512-sgoXPtmgVT3aBAhU47Kig8oPF+mbXl8Unjvtz1Qj1q2D2EvSVJW2mKJNzxv5y/LvA9xWwuvdysvhc7Zn80UWWw==",
- "dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "postcss": "6.0.14",
- "postcss-load-config": "1.2.0",
- "schema-utils": "0.3.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "postcss-merge-idents": {
- "version": "2.1.7",
- "resolved": "http://npm.trustu.pre/postcss-merge-idents/-/postcss-merge-idents-2.1.7/4c5530313c08e1d5b3bbf3d2bbc747e278eea270.tgz",
- "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+ "node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
"dev": true,
- "requires": {
- "has": "1.0.1",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "postcss-merge-longhand": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2/23d90cd127b0a77994915332739034a1a4f3d658.tgz",
- "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "postcss-merge-rules": {
- "version": "2.1.2",
- "resolved": "http://npm.trustu.pre/postcss-merge-rules/-/postcss-merge-rules-2.1.2/d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721.tgz",
- "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
- "requires": {
- "browserslist": "1.7.7",
- "caniuse-api": "1.6.1",
- "postcss": "5.2.18",
- "postcss-selector-parser": "2.2.3",
- "vendors": "1.0.1"
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "postcss-message-helpers": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/postcss-message-helpers/-/postcss-message-helpers-2.0.0/a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e.tgz",
- "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
- "dev": true
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "dev": true,
+ "license": "MIT"
},
- "postcss-minify-font-values": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5/4b58edb56641eba7c8474ab3526cafd7bbdecb69.tgz",
- "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
- "requires": {
- "object-assign": "4.1.1",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "postcss-minify-gradients": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5/5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1.tgz",
- "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+ "node_modules/robots-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz",
+ "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "postcss-minify-params": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/postcss-minify-params/-/postcss-minify-params-1.2.2/ad2ce071373b943b3d930a3fa59a358c28d6f1f3.tgz",
- "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+ "node_modules/rollup": {
+ "version": "4.52.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz",
+ "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.52.3",
+ "@rollup/rollup-android-arm64": "4.52.3",
+ "@rollup/rollup-darwin-arm64": "4.52.3",
+ "@rollup/rollup-darwin-x64": "4.52.3",
+ "@rollup/rollup-freebsd-arm64": "4.52.3",
+ "@rollup/rollup-freebsd-x64": "4.52.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.52.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.52.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.52.3",
+ "@rollup/rollup-linux-arm64-musl": "4.52.3",
+ "@rollup/rollup-linux-loong64-gnu": "4.52.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.52.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.52.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.52.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.52.3",
+ "@rollup/rollup-linux-x64-gnu": "4.52.3",
+ "@rollup/rollup-linux-x64-musl": "4.52.3",
+ "@rollup/rollup-openharmony-arm64": "4.52.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.52.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.52.3",
+ "@rollup/rollup-win32-x64-gnu": "4.52.3",
+ "@rollup/rollup-win32-x64-msvc": "4.52.3",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
"dev": true,
- "requires": {
- "alphanum-sort": "1.0.2",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0",
- "uniqs": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "is-promise": "^4.0.0",
+ "parseurl": "^1.3.3",
+ "path-to-regexp": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
- "postcss-minify-selectors": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1/b2c6a98c0072cf91b932d1a496508114311735bf.tgz",
- "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+ "node_modules/router/node_modules/path-to-regexp": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
"dev": true,
- "requires": {
- "alphanum-sort": "1.0.2",
- "has": "1.0.1",
- "postcss": "5.2.18",
- "postcss-selector-parser": "2.2.3"
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "postcss-modules-extract-imports": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0/b614c9720be6816eaee35fb3a5faa1dba6a05ddb.tgz",
- "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
- "dev": true,
- "requires": {
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
+ "node_modules/rrweb-cssom": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
+ "dev": true,
+ "license": "MIT"
},
- "postcss-modules-local-by-default": {
+ "node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "http://npm.trustu.pre/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0/f7d80c398c5a393fa7964466bd19500a7d61c069.tgz",
- "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "0.7.0",
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.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"
},
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
}
},
- "postcss-modules-scope": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/postcss-modules-scope/-/postcss-modules-scope-1.1.0/d6ea64994c79f97b62a72b426fbe6056a194bb90.tgz",
- "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "0.7.0",
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "node_modules/rxjs": {
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
}
},
- "postcss-modules-values": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/postcss-modules-values/-/postcss-modules-values-1.3.0/ecffa9d7e192518389f42ad0e83f72aec456ea20.tgz",
- "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
- "dev": true,
- "requires": {
- "icss-replace-symbols": "1.1.0",
- "postcss": "6.0.14"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
+ ],
+ "license": "MIT"
},
- "postcss-normalize-charset": {
- "version": "1.1.1",
- "resolved": "http://npm.trustu.pre/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1/ef9ee71212d7fe759c78ed162f61ed62b5cb93f1.tgz",
- "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
- }
+ "license": "MIT"
},
- "postcss-normalize-url": {
- "version": "3.0.8",
- "resolved": "http://npm.trustu.pre/postcss-normalize-url/-/postcss-normalize-url-3.0.8/108f74b3f2fcdaf891a2ffa3ea4592279fc78222.tgz",
- "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+ "node_modules/sass": {
+ "version": "1.90.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz",
+ "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
"dev": true,
- "requires": {
- "is-absolute-url": "2.1.0",
- "normalize-url": "1.9.1",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
}
},
- "postcss-ordered-values": {
- "version": "2.2.3",
- "resolved": "http://npm.trustu.pre/postcss-ordered-values/-/postcss-ordered-values-2.2.3/eec6c2a67b6c412a8db2042e77fe8da43f95c11d.tgz",
- "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
- }
+ "license": "ISC"
},
- "postcss-reduce-idents": {
- "version": "2.4.0",
- "resolved": "http://npm.trustu.pre/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0/c2c6d20cc958284f6abfbe63f7609bf409059ad3.tgz",
- "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
- "requires": {
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
}
},
- "postcss-reduce-initial": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1/68f80695f045d08263a879ad240df8dd64f644ea.tgz",
- "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "requires": {
- "postcss": "5.2.18"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "postcss-reduce-transforms": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4/ff76f4d8212437b31c298a42d2e1444025771ae1.tgz",
- "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+ "node_modules/serve": {
+ "version": "14.2.5",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.5.tgz",
+ "integrity": "sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==",
"dev": true,
- "requires": {
- "has": "1.0.1",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "@zeit/schemas": "2.36.0",
+ "ajv": "8.12.0",
+ "arg": "5.0.2",
+ "boxen": "7.0.0",
+ "chalk": "5.0.1",
+ "chalk-template": "0.4.0",
+ "clipboardy": "3.0.0",
+ "compression": "1.8.1",
+ "is-port-reachable": "4.0.0",
+ "serve-handler": "6.1.6",
+ "update-check": "1.5.4"
+ },
+ "bin": {
+ "serve": "build/main.js"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "postcss-selector-parser": {
- "version": "2.2.3",
- "resolved": "http://npm.trustu.pre/postcss-selector-parser/-/postcss-selector-parser-2.2.3/f9437788606c3c9acee16ffe8d8b16297f27bb90.tgz",
- "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+ "node_modules/serve-handler": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz",
+ "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==",
"dev": true,
- "requires": {
- "flatten": "1.0.2",
- "indexes-of": "1.0.1",
- "uniq": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.2",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "3.3.0",
+ "range-parser": "1.2.0"
}
},
- "postcss-svgo": {
- "version": "2.1.6",
- "resolved": "http://npm.trustu.pre/postcss-svgo/-/postcss-svgo-2.1.6/b6df18aa613b666e133f08adb5219c2684ac108d.tgz",
- "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+ "node_modules/serve-handler/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
- "requires": {
- "is-svg": "2.1.0",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0",
- "svgo": "0.7.2"
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "postcss-unique-selectors": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2/981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d.tgz",
- "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
- "dev": true,
- "requires": {
- "alphanum-sort": "1.0.2",
- "postcss": "5.2.18",
- "uniqs": "2.0.0"
- }
- },
- "postcss-url": {
- "version": "7.3.0",
- "resolved": "http://npm.trustu.pre/postcss-url/-/postcss-url-7.3.0/cf2f45e06743cf43cfea25309f81cbc003dc783f.tgz",
- "integrity": "sha512-VBP6uf6iL3AZra23nkPkOEkS/5azj1xf/toRrjfkolfFEgg9Gyzg9UhJZeIsz12EGKZTNVeGbPa2XtaZm/iZvg==",
- "dev": true,
- "requires": {
- "mime": "1.6.0",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "postcss": "6.0.14",
- "xxhashjs": "0.2.1"
- },
- "dependencies": {
- "chalk": {
- "version": "2.3.0",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-2.3.0/b5ea48efc9c1793dccc9b4767c93914d3f2d52ba.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "postcss": {
- "version": "6.0.14",
- "resolved": "http://npm.trustu.pre/postcss/-/postcss-6.0.14/5534c72114739e75d0afcf017db853099f562885.tgz",
- "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "source-map": "0.6.1",
- "supports-color": "4.5.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "node_modules/serve-handler/node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "postcss-value-parser": {
- "version": "3.3.0",
- "resolved": "http://npm.trustu.pre/postcss-value-parser/-/postcss-value-parser-3.3.0/87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15.tgz",
- "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
- "dev": true
- },
- "postcss-zindex": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/postcss-zindex/-/postcss-zindex-2.2.0/d2109ddc055b91af67fc4cb3b025946639d2af22.tgz",
- "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+ "node_modules/serve-handler/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,
- "requires": {
- "has": "1.0.1",
- "postcss": "5.2.18",
- "uniqs": "2.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/prelude-ls/-/prelude-ls-1.1.2/21932a549f5e52ffd9a827f570e04be62a97da54.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/prepend-http/-/prepend-http-1.0.4/d4f4562b0ce3696e41ac52d0e002e57a635dc6dc.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
- "dev": true
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/preserve/-/preserve-0.2.0/815ed1f6ebc65926f865b310c0713bcb3315ce4b.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
- "pretty-error": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/pretty-error/-/pretty-error-2.1.1/5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3.tgz",
- "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "node_modules/serve-handler/node_modules/range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
"dev": true,
- "requires": {
- "renderkid": "2.0.1",
- "utila": "0.4.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "process": {
- "version": "0.11.10",
- "resolved": "http://npm.trustu.pre/process/-/process-0.11.10/7332300e840161bda3e69a1d1d91a7d4bc16f182.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "http://npm.trustu.pre/process-nextick-args/-/process-nextick-args-1.0.7/150e20b756590ad3f91093f25a4f2ad8bff30ba3.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
+ "node_modules/serve/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
},
- "promise": {
- "version": "7.3.1",
- "resolved": "http://npm.trustu.pre/promise/-/promise-7.3.1/064b72602b18f90f29192b8b1bc418ffd1ebd3bf.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "node_modules/serve/node_modules/chalk": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
+ "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
"dev": true,
- "optional": true,
- "requires": {
- "asap": "2.0.6"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "promise-inflight": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/promise-inflight/-/promise-inflight-1.0.1/98472870bf228132fcbdd868129bad12c3c029e3.tgz",
- "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
- "dev": true
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true,
+ "license": "ISC"
},
- "protractor": {
- "version": "5.2.1",
- "resolved": "http://npm.trustu.pre/protractor/-/protractor-5.2.1/b4e4b6145c71f94e617b006ee353e05651eab88d.tgz",
- "integrity": "sha512-oasutUD/4WUAZdQRo6EtWlVmvgwxWCkcc49XaTiETRPDffRoj8JAQg6gpv42aiP+qyUuK6qJS/XYNBI4Me44Gw==",
- "dev": true,
- "requires": {
- "@types/node": "6.0.92",
- "@types/q": "0.0.32",
- "@types/selenium-webdriver": "2.53.43",
- "blocking-proxy": "1.0.1",
- "chalk": "1.1.3",
- "glob": "7.1.2",
- "jasmine": "2.8.0",
- "jasminewd2": "2.2.0",
- "optimist": "0.6.1",
- "q": "1.4.1",
- "saucelabs": "1.3.0",
- "selenium-webdriver": "3.6.0",
- "source-map-support": "0.4.18",
- "webdriver-js-extender": "1.0.0",
- "webdriver-manager": "12.0.6"
- },
+ "node_modules/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,
+ "license": "MIT",
"dependencies": {
- "@types/node": {
- "version": "6.0.92",
- "resolved": "http://npm.trustu.pre/@types/node/-/node-6.0.92/e7f721ae282772e12ba2579968c00d9cce422c5d.tgz",
- "integrity": "sha512-awEYSSTn7dauwVCYSx2CJaPTu0Z1Ht2oR1b2AD3CYao6ZRb+opb6EL43fzmD7eMFgMHzTBWSUzlWSD+S8xN0Nw==",
- "dev": true
- },
- "adm-zip": {
- "version": "0.4.7",
- "resolved": "http://npm.trustu.pre/adm-zip/-/adm-zip-0.4.7/8606c2cbf1c426ce8c8ec00174447fd49b6eafc1.tgz",
- "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "del": {
- "version": "2.2.2",
- "resolved": "http://npm.trustu.pre/del/-/del-2.2.2/c12c981d067846c84bcaf862cff930d907ffd1a8.tgz",
- "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
- "dev": true,
- "requires": {
- "globby": "5.0.0",
- "is-path-cwd": "1.0.0",
- "is-path-in-cwd": "1.0.0",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "rimraf": "2.6.2"
- }
- },
- "globby": {
- "version": "5.0.0",
- "resolved": "http://npm.trustu.pre/globby/-/globby-5.0.0/ebd84667ca0dbb330b99bcfc68eac2bc54370e0d.tgz",
- "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
- "dev": true,
- "requires": {
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "q": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/q/-/q-1.4.1/55705bcd93c5f3673530c2c2cbc0c2b3addc286e.tgz",
- "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "webdriver-manager": {
- "version": "12.0.6",
- "resolved": "http://npm.trustu.pre/webdriver-manager/-/webdriver-manager-12.0.6/3df1a481977010b4cbf8c9d85c7a577828c0e70b.tgz",
- "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=",
- "dev": true,
- "requires": {
- "adm-zip": "0.4.7",
- "chalk": "1.1.3",
- "del": "2.2.2",
- "glob": "7.1.2",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "q": "1.4.1",
- "request": "2.81.0",
- "rimraf": "2.6.2",
- "semver": "5.4.1",
- "xml2js": "0.4.19"
- }
- }
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "proxy-addr": {
- "version": "2.0.2",
- "resolved": "http://npm.trustu.pre/proxy-addr/-/proxy-addr-2.0.2/6571504f47bb988ec8180253f85dd7e14952bdec.tgz",
- "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
+ "node_modules/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,
- "requires": {
- "forwarded": "0.1.2",
- "ipaddr.js": "1.5.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "prr": {
- "version": "0.0.0",
- "resolved": "http://npm.trustu.pre/prr/-/prr-0.0.0/1a84b85908325501411853d0081ee3fa86e2926a.tgz",
- "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/pseudomap/-/pseudomap-1.0.2/f052a28da70e618917ef0a8ac34c1ae5a68286b3.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
+ "node_modules/shimmer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
+ "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==",
+ "dev": true,
+ "license": "BSD-2-Clause"
},
- "public-encrypt": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/public-encrypt/-/public-encrypt-4.0.0/39f699f3a46560dd5ebacbca693caf7c65c18cc6.tgz",
- "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dev": true,
- "requires": {
- "bn.js": "4.11.8",
- "browserify-rsa": "4.0.1",
- "create-hash": "1.1.3",
- "parse-asn1": "5.1.0",
- "randombytes": "2.0.5"
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "pump": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/pump/-/pump-1.0.3/5dfe8311c33bbf6fc18261f9f34702c47c08a954.tgz",
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dev": true,
- "requires": {
- "end-of-stream": "1.4.0",
- "once": "1.4.0"
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "pumpify": {
- "version": "1.3.5",
- "resolved": "http://npm.trustu.pre/pumpify/-/pumpify-1.3.5/1b671c619940abcaeac0ad0e3a3c164be760993b.tgz",
- "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dev": true,
- "requires": {
- "duplexify": "3.5.1",
- "inherits": "2.0.3",
- "pump": "1.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "punycode": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/punycode/-/punycode-1.4.1/c0d5a63b2718800ad8e1eb0fa5269c84dd41845e.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "q": {
- "version": "1.5.1",
- "resolved": "http://npm.trustu.pre/q/-/q-1.5.1/7e32f75b41381291d04611f1bf14109ac00651d7.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
- "dev": true
- },
- "q-io": {
- "version": "1.13.2",
- "resolved": "http://npm.trustu.pre/q-io/-/q-io-1.13.2/eea130d481ddb5e1aa1bc5a66855f7391d06f003.tgz",
- "integrity": "sha1-7qEw1IHdteGqG8WmaFX3OR0G8AM=",
- "dev": true,
- "requires": {
- "collections": "0.2.2",
- "mime": "1.6.0",
- "mimeparse": "0.1.4",
- "q": "1.5.1",
- "qs": "1.2.2",
- "url2": "0.0.0"
- },
- "dependencies": {
- "qs": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/qs/-/qs-1.2.2/19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88.tgz",
- "integrity": "sha1-GbV/8k3CqZzh+L32r82ln472H4g=",
- "dev": true
- }
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "qjobs": {
- "version": "1.1.5",
- "resolved": "http://npm.trustu.pre/qjobs/-/qjobs-1.1.5/659de9f2cf8dcc27a1481276f205377272382e73.tgz",
- "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=",
- "dev": true
- },
- "qs": {
- "version": "6.4.0",
- "resolved": "http://npm.trustu.pre/qs/-/qs-6.4.0/13e26d28ad6b0ffaa91312cd3bf708ed351e7233.tgz",
- "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
- "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"
},
- "query-string": {
- "version": "4.3.4",
- "resolved": "http://npm.trustu.pre/query-string/-/query-string-4.3.4/bbb693b9ca915c232515b228b1a02b609043dbeb.tgz",
- "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
- "requires": {
- "object-assign": "4.1.1",
- "strict-uri-encode": "1.1.0"
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "querystring": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/querystring/-/querystring-0.2.0/b209849203bb25df820da756e747005878521620.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "dev": true
- },
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/querystring-es3/-/querystring-es3-0.2.1/9ec61f79049875707d69414596fd907a4d711e73.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
- },
- "querystringify": {
- "version": "0.0.4",
- "resolved": "http://npm.trustu.pre/querystringify/-/querystringify-0.0.4/0cf7f84f9463ff0ae51c4c4b142d95be37724d9c.tgz",
- "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
- "dev": true
- },
- "randomatic": {
- "version": "1.1.7",
- "resolved": "http://npm.trustu.pre/randomatic/-/randomatic-1.1.7/c7abe9cc8b87c0baa876b19fde83fd464797e38c.tgz",
- "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
- "dev": true,
- "requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/is-number/-/is-number-3.0.0/24fd6201a4782cf50561c810276afc7d12d71195.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "http://npm.trustu.pre/kind-of/-/kind-of-3.2.2/31ea21a734bab9bbb0f32466d893aea51e4a3c64.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/kind-of/-/kind-of-4.0.0/20813df3d712928b207378691a45066fae72dd57.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
+ "node_modules/sigstore": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz",
+ "integrity": "sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.0",
+ "@sigstore/sign": "^3.1.0",
+ "@sigstore/tuf": "^3.1.0",
+ "@sigstore/verify": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "randombytes": {
- "version": "2.0.5",
- "resolved": "http://npm.trustu.pre/randombytes/-/randombytes-2.0.5/dc009a246b8d09a177b4b7a0ae77bc570f4b1b79.tgz",
- "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
+ "node_modules/slice-ansi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
+ "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
"dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.0.0",
+ "is-fullwidth-code-point": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
- "randomfill": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/randomfill/-/randomfill-1.0.3/b96b7df587f01dd91726c418f30553b1418e3d62.tgz",
- "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==",
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
- "requires": {
- "randombytes": "2.0.5",
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "range-parser": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/range-parser/-/range-parser-1.2.0/f49be6b487894ddc40dcc94a322f611092e00d5e.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "dev": true
- },
- "raw-body": {
- "version": "2.3.2",
- "resolved": "http://npm.trustu.pre/raw-body/-/raw-body-2.3.2/bcd60c77d3eb93cde0050295c3f379389bc88f89.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
}
},
- "raw-loader": {
- "version": "0.5.1",
- "resolved": "http://npm.trustu.pre/raw-loader/-/raw-loader-0.5.1/0c3d0beaed8a01c966d9787bf778281252a979aa.tgz",
- "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/read-pkg/-/read-pkg-1.1.0/f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"dev": true,
- "requires": {
- "load-json-file": "1.1.0",
- "normalize-package-data": "2.4.0",
- "path-type": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
}
},
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/read-pkg-up/-/read-pkg-up-1.0.1/9d63c13276c065918d57f002a57f40a1b643fb02.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
- "requires": {
- "find-up": "1.1.2",
- "read-pkg": "1.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "readable-stream": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-2.3.3/368f2512d79f9d46fdfc71349ae7878bbc1eb95c.tgz",
- "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
}
},
- "readdirp": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/readdirp/-/readdirp-2.1.0/4ed0ad060df3073300c48440373f72d1cc642d78.tgz",
- "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "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,
- "requires": {
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "readable-stream": "2.3.3",
- "set-immediate-shim": "1.0.1"
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "redent": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/redent/-/redent-1.0.0/cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
- "requires": {
- "indent-string": "2.1.0",
- "strip-indent": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
}
},
- "reduce-css-calc": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/reduce-css-calc/-/reduce-css-calc-1.3.0/747c914e049614a4c9cfbba629871ad1d2927716.tgz",
- "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+ "node_modules/source-map-support/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==",
"dev": true,
- "requires": {
- "balanced-match": "0.4.2",
- "math-expression-evaluator": "1.2.17",
- "reduce-function-call": "1.0.2"
- },
- "dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "http://npm.trustu.pre/balanced-match/-/balanced-match-0.4.2/cb3f3e3c732dc0f01ee70b403f302e61d7709838.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
- }
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "reduce-function-call": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/reduce-function-call/-/reduce-function-call-1.0.2/5a200bf92e0e37751752fe45b0ab330fd4b6be99.tgz",
- "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
- "requires": {
- "balanced-match": "0.4.2"
- },
+ "license": "Apache-2.0",
"dependencies": {
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "http://npm.trustu.pre/balanced-match/-/balanced-match-0.4.2/cb3f3e3c732dc0f01ee70b403f302e61d7709838.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
- "dev": true
- }
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "reflect-metadata": {
- "version": "0.1.10",
- "resolved": "http://npm.trustu.pre/reflect-metadata/-/reflect-metadata-0.1.10/b4f83704416acad89988c9b15635d47e03b9344a.tgz",
- "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=",
- "dev": true
+ "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,
+ "license": "CC-BY-3.0"
},
- "regenerate": {
- "version": "1.3.3",
- "resolved": "http://npm.trustu.pre/regenerate/-/regenerate-1.3.3/0c336d3980553d755c39b586ae3b20aa49c82b7f.tgz",
- "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
- "dev": true
+ "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"
+ }
},
- "regenerator-runtime": {
- "version": "0.11.0",
- "resolved": "http://npm.trustu.pre/regenerator-runtime/-/regenerator-runtime-0.11.0/7e54fe5b5ccd5d6624ea6255c3473be090b802e1.tgz",
- "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
- "dev": true
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
+ "dev": true,
+ "license": "CC0-1.0"
},
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/regex-cache/-/regex-cache-0.4.4/75bdc58a2a1496cec48a12835bc54c8d562336dd.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "node_modules/speedline-core": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz",
+ "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==",
"dev": true,
- "requires": {
- "is-equal-shallow": "0.1.3"
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "image-ssim": "^0.2.0",
+ "jpeg-js": "^0.4.1"
+ },
+ "engines": {
+ "node": ">=8.0"
}
},
- "regexpu-core": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/regexpu-core/-/regexpu-core-1.0.0/86a763f58ee4d7c2f6b102e4764050de7ed90c6b.tgz",
- "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"dev": true,
- "requires": {
- "regenerate": "1.3.3",
- "regjsgen": "0.2.0",
- "regjsparser": "0.1.5"
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
}
},
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "http://npm.trustu.pre/regjsgen/-/regjsgen-0.2.0/6c016adeac554f75823fe37ac05b92d5a4edb1f7.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "http://npm.trustu.pre/regjsparser/-/regjsparser-0.1.5/7ee8f84dc6fa792d3fd0ae228d24bd949ead205c.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "node_modules/ssri": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
+ "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
"dev": true,
- "requires": {
- "jsesc": "0.5.0"
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "relateurl": {
- "version": "0.2.7",
- "resolved": "http://npm.trustu.pre/relateurl/-/relateurl-0.2.7/54dbf377e51440aca90a4cd274600d3ff2d888a9.tgz",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
- "dev": true
+ "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,
+ "license": "MIT"
},
- "remap-istanbul": {
- "version": "0.9.5",
- "resolved": "http://npm.trustu.pre/remap-istanbul/-/remap-istanbul-0.9.5/a18617b1f31eec5a7dbee77538298b775606aaa8.tgz",
- "integrity": "sha1-oYYXsfMe7Fp9vud1OCmLd1YGqqg=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1",
- "gulp-util": "3.0.7",
- "istanbul": "0.4.5",
- "minimatch": "3.0.4",
- "source-map": "0.5.7",
- "through2": "2.0.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "http://npm.trustu.pre/readable-stream/-/readable-stream-2.0.6/8f90341e68a53ccc928788dacfcd11b36eb9b78e.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-0.10.31/62e203bc41766c6c28c9fc84301dab1c5310fa94.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "through2": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/through2/-/through2-2.0.1/384e75314d49f32de12eebb8136b8eb6b5d59da9.tgz",
- "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
- "dev": true,
- "requires": {
- "readable-stream": "2.0.6",
- "xtend": "4.0.1"
- }
- }
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/remove-trailing-separator/-/remove-trailing-separator-1.1.0/c24bce2a283adad5bc3f58e0d48249b92379d8ef.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
+ "node_modules/std-env": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
+ "dev": true,
+ "license": "MIT"
},
- "renderkid": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/renderkid/-/renderkid-2.0.1/898cabfc8bede4b7b91135a3ffd323e58c0db319.tgz",
- "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
- "dev": true,
- "requires": {
- "css-select": "1.2.0",
- "dom-converter": "0.1.4",
- "htmlparser2": "3.3.0",
- "strip-ansi": "3.0.1",
- "utila": "0.3.3"
- },
- "dependencies": {
- "utila": {
- "version": "0.3.3",
- "resolved": "http://npm.trustu.pre/utila/-/utila-0.3.3/d7e8e7d7e309107092b05f8d9688824d633a4226.tgz",
- "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
- "dev": true
- }
+ "node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "repeat-element": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/repeat-element/-/repeat-element-1.1.2/ef089a178d1483baae4d93eb98b4f9e4e11d990a.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "http://npm.trustu.pre/repeat-string/-/repeat-string-1.6.1/8dcae470e1c88abc2d600fff4a776286da75e637.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
+ "node_modules/streamx": {
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
+ "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
},
- "repeating": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/repeating/-/repeating-2.0.1/5214c53a926d3552707527fbab415dbc08d06dda.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "node_modules/string-argv": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
"dev": true,
- "requires": {
- "is-finite": "1.0.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.19"
}
},
- "replace-ext": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/replace-ext/-/replace-ext-0.0.1/29bbd92078a739f0bcce2b4ee41e837953522924.tgz",
- "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
- "dev": true
+ "node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "request": {
- "version": "2.81.0",
- "resolved": "http://npm.trustu.pre/request/-/request-2.81.0/c6928946a0e06c5f8d6f8a9333469ffda46298a0.tgz",
- "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
- "dev": true,
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "4.2.1",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "performance-now": "0.2.0",
- "qs": "6.4.0",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.6.0",
- "uuid": "3.1.0"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/require-directory/-/require-directory-2.1.1/8c64ad5fd30dab1c976e2344ffe7f792a6a6df42.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
+ "node_modules/string-width-cjs": {
+ "name": "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,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "require-from-string": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/require-from-string/-/require-from-string-1.2.1/529c9ccef27380adfec9a2f965b649bbee636418.tgz",
- "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
- "dev": true
+ "node_modules/string-width-cjs/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,
+ "license": "MIT"
},
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/require-main-filename/-/require-main-filename-1.0.1/97f717b69d48784f5f526a6c5aa8ffdda055a4d1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
+ "node_modules/string-width-cjs/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
},
- "requires-port": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/requires-port/-/requires-port-1.0.0/925d2601d39ac485e091cf0da5c6e694dc3dcaff.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
- "dev": true
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
},
- "resolve": {
- "version": "1.5.0",
- "resolved": "http://npm.trustu.pre/resolve/-/resolve-1.5.0/1f09acce796c9a762579f31b2c1cc4c3cddf9f36.tgz",
- "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
- "dev": true,
- "requires": {
- "path-parse": "1.0.5"
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/resolve-cwd/-/resolve-cwd-2.0.0/00a9f7387556e27038eae232caa372a6a59b665a.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "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==",
"dev": true,
- "requires": {
- "resolve-from": "3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/resolve-from/-/resolve-from-3.0.0/b22c7af7d9d6881bc8b6e653335eebcb0a188748.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- },
- "right-align": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/right-align/-/right-align-0.1.3/61339b722fe6a3515689210d24e14c96148613ef.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "node_modules/strip-ansi-cjs": {
+ "name": "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": {
- "align-text": "0.1.4"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "rimraf": {
- "version": "2.6.2",
- "resolved": "http://npm.trustu.pre/rimraf/-/rimraf-2.6.2/2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "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==",
"dev": true,
- "requires": {
- "glob": "7.1.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "ripemd160": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/ripemd160/-/ripemd160-2.0.1/0f4584295c53a3628af7e6d79aca21ce57d1c6e7.tgz",
- "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
+ "node_modules/strip-indent": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz",
+ "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==",
"dev": true,
- "requires": {
- "hash-base": "2.0.2",
- "inherits": "2.0.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "run-queue": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/run-queue/-/run-queue-1.0.3/e848396f057d223f24386924618e25694161ec47.tgz",
- "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "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==",
"dev": true,
- "requires": {
- "aproba": "1.2.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "rxjs": {
- "version": "5.5.5",
- "resolved": "http://npm.trustu.pre/rxjs/-/rxjs-5.5.5/e164f11d38eaf29f56f08c3447f74ff02dd84e97.tgz",
- "integrity": "sha512-D/MfQnPMBk8P8gfwGxvCkuaWBcG58W7dUMT//URPoYzIbDEKT0GezdirkK5whMgKFBATfCoTpxO8bJQGJ04W5A==",
- "requires": {
- "symbol-observable": "1.0.1"
+ "node_modules/stubborn-fs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz",
+ "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "stubborn-utils": "^1.0.1"
}
},
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "http://npm.trustu.pre/safe-buffer/-/safe-buffer-5.1.1/893312af69b2123def71f57889001671eeb2c853.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
- "dev": true
+ "node_modules/stubborn-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz",
+ "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==",
+ "dev": true,
+ "license": "MIT"
},
- "sass-graph": {
- "version": "2.2.4",
- "resolved": "http://npm.trustu.pre/sass-graph/-/sass-graph-2.2.4/13fbd63cd1caf0908b9fd93476ad43a51d1e0b49.tgz",
- "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "node_modules/stylelint": {
+ "version": "16.25.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.25.0.tgz",
+ "integrity": "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==",
"dev": true,
- "optional": true,
- "requires": {
- "glob": "7.1.2",
- "lodash": "4.17.4",
- "scss-tokenizer": "0.2.3",
- "yargs": "7.1.0"
- }
- },
- "sass-loader": {
- "version": "6.0.6",
- "resolved": "http://npm.trustu.pre/sass-loader/-/sass-loader-6.0.6/e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9.tgz",
- "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",
- "dev": true,
- "requires": {
- "async": "2.6.0",
- "clone-deep": "0.3.0",
- "loader-utils": "1.1.0",
- "lodash.tail": "4.1.1",
- "pify": "3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/pify/-/pify-3.0.0/e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
}
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3",
+ "@csstools/selector-specificity": "^5.0.0",
+ "@dual-bundle/import-meta-resolve": "^4.2.1",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.3",
+ "css-tree": "^3.1.0",
+ "debug": "^4.4.3",
+ "fast-glob": "^3.3.3",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^10.1.4",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^7.0.5",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.37.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^13.2.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.5.6",
+ "postcss-resolve-nested-selector": "^0.1.6",
+ "postcss-safe-parser": "^7.0.1",
+ "postcss-selector-parser": "^7.1.0",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "supports-hyperlinks": "^3.2.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.9.0",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": ">=18.12.0"
}
},
- "saucelabs": {
- "version": "1.3.0",
- "resolved": "http://npm.trustu.pre/saucelabs/-/saucelabs-1.3.0/d240e8009df7fa87306ec4578a69ba3b5c424fee.tgz",
- "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=",
+ "node_modules/stylelint-config-recess-order": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-7.4.0.tgz",
+ "integrity": "sha512-W3G517cBaMDYRX5Fzhro4fhRkkLafLgVSPfQnhxbiLyMnbLq47RMF/NRaOJ4OQsKWYhsIHOIc2Q3VL0X3Q7oPg==",
"dev": true,
- "requires": {
- "https-proxy-agent": "1.0.0"
+ "license": "ISC",
+ "peerDependencies": {
+ "stylelint": ">=16.18",
+ "stylelint-order": ">=7"
}
},
- "sax": {
- "version": "1.2.4",
- "resolved": "http://npm.trustu.pre/sax/-/sax-1.2.4/2816234e2378bddc4e5354fab5caa895df7100d9.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
- "schema-utils": {
- "version": "0.3.0",
- "resolved": "http://npm.trustu.pre/schema-utils/-/schema-utils-0.3.0/f5877222ce3e931edae039f17eb3716e7137f8cf.tgz",
- "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+ "node_modules/stylelint-config-recommended": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz",
+ "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==",
"dev": true,
- "requires": {
- "ajv": "5.5.1"
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.23.0"
}
},
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/scss-tokenizer/-/scss-tokenizer-0.2.3/8eb06db9a9723333824d3f5530641149847ce5d1.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "node_modules/stylelint-config-recommended-scss": {
+ "version": "16.0.2",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.2.tgz",
+ "integrity": "sha512-aUTHhPPWCvFyWaxtckJlCPaXTDFsp4pKO8evXNCsW9OwsaUWyMd6jvcUhSmfGWPrTddvzNqK4rS/UuSLcbVGdQ==",
"dev": true,
- "optional": true,
- "requires": {
- "js-base64": "2.4.0",
- "source-map": "0.4.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.4.4/eba4f5da9c0dc999de68032d8b4f76173652036b.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": "1.0.1"
- }
+ "license": "MIT",
+ "dependencies": {
+ "postcss-scss": "^4.0.9",
+ "stylelint-config-recommended": "^17.0.0",
+ "stylelint-scss": "^6.12.1"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^16.24.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
}
}
},
- "select-hose": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/select-hose/-/select-hose-2.0.0/625d8658f865af43ec962bfc376a37359a4994ca.tgz",
- "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
- "dev": true
- },
- "selenium-webdriver": {
- "version": "3.6.0",
- "resolved": "http://npm.trustu.pre/selenium-webdriver/-/selenium-webdriver-3.6.0/2ba87a1662c020b8988c981ae62cb2a01298eafc.tgz",
- "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
- "dev": true,
- "requires": {
- "jszip": "3.1.5",
- "rimraf": "2.6.2",
- "tmp": "0.0.30",
- "xml2js": "0.4.19"
- },
- "dependencies": {
- "tmp": {
- "version": "0.0.30",
- "resolved": "http://npm.trustu.pre/tmp/-/tmp-0.0.30/72419d4a8be7d6ce75148fd8b324e593a711c2ed.tgz",
- "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
- "dev": true,
- "requires": {
- "os-tmpdir": "1.0.2"
- }
+ "node_modules/stylelint-config-standard": {
+ "version": "39.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-39.0.1.tgz",
+ "integrity": "sha512-b7Fja59EYHRNOTa3aXiuWnhUWXFU2Nfg6h61bLfAb5GS5fX3LMUD0U5t4S8N/4tpHQg3Acs2UVPR9jy2l1g/3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
}
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "stylelint-config-recommended": "^17.0.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.23.0"
}
},
- "selfsigned": {
- "version": "1.10.1",
- "resolved": "http://npm.trustu.pre/selfsigned/-/selfsigned-1.10.1/bf8cb7b83256c4551e31347c6311778db99eec52.tgz",
- "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=",
+ "node_modules/stylelint-config-standard-scss": {
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-16.0.0.tgz",
+ "integrity": "sha512-/FHECLUu+med/e6OaPFpprG86ShC4SYT7Tzb2PTVdDjJsehhFBOioSlWqYFqJxmGPIwO3AMBxNo+kY3dxrbczA==",
"dev": true,
- "requires": {
- "node-forge": "0.6.33"
+ "license": "MIT",
+ "dependencies": {
+ "stylelint-config-recommended-scss": "^16.0.1",
+ "stylelint-config-standard": "^39.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^16.23.1"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
}
},
- "semver": {
- "version": "5.4.1",
- "resolved": "http://npm.trustu.pre/semver/-/semver-5.4.1/e059c09d8571f0540823733433505d3a2f00b18e.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
- "dev": true
- },
- "semver-dsl": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/semver-dsl/-/semver-dsl-1.0.1/d3678de5555e8a61f629eed025366ae5f27340a0.tgz",
- "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
+ "node_modules/stylelint-order": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-7.0.0.tgz",
+ "integrity": "sha512-rSWxx0KscYfxU02wEskKXES9lkRzuuONMMNkZ7SUc6uiF3tDKm7e+sE0Ax/SBlG4TUf1sp1R6f3/SlsPGmzthg==",
"dev": true,
- "requires": {
- "semver": "5.4.1"
+ "license": "MIT",
+ "dependencies": {
+ "postcss": "^8.5.3",
+ "postcss-sorting": "^9.1.0"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.18.0"
}
},
- "send": {
- "version": "0.16.1",
- "resolved": "http://npm.trustu.pre/send/-/send-0.16.1/a70e1ca21d1382c11d0d9f6231deb281080d7ab3.tgz",
- "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "node_modules/stylelint-scss": {
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz",
+ "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "depd": "1.1.1",
- "destroy": "1.0.4",
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "2.3.0",
- "range-parser": "1.2.0",
- "statuses": "1.3.1"
- },
- "dependencies": {
- "mime": {
- "version": "1.4.1",
- "resolved": "http://npm.trustu.pre/mime/-/mime-1.4.1/121f9ebc49e3766f311a76e1fa1c8003c4b03aa6.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true
- }
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "^3.0.1",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.36.0",
+ "mdn-data": "^2.21.0",
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.6",
+ "postcss-selector-parser": "^7.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.0.2"
}
},
- "serve-index": {
- "version": "1.9.1",
- "resolved": "http://npm.trustu.pre/serve-index/-/serve-index-1.9.1/d3768d69b1e7d82e5ce050fff5b453bea12a9239.tgz",
- "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "node_modules/stylelint-scss/node_modules/known-css-properties": {
+ "version": "0.36.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz",
+ "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==",
"dev": true,
- "requires": {
- "accepts": "1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "1.0.3",
- "http-errors": "1.6.2",
- "mime-types": "2.1.17",
- "parseurl": "1.3.2"
- }
+ "license": "MIT"
},
- "serve-static": {
- "version": "1.13.1",
- "resolved": "http://npm.trustu.pre/serve-static/-/serve-static-1.13.1/4c57d53404a761d8f2e7c1e8a18a47dbf278a719.tgz",
- "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "node_modules/stylelint-scss/node_modules/mdn-data": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.24.0.tgz",
+ "integrity": "sha512-i97fklrJl03tL1tdRVw0ZfLLvuDsdb6wxL+TrJ+PKkCbLrp2PCu2+OYdCKychIUm19nSM/35S6qz7pJpnXttoA==",
"dev": true,
- "requires": {
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "parseurl": "1.3.2",
- "send": "0.16.1"
- }
+ "license": "CC0-1.0"
},
- "set-blocking": {
+ "node_modules/stylelint/node_modules/balanced-match": {
"version": "2.0.0",
- "resolved": "http://npm.trustu.pre/set-blocking/-/set-blocking-2.0.0/045f9782d011ae9a6803ddd382b24392b3d890f7.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "set-immediate-shim": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/set-immediate-shim/-/set-immediate-shim-1.0.1/4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61.tgz",
- "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
- "dev": true
- },
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "http://npm.trustu.pre/setimmediate/-/setimmediate-1.0.5/290cbb232e306942d7d7ea9b83732ab7856f8285.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
- "dev": true
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/setprototypeof/-/setprototypeof-1.1.0/d0bd85536887b6fe7c0d818cb962d9d91c54e656.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true,
+ "license": "MIT"
},
- "sha.js": {
- "version": "2.4.9",
- "resolved": "http://npm.trustu.pre/sha.js/-/sha.js-2.4.9/98f64880474b74f4a38b8da9d3c0f2d104633e7d.tgz",
- "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
+ "node_modules/stylelint/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,
- "requires": {
- "inherits": "2.0.3",
- "safe-buffer": "5.1.1"
- }
+ "license": "MIT"
},
- "shallow-clone": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/shallow-clone/-/shallow-clone-0.1.2/5909e874ba77106d73ac414cfec1ffca87d97060.tgz",
- "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
+ "node_modules/stylelint/node_modules/file-entry-cache": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz",
+ "integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==",
"dev": true,
- "requires": {
- "is-extendable": "0.1.1",
- "kind-of": "2.0.1",
- "lazy-cache": "0.2.7",
- "mixin-object": "2.0.1"
- },
+ "license": "MIT",
"dependencies": {
- "kind-of": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/kind-of/-/kind-of-2.0.1/018ec7a4ce7e3a86cb9141be519d24c8faa981b5.tgz",
- "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
+ "flat-cache": "^6.1.13"
}
},
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/shebang-command/-/shebang-command-1.2.0/44aac65b695b03398968c39f363fee5deafdf1ea.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "node_modules/stylelint/node_modules/flat-cache": {
+ "version": "6.1.18",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.18.tgz",
+ "integrity": "sha512-JUPnFgHMuAVmLmoH9/zoZ6RHOt5n9NlUw/sDXsTbROJ2SFoS2DS4s+swAV6UTeTbGH/CAsZIE6M8TaG/3jVxgQ==",
"dev": true,
- "requires": {
- "shebang-regex": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "cacheable": "^2.1.0",
+ "flatted": "^3.3.3",
+ "hookified": "^1.12.0"
}
},
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/shebang-regex/-/shebang-regex-1.0.0/da42f49740c0b42db2ca9728571cb190c98efea3.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "http://npm.trustu.pre/signal-exit/-/signal-exit-3.0.2/b5fdc08f1287ea1178628e415e25132b73646c6d.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
- "silent-error": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/silent-error/-/silent-error-1.1.0/2209706f1c850a9f1d10d0d840918b46f26e1bc9.tgz",
- "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=",
+ "node_modules/stylelint/node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
- "requires": {
- "debug": "2.6.9"
+ "license": "MIT",
+ "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"
}
},
- "sntp": {
- "version": "1.0.9",
- "resolved": "http://npm.trustu.pre/sntp/-/sntp-1.0.9/6541184cc90aeea6c6e7b35e2659082443c66198.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "node_modules/stylelint/node_modules/globby/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
- "requires": {
- "hoek": "2.16.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "socket.io": {
- "version": "1.7.3",
- "resolved": "http://npm.trustu.pre/socket.io/-/socket.io-1.7.3/b8af9caba00949e568e369f1327ea9be9ea2461b.tgz",
- "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
- "dev": true,
- "requires": {
- "debug": "2.3.3",
- "engine.io": "1.8.3",
- "has-binary": "0.1.7",
- "object-assign": "4.1.0",
- "socket.io-adapter": "0.5.0",
- "socket.io-client": "1.7.3",
- "socket.io-parser": "2.3.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.3.3/40c453e67e6e13c901ddec317af8986cda9eff8c.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.2/ae25cf2512b3885a1d95d7f037868d8431124765.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/object-assign/-/object-assign-4.1.0/7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0.tgz",
- "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
- "dev": true
- }
+ "node_modules/stylelint/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "socket.io-adapter": {
- "version": "0.5.0",
- "resolved": "http://npm.trustu.pre/socket.io-adapter/-/socket.io-adapter-0.5.0/cb6d4bb8bec81e1078b99677f9ced0046066bb8b.tgz",
- "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
+ "node_modules/stylelint/node_modules/meow": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
- "requires": {
- "debug": "2.3.3",
- "socket.io-parser": "2.3.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
},
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.3.3/40c453e67e6e13c901ddec317af8986cda9eff8c.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.2/ae25cf2512b3885a1d95d7f037868d8431124765.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "socket.io-client": {
- "version": "1.7.3",
- "resolved": "http://npm.trustu.pre/socket.io-client/-/socket.io-client-1.7.3/b30e86aa10d5ef3546601c09cde4765e381da377.tgz",
- "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
- "dev": true,
- "requires": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "1.2.1",
- "debug": "2.3.3",
- "engine.io-client": "1.8.3",
- "has-binary": "0.1.7",
- "indexof": "0.0.1",
- "object-component": "0.0.3",
- "parseuri": "0.0.5",
- "socket.io-parser": "2.3.1",
- "to-array": "0.1.4"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/component-emitter/-/component-emitter-1.2.1/137918d6d78283f7df7a6b7c5a63e140e69425e6.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.3.3/40c453e67e6e13c901ddec317af8986cda9eff8c.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.2/ae25cf2512b3885a1d95d7f037868d8431124765.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
+ "node_modules/stylelint/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "socket.io-parser": {
- "version": "2.3.1",
- "resolved": "http://npm.trustu.pre/socket.io-parser/-/socket.io-parser-2.3.1/dd532025103ce429697326befd64005fcfe5b4a0.tgz",
- "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
- "dev": true,
- "requires": {
- "component-emitter": "1.1.2",
- "debug": "2.2.0",
- "isarray": "0.0.1",
- "json3": "3.3.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/debug/-/debug-2.2.0/f87057e995b1a1f6ae6a4960664137bc56f039da.tgz",
- "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
- "dev": true,
- "requires": {
- "ms": "0.7.1"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "http://npm.trustu.pre/isarray/-/isarray-0.0.1/8a18acfca9a8f4177e09abfc6038939b05d1eedf.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "ms": {
- "version": "0.7.1",
- "resolved": "http://npm.trustu.pre/ms/-/ms-0.7.1/9cd13c03adbff25b65effde7ce864ee952017098.tgz",
- "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
- "dev": true
- }
+ "node_modules/stylelint/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "sockjs": {
- "version": "0.3.18",
- "resolved": "http://npm.trustu.pre/sockjs/-/sockjs-0.3.18/d9b289316ca7df77595ef299e075f0f937eb4207.tgz",
- "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=",
+ "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,
- "requires": {
- "faye-websocket": "0.10.0",
- "uuid": "2.0.3"
- },
+ "license": "MIT",
"dependencies": {
- "uuid": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/uuid/-/uuid-2.0.3/67e2e863797215530dff318e5bf9dcebfd47b21a.tgz",
- "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
- "dev": true
- }
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "sockjs-client": {
- "version": "1.1.4",
- "resolved": "http://npm.trustu.pre/sockjs-client/-/sockjs-client-1.1.4/5babe386b775e4cf14e7520911452654016c8b12.tgz",
- "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=",
+ "node_modules/supports-hyperlinks": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
+ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "eventsource": "0.1.6",
- "faye-websocket": "0.11.1",
- "inherits": "2.0.3",
- "json3": "3.3.2",
- "url-parse": "1.2.0"
- },
- "dependencies": {
- "faye-websocket": {
- "version": "0.11.1",
- "resolved": "http://npm.trustu.pre/faye-websocket/-/faye-websocket-0.11.1/f0efe18c4f56e4f40afc7e06c719fd5ee6188f38.tgz",
- "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
- "dev": true,
- "requires": {
- "websocket-driver": "0.7.0"
- }
- }
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
}
},
- "sort-keys": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/sort-keys/-/sort-keys-1.1.2/441b6d4d346798f1b4e49e8920adfba0e543f9ad.tgz",
- "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "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==",
"dev": true,
- "requires": {
- "is-plain-obj": "1.1.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "source-list-map": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/source-list-map/-/source-list-map-2.0.0/aaa47403f7b245a92fbc97ea08f250d6087ed085.tgz",
- "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
- "source-map": {
- "version": "0.5.7",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.5.7/8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "license": "MIT"
},
- "source-map-explorer": {
- "version": "1.5.0",
- "resolved": "http://npm.trustu.pre/source-map-explorer/-/source-map-explorer-1.5.0/654e2ba0db158fecfc99b9cefdf891b755b767d1.tgz",
- "integrity": "sha512-skfca9IJvJKsI+J3sWFQ+hCqUDmZxhGgM20/L7PpNGRnQSVyXPYi7U0TDw0eNj5Yhtsm//psmNkxQmHuEJJ6FA==",
+ "node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
"dev": true,
- "requires": {
- "btoa": "1.1.2",
- "convert-source-map": "1.5.1",
- "docopt": "0.6.2",
- "glob": "7.1.2",
- "open": "0.0.5",
- "source-map": "0.5.7",
- "temp": "0.8.3",
- "underscore": "1.8.3"
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
}
},
- "source-map-loader": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/source-map-loader/-/source-map-loader-0.2.3/d4b0c8cd47d54edce3e6bfa0f523f452b5b0e521.tgz",
- "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==",
- "dev": true,
- "requires": {
- "async": "2.6.0",
- "loader-utils": "0.2.17",
- "source-map": "0.6.1"
- },
- "dependencies": {
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "http://npm.trustu.pre/loader-utils/-/loader-utils-0.2.17/f86e6374d43205a6e6c60e9196f17c0299bfb348.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "node_modules/table": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "source-map-support": {
- "version": "0.4.18",
- "resolved": "http://npm.trustu.pre/source-map-support/-/source-map-support-0.4.18/0286a6de8be42641338594e97ccea75f0a2c585f.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "node_modules/table/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==",
"dev": true,
- "requires": {
- "source-map": "0.5.7"
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "sparkles": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/sparkles/-/sparkles-1.0.0/1acbbfb592436d10bbe8f785b7cc6f82815012c3.tgz",
- "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
- "dev": true
+ "node_modules/table/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,
+ "license": "MIT"
},
- "spdx-correct": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/spdx-correct/-/spdx-correct-1.0.2/4b3073d933ff51f3912f03ac5519498a4150db40.tgz",
- "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "node_modules/table/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,
- "requires": {
- "spdx-license-ids": "1.2.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "spdx-expression-parse": {
- "version": "1.0.4",
- "resolved": "http://npm.trustu.pre/spdx-expression-parse/-/spdx-expression-parse-1.0.4/9bdf2f20e1f40ed447fbe273266191fced51626c.tgz",
- "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
- "dev": true
+ "node_modules/table/node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
},
- "spdx-license-ids": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/spdx-license-ids/-/spdx-license-ids-1.2.2/c9df7a3424594ade6bd11900d596696dc06bac57.tgz",
- "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
- "dev": true
+ "node_modules/table/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "spdy": {
- "version": "3.4.7",
- "resolved": "http://npm.trustu.pre/spdy/-/spdy-3.4.7/42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc.tgz",
- "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "handle-thing": "1.2.5",
- "http-deceiver": "1.2.7",
- "safe-buffer": "5.1.1",
- "select-hose": "2.0.0",
- "spdy-transport": "2.0.20"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "spdy-transport": {
- "version": "2.0.20",
- "resolved": "http://npm.trustu.pre/spdy-transport/-/spdy-transport-2.0.20/735e72054c486b2354fe89e702256004a39ace4d.tgz",
- "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
"dev": true,
- "requires": {
- "debug": "2.6.9",
- "detect-node": "2.0.3",
- "hpack.js": "2.1.6",
- "obuf": "1.1.1",
- "readable-stream": "2.3.3",
- "safe-buffer": "5.1.1",
- "wbuf": "1.7.2"
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "split": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/split/-/split-1.0.1/605bd9be303aa59fb35f9229fbea0ddec9ea07d9.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "node_modules/tar-fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
"dev": true,
- "requires": {
- "through": "2.3.8"
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
}
},
- "split2": {
- "version": "2.2.0",
- "resolved": "http://npm.trustu.pre/split2/-/split2-2.2.0/186b2575bcf83e85b7d18465756238ee4ee42493.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"dev": true,
- "requires": {
- "through2": "2.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
}
},
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/sprintf-js/-/sprintf-js-1.0.3/04e6926f662895354f3dd015203633b857297e2c.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
},
- "sshpk": {
- "version": "1.13.1",
- "resolved": "http://npm.trustu.pre/sshpk/-/sshpk-1.13.1/512df6da6287144316dc4c18fe1cf1d940739be3.tgz",
- "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
- "dev": true,
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-1.0.0/f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "ssri": {
+ "node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
- "resolved": "http://npm.trustu.pre/ssri/-/ssri-5.0.0/13c19390b606c821f2a10d02b351c1729b94d8cf.tgz",
- "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
}
},
- "standard-version": {
- "version": "4.2.0",
- "resolved": "http://npm.trustu.pre/standard-version/-/standard-version-4.2.0/3017e8c5ced2a92db7501790255c3ba85157375d.tgz",
- "integrity": "sha1-MBfoxc7SqS23UBeQJVw7qFFXN10=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "conventional-changelog": "1.1.7",
- "conventional-recommended-bump": "1.0.3",
- "figures": "1.7.0",
- "fs-access": "1.0.1",
- "semver": "5.4.1",
- "yargs": "8.0.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/ansi-regex/-/ansi-regex-3.0.0/ed0317c322064f79466c02966bddb605ab37d998.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/ansi-styles/-/ansi-styles-2.2.1/b432dd3358b634cf75e1e4664368240533c1ddbe.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-4.1.0/d545635be1e33c542649c69173e5de6acfae34dd.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/chalk/-/chalk-1.1.3/a8115c55e4a702fe4d150abd3872822a7e09fc98.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/find-up/-/find-up-2.1.0/45d1b7e506c717ddd482775a2b77920a3c0c57a7.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0/a3b30a5c4f199183167aaab93beefae3ddfb654f.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/load-json-file/-/load-json-file-2.0.0/7947e42149af80d696cbf797bcaabcfe1fe29ca8.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "strip-bom": "3.0.0"
- }
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/os-locale/-/os-locale-2.1.0/42bc2900a6b5b8bd17376c8e882b65afccf24bf2.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/path-type/-/path-type-2.0.0/f012ccb8415b7096fc2daa1054c3d72389594c73.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "2.3.0"
- }
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/read-pkg/-/read-pkg-2.0.0/8ef1c0623c6a6db0dc6713c4bfac46332b2368f8.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "2.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/read-pkg-up/-/read-pkg-up-2.0.0/6b72a8048984e0c41e79510fd5e9fa99b3b549be.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "2.1.0",
- "read-pkg": "2.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/string-width/-/string-width-2.1.1/ab93f27a8dc13d28cac815c462143a6d9012ae9e.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/strip-ansi/-/strip-ansi-4.0.0/a8479022eb1ac368a871389b635262c505ee368f.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/strip-bom/-/strip-bom-3.0.0/2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-2.0.0/535d045ce6b6363fa40117084629995e9df324c7.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/which-module/-/which-module-2.0.0/d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "yargs": {
- "version": "8.0.2",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-8.0.2/6299a9055b1cefc969ff7e79c1d918dceb22c360.tgz",
- "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "read-pkg-up": "2.0.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "7.0.0"
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "http://npm.trustu.pre/yargs-parser/-/yargs-parser-7.0.0/8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0"
- }
- }
+ "node_modules/tar/node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "statuses": {
- "version": "1.3.1",
- "resolved": "http://npm.trustu.pre/statuses/-/statuses-1.3.1/faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e.tgz",
- "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
- "dev": true
+ "node_modules/tar/node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "stdout-stream": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/stdout-stream/-/stdout-stream-1.4.0/a2c7c8587e54d9427ea9edb3ac3f2cd522df378b.tgz",
- "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
+ "node_modules/tar/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
- "optional": true,
- "requires": {
- "readable-stream": "2.3.3"
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "stream-browserify": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/stream-browserify/-/stream-browserify-2.0.1/66266ee5f9bdb9940a4e4514cafb43bb71e5c9db.tgz",
- "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "node_modules/tar/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,
+ "license": "ISC"
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/text-extensions": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
+ "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/third-party-web": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.27.0.tgz",
+ "integrity": "sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT"
+ },
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
"dev": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3"
+ "license": "MIT"
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "stream-each": {
- "version": "1.2.2",
- "resolved": "http://npm.trustu.pre/stream-each/-/stream-each-1.2.2/8e8c463f91da8991778765873fe4d960d8f616bd.tgz",
- "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+ "node_modules/tinyrainbow": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz",
+ "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==",
"dev": true,
- "requires": {
- "end-of-stream": "1.4.0",
- "stream-shift": "1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
}
},
- "stream-http": {
- "version": "2.7.2",
- "resolved": "http://npm.trustu.pre/stream-http/-/stream-http-2.7.2/40a050ec8dc3b53b33d9909415c02c0bf1abfbad.tgz",
- "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
+ "node_modules/tldts": {
+ "version": "7.0.17",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.17.tgz",
+ "integrity": "sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==",
"dev": true,
- "requires": {
- "builtin-status-codes": "3.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.3",
- "to-arraybuffer": "1.0.1",
- "xtend": "4.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.17"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
}
},
- "stream-shift": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/stream-shift/-/stream-shift-1.0.0/d5c752825e5367e786f78e18e445ea223a155952.tgz",
- "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
- "dev": true
- },
- "strict-uri-encode": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/strict-uri-encode/-/strict-uri-encode-1.1.0/279b225df1d582b1f54e65addd4352e18faa0713.tgz",
- "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
- "dev": true
+ "node_modules/tldts-core": {
+ "version": "7.0.17",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.17.tgz",
+ "integrity": "sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==",
+ "dev": true,
+ "license": "MIT"
},
- "string-width": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/string-width/-/string-width-1.0.2/118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "node_modules/tldts-icann": {
+ "version": "7.0.17",
+ "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.17.tgz",
+ "integrity": "sha512-up4oFDoumyz2RscRxoYRxf+2OvIKUHjh7rUvuGWI0PZ/47k35sadoi2JyKR0AIfTw09qcfix8bUxXFQhY1QZIQ==",
"dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.17"
}
},
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/string_decoder/-/string_decoder-1.0.3/0fc67d7c141825de94282dd536bec6b9bce860ab.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "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==",
"dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
}
},
- "stringstream": {
- "version": "0.0.5",
- "resolved": "http://npm.trustu.pre/stringstream/-/stringstream-0.0.5/4e484cd4de5a0bbbee18e46307710a8a81621878.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/strip-ansi/-/strip-ansi-3.0.1/6a385fb8853d952d5ff05d0e8aaf94278dc63dcf.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
}
},
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/strip-bom/-/strip-bom-2.0.0/6219a85616520491f35788bdbf1447a99c7e6b0e.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "node_modules/tough-cookie": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
+ "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
"dev": true,
- "requires": {
- "is-utf8": "0.2.1"
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^7.0.5"
+ },
+ "engines": {
+ "node": ">=16"
}
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/strip-eof/-/strip-eof-1.0.0/bb43ff5598a6eb05d89b59fcd129c983313606bf.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/strip-indent/-/strip-indent-1.0.1/0c7962a6adefa7bbd4ac366460a638552ae1a0a2.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "node_modules/tr46": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz",
+ "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==",
"dev": true,
- "requires": {
- "get-stdin": "4.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=20"
}
},
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/strip-json-comments/-/strip-json-comments-2.0.1/3c531942e908c2697c0ec344858c286c7ca0a60a.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- },
- "style-loader": {
- "version": "0.13.2",
- "resolved": "http://npm.trustu.pre/style-loader/-/style-loader-0.13.2/74533384cf698c7104c7951150b49717adc2f3bb.tgz",
- "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=",
+ "node_modules/tr46/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,
- "requires": {
- "loader-utils": "1.1.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "stylus": {
- "version": "0.54.5",
- "resolved": "http://npm.trustu.pre/stylus/-/stylus-0.54.5/42b9560931ca7090ce8515a798ba9e6aa3d6dc79.tgz",
- "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
+ "node_modules/ts-api-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
"dev": true,
- "requires": {
- "css-parse": "1.7.0",
- "debug": "2.6.9",
- "glob": "7.0.6",
- "mkdirp": "0.5.1",
- "sax": "0.5.8",
- "source-map": "0.1.43"
- },
- "dependencies": {
- "glob": {
- "version": "7.0.6",
- "resolved": "http://npm.trustu.pre/glob/-/glob-7.0.6/211bafaf49e525b8cd93260d14ab136152b3f57a.tgz",
- "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "sax": {
- "version": "0.5.8",
- "resolved": "http://npm.trustu.pre/sax/-/sax-0.5.8/d472db228eb331c2506b0e8c15524adb939d12c1.tgz",
- "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
- "dev": true
- },
- "source-map": {
- "version": "0.1.43",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.1.43/c24bc146ca517c1471f5dacbe2571b2b7f9e3346.tgz",
- "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
}
},
- "stylus-loader": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/stylus-loader/-/stylus-loader-3.0.1/77f4b34fd030d25b2617bcf5513db5b0730c4089.tgz",
- "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=",
+ "node_modules/ts-loader": {
+ "version": "9.5.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz",
+ "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==",
"dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "lodash.clonedeep": "4.5.0",
- "when": "3.6.4"
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4",
+ "source-map": "^0.7.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
}
},
- "supports-color": {
- "version": "4.5.0",
- "resolved": "http://npm.trustu.pre/supports-color/-/supports-color-4.5.0/be7a0de484dec5c5cddf8b3d59125044912f635b.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "node_modules/ts-loader/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==",
"dev": true,
- "requires": {
- "has-flag": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "svgo": {
- "version": "0.7.2",
- "resolved": "http://npm.trustu.pre/svgo/-/svgo-0.7.2/9f5772413952135c6fefbf40afe6a4faa88b4bb5.tgz",
- "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+ "node_modules/ts-loader/node_modules/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": {
- "coa": "1.0.4",
- "colors": "1.1.2",
- "csso": "2.3.2",
- "js-yaml": "3.7.0",
- "mkdirp": "0.5.1",
- "sax": "1.2.4",
- "whet.extend": "0.9.9"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "symbol-observable": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/symbol-observable/-/symbol-observable-1.0.1/8340fc4702c3122df5d22288f88283f513d3fdd4.tgz",
- "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
- },
- "tapable": {
- "version": "0.2.8",
- "resolved": "http://npm.trustu.pre/tapable/-/tapable-0.2.8/99372a5c999bf2df160afc0d74bed4f47948cd22.tgz",
- "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
- "dev": true
+ "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==",
+ "license": "0BSD"
},
- "tar": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/tar/-/tar-2.2.1/8e4d2a256c0e2185c6b18ad694aec968b83cb1d1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "node_modules/tuf-js": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.1.0.tgz",
+ "integrity": "sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==",
"dev": true,
- "optional": true,
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "3.0.1",
+ "debug": "^4.4.1",
+ "make-fetch-happen": "^14.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "temp": {
- "version": "0.8.3",
- "resolved": "http://npm.trustu.pre/temp/-/temp-0.8.3/e0c6bc4d26b903124410e4fed81103014dfc1f59.tgz",
- "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "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,
- "requires": {
- "os-tmpdir": "1.0.2",
- "rimraf": "2.2.8"
- },
+ "license": "MIT",
"dependencies": {
- "rimraf": {
- "version": "2.2.8",
- "resolved": "http://npm.trustu.pre/rimraf/-/rimraf-2.2.8/e439be2aaee327321952730f99a8929e4fc50582.tgz",
- "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
- "dev": true
- }
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "text-extensions": {
- "version": "1.7.0",
- "resolved": "http://npm.trustu.pre/text-extensions/-/text-extensions-1.7.0/faaaba2625ed746d568a23e4d0aacd9bf08a8b39.tgz",
- "integrity": "sha512-AKXZeDq230UaSzaO5s3qQUZOaC7iKbzq0jOFL614R7d9R593HLqAOL0cYoqLdkNrjBSOdmoQI06yigq1TSBXAg==",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "http://npm.trustu.pre/through/-/through-2.3.8/0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "2.0.3",
- "resolved": "http://npm.trustu.pre/through2/-/through2-2.0.3/0004569b37c7c74ba39c43f3ced78d1ad94140be.tgz",
- "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true,
- "requires": {
- "readable-stream": "2.3.3",
- "xtend": "4.0.1"
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "thunky": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/thunky/-/thunky-0.1.0/bf30146824e2b6e67b0f2d7a4ac8beb26908684e.tgz",
- "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=",
- "dev": true
- },
- "time-stamp": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/time-stamp/-/time-stamp-2.0.0/95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357.tgz",
- "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=",
- "dev": true
+ "node_modules/typed-query-selector": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
+ "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "dev": true,
+ "license": "MIT"
},
- "timers-browserify": {
- "version": "2.0.4",
- "resolved": "http://npm.trustu.pre/timers-browserify/-/timers-browserify-2.0.4/96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6.tgz",
- "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
- "requires": {
- "setimmediate": "1.0.5"
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
}
},
- "tmp": {
- "version": "0.0.31",
- "resolved": "http://npm.trustu.pre/tmp/-/tmp-0.0.31/8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7.tgz",
- "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+ "node_modules/typescript-eslint": {
+ "version": "8.46.2",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.2.tgz",
+ "integrity": "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==",
"dev": true,
- "requires": {
- "os-tmpdir": "1.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.46.2",
+ "@typescript-eslint/parser": "8.46.2",
+ "@typescript-eslint/typescript-estree": "8.46.2",
+ "@typescript-eslint/utils": "8.46.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
- "to-array": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/to-array/-/to-array-0.1.4/17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890.tgz",
- "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
- "dev": true
- },
- "to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/to-arraybuffer/-/to-arraybuffer-1.0.1/7d229b1fcc637e466ca081180836a7aabff83f43.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
- "dev": true
- },
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/to-fast-properties/-/to-fast-properties-1.0.3/b83571fa4d8c25b82e231b06e3a3055de4ca1a47.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true
+ "node_modules/undici-types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "dev": true,
+ "license": "MIT"
},
- "toposort": {
- "version": "1.0.6",
- "resolved": "http://npm.trustu.pre/toposort/-/toposort-1.0.6/c31748e55d210effc00fdcdc7d6e68d7d7bb9cec.tgz",
- "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=",
- "dev": true
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "tough-cookie": {
- "version": "2.3.3",
- "resolved": "http://npm.trustu.pre/tough-cookie/-/tough-cookie-2.3.3/0b618a5565b6dea90bf3425d04d55edc475a7561.tgz",
- "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "node_modules/unique-filename": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
+ "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
"dev": true,
- "requires": {
- "punycode": "1.4.1"
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "tree-kill": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/tree-kill/-/tree-kill-1.2.0/5846786237b4239014f05db156b643212d4c6f36.tgz",
- "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
- "dev": true
+ "node_modules/unique-slug": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
+ "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
},
- "trim-newlines": {
+ "node_modules/unpipe": {
"version": "1.0.0",
- "resolved": "http://npm.trustu.pre/trim-newlines/-/trim-newlines-1.0.0/5887966bb582a4503a41eb524f7d35011815a613.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "trim-off-newlines": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/trim-off-newlines/-/trim-off-newlines-1.0.1/9f9ba9d9efa8764c387698bcbfeb2c848f11adb3.tgz",
- "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
- "dev": true
- },
- "trim-right": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/trim-right/-/trim-right-1.0.1/cb2e1203067e0c8de1f614094b9fe45704ea6003.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/true-case-path/-/true-case-path-1.0.2/7ec91130924766c7f573be3020c34f8fdfd00d62.tgz",
- "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true,
- "optional": true,
- "requires": {
- "glob": "6.0.4"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "resolved": "http://npm.trustu.pre/glob/-/glob-6.0.4/0f08860f6a155127b2fadd4f9ce24b1aab6e4d22.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "optional": true,
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
+ "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
}
},
- "ts-helpers": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/ts-helpers/-/ts-helpers-1.1.2/fc69be9f1f3baed01fb1a0ef8d4cfe748814d835.tgz",
- "integrity": "sha1-/Gm+nx87rtAfsaDvjUz+dIgU2DU=",
- "dev": true
+ "node_modules/update-check": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
+ "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
},
- "ts-node": {
- "version": "3.3.0",
- "resolved": "http://npm.trustu.pre/ts-node/-/ts-node-3.3.0/c13c6a3024e30be1180dd53038fc209289d4bf69.tgz",
- "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=",
- "dev": true,
- "requires": {
- "arrify": "1.0.1",
- "chalk": "2.2.2",
- "diff": "3.4.0",
- "make-error": "1.3.0",
- "minimist": "1.2.0",
- "mkdirp": "0.5.1",
- "source-map-support": "0.4.18",
- "tsconfig": "6.0.0",
- "v8flags": "3.0.1",
- "yn": "2.0.0"
- }
- },
- "tsconfig": {
- "version": "6.0.0",
- "resolved": "http://npm.trustu.pre/tsconfig/-/tsconfig-6.0.0/6b0e8376003d7af1864f8df8f89dd0059ffcd032.tgz",
- "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
+ "node_modules/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": {
- "strip-bom": "3.0.0",
- "strip-json-comments": "2.0.1"
- },
+ "license": "BSD-2-Clause",
"dependencies": {
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/strip-bom/-/strip-bom-3.0.0/2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- }
+ "punycode": "^2.1.0"
}
},
- "tsickle": {
- "version": "0.25.5",
- "resolved": "http://npm.trustu.pre/tsickle/-/tsickle-0.25.5/2891d29f97c4aab1306e06378d8496d1765a4bfe.tgz",
- "integrity": "sha512-CgOT/1WqOKtE1fyvqB+kTJ7bizE33xj1TyUIzGbxJBGCbQmknCrZbb35DtxMiK6pJo4CrPyoS8iGFddfHKtSNA==",
+ "node_modules/uri-js/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,
- "requires": {
- "minimist": "1.2.0",
- "mkdirp": "0.5.1",
- "source-map": "0.5.7",
- "source-map-support": "0.4.18"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "tslib": {
- "version": "1.8.1",
- "resolved": "http://npm.trustu.pre/tslib/-/tslib-1.8.1/6946af2d1d651a7b1863b531d6e5afa41aa44eac.tgz",
- "integrity": "sha1-aUavLR1lGnsYY7Ux1uWvpBqkTqw="
- },
- "tslint": {
- "version": "5.8.0",
- "resolved": "http://npm.trustu.pre/tslint/-/tslint-5.8.0/1f49ad5b2e77c76c3af4ddcae552ae4e3612eb13.tgz",
- "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=",
- "dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "builtin-modules": "1.1.1",
- "chalk": "2.2.2",
- "commander": "2.12.2",
- "diff": "3.4.0",
- "glob": "7.1.2",
- "minimatch": "3.0.4",
- "resolve": "1.5.0",
- "semver": "5.4.1",
- "tslib": "1.8.1",
- "tsutils": "2.13.0"
- }
- },
- "tsutils": {
- "version": "2.13.0",
- "resolved": "http://npm.trustu.pre/tsutils/-/tsutils-2.13.0/0f52b6aabbc4216e72796b66db028c6cf173e144.tgz",
- "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==",
- "dev": true,
- "requires": {
- "tslib": "1.8.1"
- }
- },
- "tty-browserify": {
- "version": "0.0.0",
- "resolved": "http://npm.trustu.pre/tty-browserify/-/tty-browserify-0.0.0/a157ba402da24e9bf957f9aa69d524eed42901a6.tgz",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
- "dev": true
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "http://npm.trustu.pre/tunnel-agent/-/tunnel-agent-0.6.0/27a5dea06b36b04a0a9966774b290868f0fc40fd.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "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,
- "requires": {
- "safe-buffer": "5.1.1"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "http://npm.trustu.pre/tweetnacl/-/tweetnacl-0.14.5/5ae68177f192d4456269d108afa93ff8743f4f64.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "node_modules/validate-npm-package-name": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz",
+ "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==",
"dev": true,
- "optional": true
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
},
- "type-check": {
- "version": "0.3.2",
- "resolved": "http://npm.trustu.pre/type-check/-/type-check-0.3.2/5884cab512cf1d355e3fb784f30804b2b520db72.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true,
- "requires": {
- "prelude-ls": "1.1.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "type-is": {
- "version": "1.6.15",
- "resolved": "http://npm.trustu.pre/type-is/-/type-is-1.6.15/cab10fb4909e441c82842eafe1ad646c81804410.tgz",
- "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+ "node_modules/vite": {
+ "version": "7.1.11",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz",
+ "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
"dev": true,
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "2.1.17"
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.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"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
}
},
- "typedarray": {
- "version": "0.0.6",
- "resolved": "http://npm.trustu.pre/typedarray/-/typedarray-0.0.6/867ac74e3864187b1d3d47d996a78ec5c8830777.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
+ "node_modules/vite/node_modules/fsevents": {
+ "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"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
},
- "typescript": {
- "version": "2.4.2",
- "resolved": "http://npm.trustu.pre/typescript/-/typescript-2.4.2/f8395f85d459276067c988aa41837a8f82870844.tgz",
- "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=",
- "dev": true
+ "node_modules/vite/node_modules/picomatch": {
+ "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": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
- "uglify-js": {
- "version": "3.2.1",
- "resolved": "http://npm.trustu.pre/uglify-js/-/uglify-js-3.2.1/d6427fd45a25fefc5d196689c0c772a6915e10fe.tgz",
- "integrity": "sha512-BhZTJPmOKPSUcjnx2nlfaOQKHLyjjT4HFyzFWF1BUErx9knJNpdW94ql5o8qVxeNL+8IAWjEjnPvASH2yZnkMg==",
+ "node_modules/vite/node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
- "requires": {
- "commander": "2.12.2",
- "source-map": "0.6.1"
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
},
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/vitest": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.4.tgz",
+ "integrity": "sha512-hV31h0/bGbtmDQc0KqaxsTO1v4ZQeF8ojDFuy4sZhFadwAqqvJA0LDw68QUocctI5EDpFMql/jVWKuPYHIf2Ew==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
+ "@vitest/expect": "4.0.4",
+ "@vitest/mocker": "4.0.4",
+ "@vitest/pretty-format": "4.0.4",
+ "@vitest/runner": "4.0.4",
+ "@vitest/snapshot": "4.0.4",
+ "@vitest/spy": "4.0.4",
+ "@vitest/utils": "4.0.4",
+ "debug": "^4.4.3",
+ "es-module-lexer": "^1.7.0",
+ "expect-type": "^1.2.2",
+ "magic-string": "^0.30.19",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "std-env": "^3.9.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.0.3",
+ "vite": "^6.0.0 || ^7.0.0",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.0.4",
+ "@vitest/browser-preview": "4.0.4",
+ "@vitest/browser-webdriverio": "4.0.4",
+ "@vitest/ui": "4.0.4",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@types/debug": {
+ "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
}
}
},
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/uglify-to-browserify/-/uglify-to-browserify-1.0.2/6e0924d6bda6b5afe349e39a6d632850a0f882b7.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "node_modules/vitest/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,
- "optional": true
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
},
- "uglifyjs-webpack-plugin": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.2/8a9abc238d01a33daaf86fa9a84c7ebc1e67b0f9.tgz",
- "integrity": "sha512-k07cmJTj+8vZMSc3BaQ9uW7qVl2MqDts4ti4KaNACXEcXSw2vQM2S8olSk/CODxvcSFGvUHzNSqA8JQlhgUJPw==",
- "dev": true,
- "requires": {
- "cacache": "10.0.1",
- "find-cache-dir": "1.0.0",
- "schema-utils": "0.3.0",
- "source-map": "0.6.1",
- "uglify-es": "3.2.1",
- "webpack-sources": "1.1.0",
- "worker-farm": "1.5.2"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "uglify-es": {
- "version": "3.2.1",
- "resolved": "http://npm.trustu.pre/uglify-es/-/uglify-es-3.2.1/93de0aad8a1bb629c8a316f686351bc4d6ece687.tgz",
- "integrity": "sha512-c+Fy4VuGvPmT7mj7vEPjRR/iNFuXuOAkufhCtCvTGX0Hr4gCM9YwCnLgHkxr1ngqSODQaDObU3g8SF8uE/tY1w==",
- "dev": true,
- "requires": {
- "commander": "2.12.2",
- "source-map": "0.6.1"
- }
- }
+ "node_modules/vitest/node_modules/picomatch": {
+ "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": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "ultron": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/ultron/-/ultron-1.0.2/ace116ab557cd197386a4e88f4685378c8b2e4fa.tgz",
- "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
- "dev": true
+ "node_modules/vitest/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": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
},
- "underscore": {
- "version": "1.8.3",
- "resolved": "http://npm.trustu.pre/underscore/-/underscore-1.8.3/4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022.tgz",
- "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
- "dev": true
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.3",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
+ "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
},
- "uniq": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/uniq/-/uniq-1.0.1/b31c5ae8254844a3a8281541ce2b04b865a734ff.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
+ "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
},
- "uniqid": {
- "version": "4.1.1",
- "resolved": "http://npm.trustu.pre/uniqid/-/uniqid-4.1.1/89220ddf6b751ae52b5f72484863528596bb84c1.tgz",
- "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
+ "node_modules/vue-eslint-parser/node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
- "requires": {
- "macaddress": "0.2.8"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "uniqs": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/uniqs/-/uniqs-2.0.0/ffede4b36b25290696e6e165d4a59edb998e6b02.tgz",
- "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
- "dev": true
- },
- "unique-filename": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/unique-filename/-/unique-filename-1.1.0/d05f2fe4032560871f30e93cbe735eea201514f3.tgz",
- "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
+ "node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"dev": true,
- "requires": {
- "unique-slug": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "unique-slug": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/unique-slug/-/unique-slug-2.0.0/db6676e7c7cc0629878ff196097c78855ae9f4ab.tgz",
- "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
+ "node_modules/watchpack": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
+ "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
"dev": true,
- "requires": {
- "imurmurhash": "0.1.4"
+ "license": "MIT",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "universalify": {
- "version": "0.1.1",
- "resolved": "http://npm.trustu.pre/universalify/-/universalify-0.1.1/fa71badd4437af4c148841e3b3b165f9e9e590b7.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
- "dev": true
+ "node_modules/weak-lru-cache": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
+ "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
},
- "unpipe": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/unpipe/-/unpipe-1.0.0/b2bf4ee8514aae6165b4817829d21b2ef49904ec.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
+ "node_modules/webdriver-bidi-protocol": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.8.tgz",
+ "integrity": "sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==",
+ "dev": true,
+ "license": "Apache-2.0"
},
- "upper-case": {
- "version": "1.1.3",
- "resolved": "http://npm.trustu.pre/upper-case/-/upper-case-1.1.3/f6b4501c2ec4cdd26ba78be7222961de77621598.tgz",
- "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
- "dev": true
+ "node_modules/webidl-conversions": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
+ "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=20"
+ }
},
- "url": {
- "version": "0.11.0",
- "resolved": "http://npm.trustu.pre/url/-/url-0.11.0/3838e97cfc60521eb73c525a8e55bfdd9e2e28f1.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dev": true,
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
},
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "http://npm.trustu.pre/punycode/-/punycode-1.3.2/9653a036fb7c1ee42342f2325cceefea3926c48d.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
- "dev": true
- }
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "url-loader": {
- "version": "0.6.2",
- "resolved": "http://npm.trustu.pre/url-loader/-/url-loader-0.6.2/a007a7109620e9d988d14bce677a1decb9a993f7.tgz",
- "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==",
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
- "requires": {
- "loader-utils": "1.1.0",
- "mime": "1.6.0",
- "schema-utils": "0.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "url-parse": {
- "version": "1.2.0",
- "resolved": "http://npm.trustu.pre/url-parse/-/url-parse-1.2.0/3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986.tgz",
- "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==",
+ "node_modules/whatwg-url": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz",
+ "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==",
"dev": true,
- "requires": {
- "querystringify": "1.0.0",
- "requires-port": "1.0.0"
- },
+ "license": "MIT",
"dependencies": {
- "querystringify": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/querystringify/-/querystringify-1.0.0/6286242112c5b712fa654e526652bf6a13ff05cb.tgz",
- "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=",
- "dev": true
- }
+ "tr46": "^6.0.0",
+ "webidl-conversions": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
}
},
- "url2": {
- "version": "0.0.0",
- "resolved": "http://npm.trustu.pre/url2/-/url2-0.0.0/4eaabd1d5c3ac90d62ab4485c998422865a04b1a.tgz",
- "integrity": "sha1-Tqq9HVw6yQ1iq0SFyZhCKGWgSxo=",
- "dev": true
+ "node_modules/when-exit": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz",
+ "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==",
+ "dev": true,
+ "license": "MIT"
},
- "useragent": {
- "version": "2.2.1",
- "resolved": "http://npm.trustu.pre/useragent/-/useragent-2.2.1/cf593ef4f2d175875e8bb658ea92e18a4fd06d8e.tgz",
- "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
- "requires": {
- "lru-cache": "2.2.4",
- "tmp": "0.0.31"
- },
+ "license": "ISC",
"dependencies": {
- "lru-cache": {
- "version": "2.2.4",
- "resolved": "http://npm.trustu.pre/lru-cache/-/lru-cache-2.2.4/6c658619becf14031d0d0b594b16042ce4dc063d.tgz",
- "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
- "dev": true
- }
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "util": {
- "version": "0.10.3",
- "resolved": "http://npm.trustu.pre/util/-/util-0.10.3/7afb1afe50805246489e3db7fe0ed379336ac0f9.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
"dev": true,
- "requires": {
- "inherits": "2.0.1"
- },
+ "license": "MIT",
"dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/inherits/-/inherits-2.0.1/b17d08d326b4423e568eff719f91b0b1cbdf69f1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- }
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
+ },
+ "bin": {
+ "why-is-node-running": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/util-deprecate/-/util-deprecate-1.0.2/450d4dc9fa70de732762fbd2d4a28981419a0ccf.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "utila": {
- "version": "0.4.0",
- "resolved": "http://npm.trustu.pre/utila/-/utila-0.4.0/8a16a05d445657a3aea5eecc5b12a4fa5379772c.tgz",
- "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
- "dev": true
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/utils-merge/-/utils-merge-1.0.1/9f95710f50a267947b2ccc124741c1028427e713.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "dev": true
- },
- "uuid": {
- "version": "3.1.0",
- "resolved": "http://npm.trustu.pre/uuid/-/uuid-3.1.0/3dd3d3e790abc24d7b0d3a034ffababe28ebbc04.tgz",
- "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
- "dev": true
- },
- "v8flags": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/v8flags/-/v8flags-3.0.1/dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b.tgz",
- "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=",
+ "node_modules/widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
"dev": true,
- "requires": {
- "homedir-polyfill": "1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "validate-npm-package-license": {
- "version": "3.0.1",
- "resolved": "http://npm.trustu.pre/validate-npm-package-license/-/validate-npm-package-license-3.0.1/2804babe712ad3379459acfbe24746ab2c303fbc.tgz",
- "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "node_modules/widest-line/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
- "requires": {
- "spdx-correct": "1.0.2",
- "spdx-expression-parse": "1.0.4"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "vary": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/vary/-/vary-1.1.2/2299f02c6ded30d4a5961b0b9f74524a18f634fc.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "dev": true
- },
- "vendors": {
- "version": "1.0.1",
- "resolved": "http://npm.trustu.pre/vendors/-/vendors-1.0.1/37ad73c8ee417fb3d580e785312307d274847f22.tgz",
- "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
- "dev": true
+ "node_modules/widest-line/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
},
- "verror": {
- "version": "1.10.0",
- "resolved": "http://npm.trustu.pre/verror/-/verror-1.10.0/3a105ca17053af55d6e270c1f8288682e18da400.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "node_modules/widest-line/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
+ "license": "MIT",
"dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/assert-plus/-/assert-plus-1.0.0/f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "vinyl": {
- "version": "0.5.3",
- "resolved": "http://npm.trustu.pre/vinyl/-/vinyl-0.5.3/b0455b38fc5e0cf30d4325132e461970c2091cde.tgz",
- "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "node_modules/widest-line/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
- "requires": {
- "clone": "1.0.3",
- "clone-stats": "0.0.1",
- "replace-ext": "0.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "vlq": {
- "version": "0.2.3",
- "resolved": "http://npm.trustu.pre/vlq/-/vlq-0.2.3/8f3e4328cf63b1540c0d67e1b2778386f8975b26.tgz",
- "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
- "dev": true
- },
- "vm-browserify": {
- "version": "0.0.4",
- "resolved": "http://npm.trustu.pre/vm-browserify/-/vm-browserify-0.0.4/5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73.tgz",
- "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "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": {
- "indexof": "0.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "void-elements": {
- "version": "2.0.1",
- "resolved": "http://npm.trustu.pre/void-elements/-/void-elements-2.0.1/c066afb582bb1cb4128d60ea92392e94d5e9dbec.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
- "dev": true
- },
- "watchpack": {
- "version": "1.4.0",
- "resolved": "http://npm.trustu.pre/watchpack/-/watchpack-1.4.0/4a1472bcbb952bd0a9bb4036801f954dfb39faac.tgz",
- "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",
+ "node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
- "requires": {
- "async": "2.6.0",
- "chokidar": "1.7.0",
- "graceful-fs": "4.1.11"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "wbuf": {
- "version": "1.7.2",
- "resolved": "http://npm.trustu.pre/wbuf/-/wbuf-1.7.2/d697b99f1f59512df2751be42769c1580b5801fe.tgz",
- "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
+ "node_modules/wrap-ansi-cjs": {
+ "name": "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": {
- "minimalistic-assert": "1.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "weak-map": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/weak-map/-/weak-map-1.0.0/b66e56a9df0bd25a76bbf1b514db129080614a37.tgz",
- "integrity": "sha1-tm5Wqd8L0lp2u/G1FNsSkIBhSjc=",
- "dev": true
- },
- "webdriver-js-extender": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/webdriver-js-extender/-/webdriver-js-extender-1.0.0/81c533a9e33d5bfb597b4e63e2cdb25b54777515.tgz",
- "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=",
+ "node_modules/wrap-ansi-cjs/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==",
"dev": true,
- "requires": {
- "@types/selenium-webdriver": "2.53.43",
- "selenium-webdriver": "2.53.3"
- },
+ "license": "MIT",
"dependencies": {
- "sax": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/sax/-/sax-0.6.1/563b19c7c1de892e09bfc4f2fc30e3c27f0952b9.tgz",
- "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=",
- "dev": true
- },
- "selenium-webdriver": {
- "version": "2.53.3",
- "resolved": "http://npm.trustu.pre/selenium-webdriver/-/selenium-webdriver-2.53.3/d29ff5a957dff1a1b49dc457756e4e4bfbdce085.tgz",
- "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=",
- "dev": true,
- "requires": {
- "adm-zip": "0.4.4",
- "rimraf": "2.6.2",
- "tmp": "0.0.24",
- "ws": "1.1.2",
- "xml2js": "0.4.4"
- }
- },
- "tmp": {
- "version": "0.0.24",
- "resolved": "http://npm.trustu.pre/tmp/-/tmp-0.0.24/d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12.tgz",
- "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=",
- "dev": true
- },
- "xml2js": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/xml2js/-/xml2js-0.4.4/3111010003008ae19240eba17497b57c729c555d.tgz",
- "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=",
- "dev": true,
- "requires": {
- "sax": "0.6.1",
- "xmlbuilder": "9.0.4"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "webpack": {
- "version": "3.10.0",
- "resolved": "http://npm.trustu.pre/webpack/-/webpack-3.10.0/5291b875078cf2abf42bdd23afe3f8f96c17d725.tgz",
- "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
- "dev": true,
- "requires": {
- "acorn": "5.2.1",
- "acorn-dynamic-import": "2.0.2",
- "ajv": "5.5.1",
- "ajv-keywords": "2.1.1",
- "async": "2.6.0",
- "enhanced-resolve": "3.4.1",
- "escope": "3.6.0",
- "interpret": "1.1.0",
- "json-loader": "0.5.7",
- "json5": "0.5.1",
- "loader-runner": "2.3.0",
- "loader-utils": "1.1.0",
- "memory-fs": "0.4.1",
- "mkdirp": "0.5.1",
- "node-libs-browser": "2.1.0",
- "source-map": "0.5.7",
- "supports-color": "4.5.0",
- "tapable": "0.2.8",
- "uglifyjs-webpack-plugin": "0.4.6",
- "watchpack": "1.4.0",
- "webpack-sources": "1.1.0",
- "yargs": "8.0.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/ansi-regex/-/ansi-regex-3.0.0/ed0317c322064f79466c02966bddb605ab37d998.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "camelcase": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-1.2.1/9bb5304d2e0b56698b2c758b08a3eaa9daa58a39.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/cliui/-/cliui-2.1.0/4b475760ff80264c762c3a1719032e91c7fea0d1.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
- "wordwrap": "0.0.2"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/find-up/-/find-up-2.1.0/45d1b7e506c717ddd482775a2b77920a3c0c57a7.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/load-json-file/-/load-json-file-2.0.0/7947e42149af80d696cbf797bcaabcfe1fe29ca8.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "strip-bom": "3.0.0"
- }
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/os-locale/-/os-locale-2.1.0/42bc2900a6b5b8bd17376c8e882b65afccf24bf2.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/path-type/-/path-type-2.0.0/f012ccb8415b7096fc2daa1054c3d72389594c73.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "2.3.0"
- }
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/read-pkg/-/read-pkg-2.0.0/8ef1c0623c6a6db0dc6713c4bfac46332b2368f8.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "2.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/read-pkg-up/-/read-pkg-up-2.0.0/6b72a8048984e0c41e79510fd5e9fa99b3b549be.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "2.1.0",
- "read-pkg": "2.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "http://npm.trustu.pre/string-width/-/string-width-2.1.1/ab93f27a8dc13d28cac815c462143a6d9012ae9e.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0/a3b30a5c4f199183167aaab93beefae3ddfb654f.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "http://npm.trustu.pre/strip-ansi/-/strip-ansi-4.0.0/a8479022eb1ac368a871389b635262c505ee368f.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/strip-bom/-/strip-bom-3.0.0/2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "http://npm.trustu.pre/uglify-js/-/uglify-js-2.8.29/29c5733148057bb4e1f75df35b7a9cb72e6a59dd.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
- },
- "dependencies": {
- "yargs": {
- "version": "3.10.0",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-3.10.0/f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
- "window-size": "0.1.0"
- }
- }
- }
- },
- "uglifyjs-webpack-plugin": {
- "version": "0.4.6",
- "resolved": "http://npm.trustu.pre/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6/b951f4abb6bd617e66f63eb891498e391763e309.tgz",
- "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
- "dev": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-js": "2.8.29",
- "webpack-sources": "1.1.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/which-module/-/which-module-2.0.0/d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "yargs": {
- "version": "8.0.2",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-8.0.2/6299a9055b1cefc969ff7e79c1d918dceb22c360.tgz",
- "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "read-pkg-up": "2.0.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "7.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-4.1.0/d545635be1e33c542649c69173e5de6acfae34dd.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "http://npm.trustu.pre/cliui/-/cliui-3.2.0/120601537a916d29940f934da3b48d585a39213d.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/string-width/-/string-width-1.0.2/118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- }
- }
- }
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "http://npm.trustu.pre/yargs-parser/-/yargs-parser-7.0.0/8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-4.1.0/d545635be1e33c542649c69173e5de6acfae34dd.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- }
- }
- }
+ "node_modules/wrap-ansi-cjs/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,
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "webpack-concat-plugin": {
- "version": "1.4.2",
- "resolved": "http://npm.trustu.pre/webpack-concat-plugin/-/webpack-concat-plugin-1.4.2/b60bbb626ce5001911809d6e2329fa32f4978a88.tgz",
- "integrity": "sha512-HdV2xOq4twtL2ThR9NSCCQ888v1JBMpJfm3k2mA1I5LkS2+/6rv8q/bb9yTSaR0fVaMtANZi4Wkz0xc33MAt6w==",
+ "node_modules/wrap-ansi-cjs/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==",
"dev": true,
- "requires": {
- "md5": "2.2.1",
- "uglify-js": "2.8.29"
- },
+ "license": "MIT",
"dependencies": {
- "camelcase": {
- "version": "1.2.1",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-1.2.1/9bb5304d2e0b56698b2c758b08a3eaa9daa58a39.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/cliui/-/cliui-2.1.0/4b475760ff80264c762c3a1719032e91c7fea0d1.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
- "wordwrap": "0.0.2"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "http://npm.trustu.pre/uglify-js/-/uglify-js-2.8.29/29c5733148057bb4e1f75df35b7a9cb72e6a59dd.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
- }
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-3.10.0/f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
- "window-size": "0.1.0"
- }
- }
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "webpack-core": {
- "version": "0.6.9",
- "resolved": "http://npm.trustu.pre/webpack-core/-/webpack-core-0.6.9/fc571588c8558da77be9efb6debdc5a3b172bdc2.tgz",
- "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
+ "node_modules/wrap-ansi/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==",
"dev": true,
- "requires": {
- "source-list-map": "0.1.8",
- "source-map": "0.4.4"
- },
+ "license": "MIT",
"dependencies": {
- "source-list-map": {
- "version": "0.1.8",
- "resolved": "http://npm.trustu.pre/source-list-map/-/source-list-map-0.1.8/c550b2ab5427f6b3f21f5afead88c4f5587b2106.tgz",
- "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
- "dev": true
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.4.4/eba4f5da9c0dc999de68032d8b4f76173652036b.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- }
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "webpack-dev-middleware": {
- "version": "1.12.2",
- "resolved": "http://npm.trustu.pre/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2/f8fc1120ce3b4fc5680ceecb43d777966b21105e.tgz",
- "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
- "dev": true,
- "requires": {
- "memory-fs": "0.4.1",
- "mime": "1.6.0",
- "path-is-absolute": "1.0.1",
- "range-parser": "1.2.0",
- "time-stamp": "2.0.0"
- }
- },
- "webpack-dev-server": {
- "version": "2.9.7",
- "resolved": "http://npm.trustu.pre/webpack-dev-server/-/webpack-dev-server-2.9.7/100ad6a14775478924d417ca6dcfb9d52a98faed.tgz",
- "integrity": "sha512-Pu7uoQFgQj5RE5wmlfkpYSzihMKxulwEuO2xCsaMnAnyRSApwoVi3B8WCm9XbigyWTHaIMzYGkB90Vr6leAeTQ==",
- "dev": true,
- "requires": {
- "ansi-html": "0.0.7",
- "array-includes": "3.0.3",
- "bonjour": "3.5.0",
- "chokidar": "1.7.0",
- "compression": "1.7.1",
- "connect-history-api-fallback": "1.5.0",
- "debug": "3.1.0",
- "del": "3.0.0",
- "express": "4.16.2",
- "html-entities": "1.2.1",
- "http-proxy-middleware": "0.17.4",
- "import-local": "0.1.1",
- "internal-ip": "1.2.0",
- "ip": "1.1.5",
- "killable": "1.0.0",
- "loglevel": "1.6.0",
- "opn": "5.1.0",
- "portfinder": "1.0.13",
- "selfsigned": "1.10.1",
- "serve-index": "1.9.1",
- "sockjs": "0.3.18",
- "sockjs-client": "1.1.4",
- "spdy": "3.4.7",
- "strip-ansi": "3.0.1",
- "supports-color": "4.5.0",
- "webpack-dev-middleware": "1.12.2",
- "yargs": "6.6.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-3.0.0/32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "http://npm.trustu.pre/debug/-/debug-3.1.0/5bb5a0672628b64149566ba16819e61518c67261.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "yargs": {
- "version": "6.6.0",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-6.6.0/782ec21ef403345f830a808ca3d513af56065208.tgz",
- "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
- "dev": true,
- "requires": {
- "camelcase": "3.0.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "1.4.0",
- "read-pkg-up": "1.0.1",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "1.0.2",
- "which-module": "1.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "4.2.1"
- }
- },
- "yargs-parser": {
- "version": "4.2.1",
- "resolved": "http://npm.trustu.pre/yargs-parser/-/yargs-parser-4.2.1/29cceac0dc4f03c6c87b4a9f217dd18c9f74871c.tgz",
- "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
- "dev": true,
- "requires": {
- "camelcase": "3.0.0"
- }
- }
- }
+ "node_modules/wrap-ansi/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,
+ "license": "MIT"
},
- "webpack-merge": {
- "version": "4.1.1",
- "resolved": "http://npm.trustu.pre/webpack-merge/-/webpack-merge-4.1.1/f1197a0a973e69c6fbeeb6d658219aa8c0c13555.tgz",
- "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==",
+ "node_modules/wrap-ansi/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,
- "requires": {
- "lodash": "4.17.4"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "webpack-sources": {
- "version": "1.1.0",
- "resolved": "http://npm.trustu.pre/webpack-sources/-/webpack-sources-1.1.0/a101ebae59d6507354d71d8013950a3a8b7a5a54.tgz",
- "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
+ "node_modules/wrap-ansi/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==",
"dev": true,
- "requires": {
- "source-list-map": "2.0.0",
- "source-map": "0.6.1"
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "http://npm.trustu.pre/source-map/-/source-map-0.6.1/74722af32e9614e9c287a8d0bbde48b5e2f1a263.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "webpack-subresource-integrity": {
- "version": "1.0.3",
- "resolved": "http://npm.trustu.pre/webpack-subresource-integrity/-/webpack-subresource-integrity-1.0.3/c0606d40090b070cde428bec8df3603216e472eb.tgz",
- "integrity": "sha1-wGBtQAkLBwzeQovsjfNgMhbkcus=",
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
- "requires": {
- "webpack-core": "0.6.9"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "websocket-driver": {
- "version": "0.7.0",
- "resolved": "http://npm.trustu.pre/websocket-driver/-/websocket-driver-0.7.0/0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb.tgz",
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "node_modules/xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
"dev": true,
- "requires": {
- "http-parser-js": "0.4.9",
- "websocket-extensions": "0.1.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "websocket-extensions": {
- "version": "0.1.3",
- "resolved": "http://npm.trustu.pre/websocket-extensions/-/websocket-extensions-0.1.3/5d2ff22977003ec687a4b87073dfbbac146ccf29.tgz",
- "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
- "dev": true
+ "node_modules/xhr2": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz",
+ "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
},
- "when": {
- "version": "3.6.4",
- "resolved": "http://npm.trustu.pre/when/-/when-3.6.4/473b517ec159e2b85005497a13983f095412e34e.tgz",
- "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
- "dev": true
+ "node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
},
- "whet.extend": {
- "version": "0.9.9",
- "resolved": "http://npm.trustu.pre/whet.extend/-/whet.extend-0.9.9/f877d5bf648c97e5aa542fadc16d6a259b9c11a1.tgz",
- "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
- "dev": true
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "license": "MIT"
},
- "which": {
+ "node_modules/xmldoc": {
"version": "1.3.0",
- "resolved": "http://npm.trustu.pre/which/-/which-1.3.0/ff04bdfc010ee547d780bec38e1ac1c2777d253a.tgz",
- "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz",
+ "integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==",
"dev": true,
- "requires": {
- "isexe": "2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "sax": "^1.2.4"
}
},
- "which-module": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/which-module/-/which-module-1.0.0/bba63ca861948994ff307736089e3b96026c2a4f.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true
- },
- "wide-align": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/wide-align/-/wide-align-1.1.2/571e0f1b0604636ebc0dfc21b0339bbe31341710.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true,
- "requires": {
- "string-width": "1.0.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
}
},
- "window-size": {
- "version": "0.1.0",
- "resolved": "http://npm.trustu.pre/window-size/-/window-size-0.1.0/5438cd2ea93b202efa3a19fe8887aee7c94f9c9d.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
},
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "http://npm.trustu.pre/wordwrap/-/wordwrap-0.0.2/b79669bb42ecb409f83d583cad52ca17eaa1643f.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
- "dev": true
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ }
},
- "worker-farm": {
- "version": "1.5.2",
- "resolved": "http://npm.trustu.pre/worker-farm/-/worker-farm-1.5.2/32b312e5dc3d5d45d79ef44acc2587491cd729ae.tgz",
- "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==",
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
- "requires": {
- "errno": "0.1.4",
- "xtend": "4.0.1"
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "http://npm.trustu.pre/wrap-ansi/-/wrap-ansi-2.1.0/d8fc3d284dd05794fe84973caecdd1cf824fdd85.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "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,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
}
},
- "wrappy": {
- "version": "1.0.2",
- "resolved": "http://npm.trustu.pre/wrappy/-/wrappy-1.0.2/b5243d8f3ec1aa35f1364605bc0d1036e30ab69f.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "node_modules/yargs/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,
+ "license": "MIT"
},
- "ws": {
- "version": "1.1.2",
- "resolved": "http://npm.trustu.pre/ws/-/ws-1.1.2/8a244fa052401e08c9886cf44a85189e1fd4067f.tgz",
- "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+ "node_modules/yargs/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,
- "requires": {
- "options": "0.0.6",
- "ultron": "1.0.2"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "wtf-8": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/wtf-8/-/wtf-8-1.0.0/392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a.tgz",
- "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
- "dev": true
- },
- "xhr2": {
- "version": "0.1.4",
- "resolved": "http://npm.trustu.pre/xhr2/-/xhr2-0.1.4/7f87658847716db5026323812f818cadab387a5f.tgz",
- "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=",
- "dev": true
- },
- "xml-char-classes": {
- "version": "1.0.0",
- "resolved": "http://npm.trustu.pre/xml-char-classes/-/xml-char-classes-1.0.0/64657848a20ffc5df583a42ad8a277b4512bbc4d.tgz",
- "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=",
- "dev": true
- },
- "xml2js": {
- "version": "0.4.19",
- "resolved": "http://npm.trustu.pre/xml2js/-/xml2js-0.4.19/686c20f213209e94abf0d1bcf1efaa291c7827a7.tgz",
- "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "node_modules/yargs/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==",
"dev": true,
- "requires": {
- "sax": "1.2.4",
- "xmlbuilder": "9.0.4"
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "xmlbuilder": {
- "version": "9.0.4",
- "resolved": "http://npm.trustu.pre/xmlbuilder/-/xmlbuilder-9.0.4/519cb4ca686d005a8420d3496f3f0caeecca580f.tgz",
- "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=",
- "dev": true
- },
- "xmlhttprequest-ssl": {
- "version": "1.5.3",
- "resolved": "http://npm.trustu.pre/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3/185a888c04eca46c3e4070d99f7b49de3528992d.tgz",
- "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "http://npm.trustu.pre/xtend/-/xtend-4.0.1/a5c6d532be656e23db820efb943a1f04998d63af.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- },
- "xxhashjs": {
- "version": "0.2.1",
- "resolved": "http://npm.trustu.pre/xxhashjs/-/xxhashjs-0.2.1/9bbe9be896142976dfa34c061b2d068c43d30de0.tgz",
- "integrity": "sha1-m76b6JYUKXbfo0wGGy0GjEPTDeA=",
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
- "requires": {
- "cuint": "0.2.2"
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
}
},
- "y18n": {
- "version": "3.2.1",
- "resolved": "http://npm.trustu.pre/y18n/-/y18n-3.2.1/6d15fba884c08679c0d77e88e7759e811e07fa41.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "http://npm.trustu.pre/yallist/-/yallist-2.1.2/1c11f9218f076089a47dd512f93c6699a6a81d52.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs": {
- "version": "7.1.0",
- "resolved": "http://npm.trustu.pre/yargs/-/yargs-7.1.0/6ba318eb16961727f5d284f8ea003e8d6154d0c8.tgz",
- "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "node_modules/yocto-queue": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
"dev": true,
- "optional": true,
- "requires": {
- "camelcase": "3.0.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "1.4.0",
- "read-pkg-up": "1.0.1",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "1.0.2",
- "which-module": "1.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "5.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-3.0.0/32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "optional": true
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "yargs-parser": {
- "version": "5.0.0",
- "resolved": "http://npm.trustu.pre/yargs-parser/-/yargs-parser-5.0.0/275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a.tgz",
- "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "node_modules/yoctocolors-cjs": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
+ "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
"dev": true,
- "optional": true,
- "requires": {
- "camelcase": "3.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
},
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "http://npm.trustu.pre/camelcase/-/camelcase-3.0.0/32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "yeast": {
- "version": "0.1.2",
- "resolved": "http://npm.trustu.pre/yeast/-/yeast-0.1.2/008e06d8094320c372dbc2f8ed76a0ca6c8ac419.tgz",
- "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
- "dev": true
- },
- "yn": {
- "version": "2.0.0",
- "resolved": "http://npm.trustu.pre/yn/-/yn-2.0.0/e5adabc8acf408f6385fc76495684c88e6af689a.tgz",
- "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
- "dev": true
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
},
- "zone.js": {
- "version": "0.8.18",
- "resolved": "http://npm.trustu.pre/zone.js/-/zone.js-0.8.18/8cecb3977fcd1b3090562ff4570e2847e752b48d.tgz",
- "integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q=="
+ "node_modules/zod-to-json-schema": {
+ "version": "3.24.6",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz",
+ "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==",
+ "dev": true,
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.24.1"
+ }
}
}
}
diff --git a/package.json b/package.json
old mode 100644
new mode 100755
index 85c7111b..8fad5817
--- a/package.json
+++ b/package.json
@@ -1,72 +1,91 @@
{
- "name": "angular-example-app",
- "version": "5.1.0",
- "license": "MIT",
+ "name": "angularexampleapp",
+ "version": "19.1.0",
"scripts": {
- "start": "ng serve",
- "build": "ng build --prod",
- "deploy": "ng build --prod --base-href / && angular-cli-ghpages",
- "test": "ng test --watch=false --code-coverage",
- "e2e": "ng e2e --prod",
- "e2e:home": "ng e2e --serve false --prod --specs=./e2e/home/**/*.e2e-spec.ts",
- "e2e:heroeslist": "ng e2e --serve false --prod --specs=./e2e/heroes-list/**/*.e2e-spec.ts",
- "lint": "ng lint",
- "ci": "npm run lint && npm run test && npm run e2e",
- "sme": "ng build && source-map-explorer dist/main.bundle.js",
- "release": "standard-version && git push --follow-tags origin master",
- "docker": "docker build -t angularexampleapp . && docker run -d -p 4200:80 angularexampleapp"
- },
- "private": true,
- "engines": {
- "node": ">= 6.9.0",
- "npm": ">= 3.0.0"
+ "prepare": "npx husky",
+ "start": "ng serve --configuration=development-en --open",
+ "start:es": "ng serve --configuration=development-es --open",
+ "extract": "ng extract-i18n --format=xlf --output-path=src/locale",
+ "format:check": "prettier --check \"**/*.{ts,js,json,html,css,scss,md,mdx}\"",
+ "format:fix": "prettier --write \"**/*.{ts,js,json,html,css,scss,md,mdx}\"",
+ "lint": "ng lint && npm run stylelint",
+ "stylelint": "npx stylelint \"**/*.{css,scss}\"",
+ "test": "ng test --no-code-coverage --no-watch",
+ "test:watch": "ng test --no-code-coverage",
+ "e2e:local": "BASE_URL=http://localhost:4200 npx playwright test --project=chromium",
+ "e2e:pro": "npx playwright test --project=chromium",
+ "playwright:install": "npx playwright install && npx playwright install-deps",
+ "build": "ng build",
+ "build:stats": "ng build --configuration=production-sourcemaps --stats-json",
+ "lighthouse": "node scripts/lighthouse.mjs",
+ "verify": "npm run extract && npm run lint && npm run test && npm run build:stats && npm run lighthouse"
},
"dependencies": {
- "@angular/animations": "5.1.0",
- "@angular/common": "5.1.0",
- "@angular/compiler": "5.1.0",
- "@angular/core": "5.1.0",
- "@angular/flex-layout": "2.0.0-beta.10-4905443",
- "@angular/forms": "5.1.0",
- "@angular/http": "5.1.0",
- "@angular/platform-browser": "5.1.0",
- "@angular/platform-browser-dynamic": "5.1.0",
- "@angular/router": "5.1.0",
- "classlist.js": "1.1.20150312",
- "core-js": "2.5.1",
- "rxjs": "5.5.5",
- "zone.js": "0.8.18"
+ "@angular/animations": "20.3.7",
+ "@angular/common": "20.3.7",
+ "@angular/compiler": "20.3.7",
+ "@angular/core": "20.3.7",
+ "@angular/forms": "20.3.7",
+ "@angular/localize": "20.3.7",
+ "@angular/platform-browser": "20.3.7",
+ "@angular/platform-browser-dynamic": "20.3.7",
+ "@angular/platform-server": "20.3.7",
+ "@angular/router": "20.3.7",
+ "@angular/ssr": "20.3.7",
+ "ngx-progressbar": "14.0.0",
+ "rxjs": "7.8.2",
+ "tslib": "2.8.1"
},
"devDependencies": {
- "@angular/cdk": "5.0.0",
- "@angular/cli": "1.6.0",
- "@angular/compiler-cli": "5.1.0",
- "@angular/material": "5.0.0",
- "@angular/platform-server": "5.1.0",
- "@ngx-translate/core": "9.0.1",
- "@ngx-translate/http-loader": "2.0.0",
- "@types/jasmine": "2.8.2",
- "@types/jasminewd2": "2.0.3",
- "@types/node": "8.0.56",
- "angular-cli-ghpages": "0.5.2",
- "codelyzer": "4.0.1",
- "coveralls": "3.0.0",
- "hammerjs": "2.0.8",
- "jasmine-core": "2.8.0",
- "jasmine-spec-reporter": "4.2.1",
- "karma": "1.7.1",
- "karma-chrome-launcher": "2.2.0",
- "karma-cli": "1.0.1",
- "karma-coverage-istanbul-reporter": "1.3.0",
- "karma-jasmine": "1.1.1",
- "karma-jasmine-html-reporter": "0.2.2",
- "karma-remap-istanbul": "0.6.0",
- "protractor": "5.2.1",
- "source-map-explorer": "1.5.0",
- "standard-version": "4.2.0",
- "ts-helpers": "1.1.2",
- "ts-node": "3.3.0",
- "tslint": "5.8.0",
- "typescript": "2.4.2"
- }
+ "@angular-eslint/builder": "20.5.0",
+ "@angular-eslint/eslint-plugin": "20.5.0",
+ "@angular-eslint/eslint-plugin-template": "20.5.0",
+ "@angular-eslint/schematics": "20.5.0",
+ "@angular-eslint/template-parser": "20.5.0",
+ "@angular/build": "20.3.7",
+ "@angular/cli": "20.3.7",
+ "@angular/compiler-cli": "20.3.7",
+ "@commitlint/cli": "20.1.0",
+ "@commitlint/config-conventional": "20.0.0",
+ "@eslint/js": "9.38.0",
+ "@ngrx/component": "20.1.0",
+ "@playwright/test": "1.56.1",
+ "@shoelace-style/shoelace": "2.20.1",
+ "@types/express": "4.17.17",
+ "@types/node": "24.9.2",
+ "@types/validator": "13.15.4",
+ "@typescript-eslint/eslint-plugin": "8.46.2",
+ "@typescript-eslint/parser": "8.46.2",
+ "@typescript-eslint/types": "8.46.2",
+ "@typescript-eslint/utils": "8.46.2",
+ "@vitest/coverage-v8": "4.0.4",
+ "angular-eslint": "20.5.0",
+ "axe-core": "4.11.0",
+ "chrome-launcher": "1.2.1",
+ "eslint": "9.38.0",
+ "eslint-config-prettier": "10.1.8",
+ "eslint-plugin-eslint-comments": "3.2.0",
+ "eslint-plugin-prettier": "5.5.4",
+ "eslint-plugin-promise": "7.2.1",
+ "eslint-plugin-unicorn": "62.0.0",
+ "husky": "9.1.7",
+ "jsdom": "27.0.1",
+ "lighthouse": "12.8.2",
+ "lint-staged": "16.2.6",
+ "ng-extract-i18n-merge": "3.1.0",
+ "playwright": "1.56.1",
+ "postcss-scss": "4.0.9",
+ "prettier": "3.6.2",
+ "prettier-eslint": "16.4.2",
+ "serve": "14.2.5",
+ "stylelint": "16.25.0",
+ "stylelint-config-recess-order": "7.4.0",
+ "stylelint-config-standard-scss": "16.0.0",
+ "stylelint-order": "7.0.0",
+ "ts-loader": "9.5.4",
+ "typescript": "5.9.3",
+ "typescript-eslint": "8.46.2",
+ "vitest": "4.0.4"
+ },
+ "private": true
}
diff --git a/playwright.config.ts b/playwright.config.ts
new file mode 100644
index 00000000..dcf2c4d2
--- /dev/null
+++ b/playwright.config.ts
@@ -0,0 +1,24 @@
+import { defineConfig, devices } from '@playwright/test';
+
+export default defineConfig({
+ testDir: './e2e/tests',
+ timeout: 30_000,
+ expect: {
+ timeout: 5_000,
+ },
+ fullyParallel: true,
+ reporter: [['list'], ['html', { open: 'never' }]],
+ use: {
+ baseURL: process.env['BASE_URL'] || 'https://angular-example-app.netlify.app/',
+ headless: true,
+ screenshot: 'only-on-failure',
+ video: 'retain-on-failure',
+ trace: 'on-first-retry',
+ },
+ projects: [
+ {
+ name: 'chromium',
+ use: { ...devices['Desktop Chrome'] },
+ },
+ ],
+});
diff --git a/protractor.conf.js b/protractor.conf.js
deleted file mode 100644
index ef1510e4..00000000
--- a/protractor.conf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const {SpecReporter} = require('jasmine-spec-reporter');
-
-exports.config = {
- allScriptsTimeout: 11000,
- specs: [
- './e2e/**/*.e2e-spec.ts'
- ],
- capabilities: {
- 'browserName': 'chrome'
- },
- directConnect: true,
- baseUrl: 'http://localhost:4200/',
- framework: 'jasmine',
- jasmineNodeOpts: {
- showColors: true,
- defaultTimeoutInterval: 30000,
- print: function () {
- }
- },
- beforeLaunch: function () {
- require('ts-node').register({
- project: 'e2e/tsconfig.e2e.json'
- });
- },
- onPrepare() {
- jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
- }
-};
diff --git a/public/_redirects b/public/_redirects
new file mode 100755
index 00000000..7f4ecb23
--- /dev/null
+++ b/public/_redirects
@@ -0,0 +1,3 @@
+/es /es/index.html 200
+/es/* /es 200
+/* /index.html 200
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100755
index 00000000..eb053628
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/scripts/lighthouse.mjs b/scripts/lighthouse.mjs
new file mode 100644
index 00000000..0f5f0ca2
--- /dev/null
+++ b/scripts/lighthouse.mjs
@@ -0,0 +1,69 @@
+import lighthouse from 'lighthouse';
+import * as chromeLauncher from 'chrome-launcher';
+import { spawn } from 'child_process';
+import fs from 'fs';
+import path from 'node:path';
+
+const CONFIG_PATH = path.resolve('lighthouse.config.json');
+if (!fs.existsSync(CONFIG_PATH)) {
+ console.error('❌ No se encontró el archivo lighthouse.config.json');
+ process.exit(1);
+}
+
+const config = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
+const { distPath, reportPath, port, thresholds } = config;
+
+const URL = `http://localhost:${port}`;
+
+(async () => {
+ console.log(`🚀 Sirviendo build desde ${distPath}...`);
+ const server = spawn('npx', ['serve', distPath, '-l', port], { stdio: 'inherit' });
+
+ // wait for server to be ready
+ await new Promise((res) => setTimeout(res, 3000));
+
+ const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
+
+ const options = {
+ port: chrome.port,
+ output: 'html',
+ logLevel: 'info',
+ onlyCategories: Object.keys(thresholds),
+ };
+
+ const runnerResult = await lighthouse(URL, options);
+
+ if (!runnerResult || !runnerResult.lhr) {
+ console.error('❌ No se pudo ejecutar Lighthouse correctamente.');
+ await chrome.kill();
+ server.kill();
+ process.exit(1);
+ }
+
+ fs.writeFileSync(reportPath, runnerResult.report);
+ console.log(`\n✅ Informe guardado en ${reportPath}`);
+
+ const categories = runnerResult.lhr.categories;
+ console.log('📊 Resultados:');
+ for (const key of Object.keys(categories)) {
+ const category = categories[key];
+ const score = (category.score ?? 0) * 100;
+ console.log(` ${category.title}: ${score.toFixed(0)} / 100`);
+ }
+
+ const failed = Object.entries(thresholds)
+ .filter(([key, min]) => (categories[key]?.score ?? 0) * 100 < min)
+ .map(([key]) => `${categories[key]?.title ?? key} (<${(thresholds[key] * 100).toFixed(0)}%)`);
+
+ await chrome.kill();
+ server.kill();
+
+ if (failed.length > 0) {
+ console.error(
+ `\n❌ Las siguientes categorías no alcanzaron su umbral:\n ${failed.join('\n ')}`,
+ );
+ process.exit(1);
+ }
+
+ console.log('\n🎉 Todas las categorías superaron los umbrales configurados ✅');
+})();
diff --git a/src/CNAME b/src/CNAME
deleted file mode 100644
index d48e7e06..00000000
--- a/src/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-angularexampleapp.com
\ No newline at end of file
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
deleted file mode 100644
index 744e5799..00000000
--- a/src/app/app-routing.module.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {NgModule} from '@angular/core';
-import {RouterModule, Routes} from '@angular/router';
-
-import {HeroTopComponent} from './heroes/hero-top/hero-top.component';
-import {AppConfig} from './config/app.config';
-import {Error404Component} from './core/error404/error-404.component';
-
-const routes: Routes = [
- {path: '', redirectTo: '/', pathMatch: 'full'},
- {path: '', component: HeroTopComponent},
- {path: AppConfig.routes.heroes, loadChildren: 'app/heroes/heroes.module#HeroesModule'},
- {path: AppConfig.routes.error404, component: Error404Component},
-
- // otherwise redirect to 404
- {path: '**', redirectTo: '/' + AppConfig.routes.error404}
-];
-
-@NgModule({
- imports: [
- RouterModule.forRoot(routes)
- ],
- exports: [
- RouterModule
- ]
-})
-
-export class AppRoutingModule {
-}
diff --git a/src/app/app.component.html b/src/app/app.component.html
old mode 100644
new mode 100755
index d7d573d0..129149d6
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,5 +1,13 @@
-
-
-
+
+
+
+ Skip to main content
+
+
-
\ No newline at end of file
diff --git a/src/app/app.component.scss b/src/app/app.component.scss
new file mode 100755
index 00000000..f48e07c9
--- /dev/null
+++ b/src/app/app.component.scss
@@ -0,0 +1,41 @@
+@use 'base/media-queries' as mq;
+
+$page-max-width: 2560px;
+
+:host {
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+ min-height: 100vh;
+ margin-inline: auto;
+
+ .app__main-container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ min-height: 100vh;
+
+ .app__page-container {
+ display: grid;
+ }
+ }
+
+ .app__content-skip-button {
+ position: absolute;
+ top: var(--spacing-r-md);
+ left: var(--spacing-r-md);
+ z-index: var(--z-index-skip-button);
+ padding: var(--spacing-r-md);
+ font-size: var(--font-size-xs);
+ color: var(--page-background);
+ background: var(--primary-contrast);
+ border: 1px solid var(--brand-color-tertiary);
+ border-radius: var(--border-radius-sm);
+ transform: translateY(-150%);
+ transition: transform 0.3s ease-out;
+
+ &:focus {
+ transform: translateY(0);
+ }
+ }
+}
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
old mode 100755
new mode 100644
index 161138de..38b5f4f5
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -1,54 +1,70 @@
-import {async, TestBed} from '@angular/core/testing';
-import {AppComponent} from './app.component';
-import {APP_BASE_HREF} from '@angular/common';
-import {TestsModule} from './shared/modules/tests.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {AppRoutingModule} from './app-routing.module';
-import {HeroTopComponent} from './heroes/hero-top/hero-top.component';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import {APP_CONFIG, AppConfig} from './config/app.config';
-import {HeroService} from './heroes/shared/hero.service';
-import {Error404Component} from './core/error404/error-404.component';
+import type { ComponentFixture } from '@angular/core/testing';
+import { TestBed } from '@angular/core/testing';
+import { AppComponent } from './app.component';
+import { ChangeDetectionStrategy, Component, provideZonelessChangeDetection } from '@angular/core';
+import { HeaderService } from '~core/services/ui/header.service';
+import { ENVIRONMENT } from '~core/tokens/environment.token';
+import { provideHttpClientTesting } from '@angular/common/http/testing';
+import { provideHttpClient } from '@angular/common/http';
+import { HeaderComponent } from '~shared/components/header/header.component';
+import type { Mock } from 'vitest';
+import { beforeEach, describe, expect, it, vi } from 'vitest';
+import axe from 'axe-core';
+
+@Component({
+ selector: 'app-header',
+ template: '',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+class HeaderStubComponent {}
describe('AppComponent', () => {
- let fixture;
- let component;
+ let component: AppComponent;
+ let fixture: ComponentFixture
;
+ let setCanonicalSpy: Mock<(absolutePath: string) => void>;
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- AppRoutingModule
- ],
- declarations: [
- AppComponent,
- HeroTopComponent,
- Error404Component
- ],
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [AppComponent],
providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'},
- HeroService
+ provideZonelessChangeDetection(),
+ provideHttpClient(),
+ provideHttpClientTesting(),
+ { provide: ENVIRONMENT, useValue: { domain: 'localhost' } },
+ HeaderService,
],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
+ })
+ .overrideComponent(AppComponent, {
+ remove: {
+ imports: [HeaderComponent],
+ },
+ add: {
+ imports: [HeaderStubComponent],
+ },
+ })
+ .compileComponents();
fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- }));
+ fixture.autoDetectChanges();
+ component = fixture.componentInstance;
- it('should create the app', (() => {
- expect(component).toBeTruthy();
- }));
+ const headerService = TestBed.inject(HeaderService);
+ setCanonicalSpy = vi.spyOn(headerService, 'setCanonical').mockReturnValue();
+ await fixture.whenStable();
+ });
- it('should change title meta tag in root path', async(() => {
- fixture.detectChanges();
- expect(component.title.getTitle()).toBe('Angular Example App');
- }));
+ it('should create', () => {
+ expect(component).toBeDefined();
+ expect(setCanonicalSpy).not.toHaveBeenCalled();
+ });
- it('should check browser features', (() => {
- expect(component.checkBrowserFeatures()).toBeTruthy();
- }));
+ it('should have no accessibility violations', async () => {
+ const results = await axe.run(document, {
+ rules: {
+ 'html-has-lang': { enabled: false },
+ 'region': { enabled: false },
+ },
+ });
+ expect(results.violations.length).toBe(0);
+ });
});
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 85172a72..51f0bb82 100755
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,70 +1,79 @@
-import {Component} from '@angular/core';
-import {TranslateService} from '@ngx-translate/core';
-import {Meta, Title} from '@angular/platform-browser';
-
-import {NavigationEnd, Router} from '@angular/router';
-import {AppConfig} from './config/app.config';
-import {MatSnackBar} from '@angular/material';
-
-declare const Modernizr;
+import { ChangeDetectionStrategy, Component, DOCUMENT, effect, inject } from '@angular/core';
+import { translations } from '../locale/translations';
+import { NavigationEnd, Router, RouterOutlet } from '@angular/router';
+import { Meta, Title } from '@angular/platform-browser';
+import { HeaderComponent } from '~shared/components/header/header.component';
+import { FooterComponent } from '~shared/components/footer/footer.component';
+import { filter, map } from 'rxjs';
+import { HeaderService } from '~core/services/ui/header.service';
+import { ProgressBarComponent } from '~shared/components/progress-bar/progress-bar.component';
+import { CookiePopupComponent } from '~shared/components/cookie-popup/cookie-popup.component';
+import { toSignal } from '@angular/core/rxjs-interop';
+import { ToastStackComponent } from '~shared/components/toast-stack/toast-stack.component';
@Component({
selector: 'app-root',
- templateUrl: './app.component.html'
+ imports: [
+ RouterOutlet,
+ HeaderComponent,
+ FooterComponent,
+ ProgressBarComponent,
+ CookiePopupComponent,
+ ToastStackComponent,
+ ],
+ templateUrl: './app.component.html',
+ styleUrl: './app.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
})
-
export class AppComponent {
+ private readonly document = inject(DOCUMENT);
+ private readonly router = inject(Router);
+ private readonly titleService = inject(Title);
+ private readonly headerService = inject(HeaderService);
+ private readonly metaService = inject(Meta);
- constructor(private translateService: TranslateService,
- private title: Title,
- private meta: Meta,
- private snackBar: MatSnackBar,
- private router: Router) {
+ readonly currentUrl = toSignal(
+ this.router.events.pipe(
+ filter((event): event is NavigationEnd => event instanceof NavigationEnd),
+ map((event) => event.urlAfterRedirects),
+ ),
+ { initialValue: this.router.url },
+ );
- this.translateService = translateService;
- this.translateService.setDefaultLang('en');
- this.translateService.use('en');
+ constructor() {
+ this._setMetaTags();
- this.title.setTitle('Angular Example App');
- this.router.events.subscribe((event: any) => {
- if (event instanceof NavigationEnd) {
- switch (event.urlAfterRedirects) {
- case '/':
- this.meta.updateTag({
- name: 'description',
- content: 'Angular Example app with Angular CLI, Angular Material and more'
- });
- break;
- case '/' + AppConfig.routes.heroes:
- this.title.setTitle('Heroes list');
- this.meta.updateTag({
- name: 'description',
- content: 'List of super-heroes'
- });
- break;
- }
- }
+ effect(() => {
+ const url = this.currentUrl();
+ this.headerService.setCanonical(url);
});
-
- this.checkBrowserFeatures();
}
- checkBrowserFeatures() {
- let supported = true;
- for (const feature in Modernizr) {
- if (Modernizr.hasOwnProperty(feature) &&
- typeof Modernizr[feature] === 'boolean' && Modernizr[feature] === false) {
- supported = false;
- break;
- }
- }
-
- if (!supported) {
- this.translateService.get(['updateBrowser']).subscribe((texts) => {
- this.snackBar.open(texts['updateBrowser'], 'OK');
- });
- }
+ private _setMetaTags(): void {
+ const { seoTitle, seoDescription } = translations;
+ this.titleService.setTitle(seoTitle);
+ this.metaService.addTags([
+ {
+ name: 'og:title',
+ content: seoTitle,
+ },
+ {
+ name: 'twitter:title',
+ content: seoTitle,
+ },
+ {
+ name: 'og:description',
+ content: seoDescription,
+ },
+ {
+ name: 'twitter:description',
+ content: seoDescription,
+ },
+ ]);
+ }
- return supported;
+ focusFirstHeading(): void {
+ const h1 = this.document.querySelector('h1');
+ h1?.focus();
}
}
diff --git a/src/app/app.config.server.ts b/src/app/app.config.server.ts
new file mode 100644
index 00000000..0b0921f8
--- /dev/null
+++ b/src/app/app.config.server.ts
@@ -0,0 +1,11 @@
+import { provideServerRendering, withRoutes } from '@angular/ssr';
+import type { ApplicationConfig } from '@angular/core';
+import { mergeApplicationConfig } from '@angular/core';
+import { appConfig } from './app.config';
+import { serverRoutes } from './app.routes.server';
+
+const serverConfig: ApplicationConfig = {
+ providers: [provideServerRendering(withRoutes(serverRoutes))],
+};
+
+export const config = mergeApplicationConfig(appConfig, serverConfig);
diff --git a/src/app/app.config.ts b/src/app/app.config.ts
new file mode 100644
index 00000000..a97bb4c8
--- /dev/null
+++ b/src/app/app.config.ts
@@ -0,0 +1,74 @@
+import type { ApplicationConfig } from '@angular/core';
+import {
+ inject,
+ provideBrowserGlobalErrorListeners,
+ provideZonelessChangeDetection,
+} from '@angular/core';
+import {
+ createUrlTreeFromSnapshot,
+ PreloadAllModules,
+ provideRouter,
+ Router,
+ withComponentInputBinding,
+ withInMemoryScrolling,
+ withPreloading,
+ withRouterConfig,
+ withViewTransitions,
+} from '@angular/router';
+import { provideHttpClient, withFetch, withInterceptors } from '@angular/common/http';
+import { cachingInterceptor } from '~core/interceptors/caching.interceptor';
+import { appRoutes } from './app.routes';
+import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
+import { authenticationInterceptor } from '~core/interceptors/authentication.interceptor';
+import { provideCloudinaryLoader } from '@angular/common';
+import { ENVIRONMENT } from '~core/tokens/environment.token';
+import { environment } from '~environments/environment';
+import {
+ provideClientHydration,
+ withEventReplay,
+ withI18nSupport,
+ withIncrementalHydration,
+} from '@angular/platform-browser';
+
+export const appConfig: ApplicationConfig = {
+ providers: [
+ {
+ provide: ENVIRONMENT,
+ useValue: environment,
+ },
+ provideZonelessChangeDetection(),
+ provideBrowserGlobalErrorListeners(),
+ provideRouter(
+ appRoutes,
+ withInMemoryScrolling(),
+ withViewTransitions({
+ onViewTransitionCreated: ({ transition, to }) => {
+ const router = inject(Router);
+ const toTree = createUrlTreeFromSnapshot(to, []);
+ // Skip the transition if the only thing changing is the fragment and queryParams
+ if (
+ router.isActive(toTree, {
+ paths: 'exact',
+ matrixParams: 'exact',
+ fragment: 'ignored',
+ queryParams: 'ignored',
+ })
+ ) {
+ transition.skipTransition();
+ }
+ },
+ }),
+ withComponentInputBinding(),
+ withRouterConfig({ paramsInheritanceStrategy: 'always', onSameUrlNavigation: 'reload' }),
+ withPreloading(PreloadAllModules),
+ ),
+ provideHttpClient(
+ withFetch(),
+ withInterceptors([authenticationInterceptor, cachingInterceptor]),
+ ),
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
+ provideAnimationsAsync(),
+ provideCloudinaryLoader('https://res.cloudinary.com/ismaestro/'),
+ provideClientHydration(withEventReplay(), withI18nSupport(), withIncrementalHydration()),
+ ],
+};
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
deleted file mode 100755
index d6f0cc68..00000000
--- a/src/app/app.module.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import {NgModule} from '@angular/core';
-import {BrowserModule} from '@angular/platform-browser';
-import {FormsModule} from '@angular/forms';
-
-import {APP_CONFIG, AppConfig} from './config/app.config';
-
-import {AppRoutingModule} from './app-routing.module';
-import {SharedModule} from './shared/modules/shared.module';
-import {CoreModule} from './core/core.module';
-
-import {AppComponent} from './app.component';
-import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
-import {HTTP_INTERCEPTORS, HttpClient, HttpClientModule} from '@angular/common/http';
-import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
-import {HttpLoaderFactory} from './app.translate.factory';
-import {HeroTopComponent} from './heroes/hero-top/hero-top.component';
-import {ProgressBarService} from './core/progress-bar.service';
-import {ProgressInterceptor} from './shared/interceptors/progress.interceptor';
-import {TimingInterceptor} from './shared/interceptors/timing.interceptor';
-
-@NgModule({
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- FormsModule,
- HttpClientModule,
- TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useFactory: HttpLoaderFactory,
- deps: [HttpClient]
- }
- }),
- SharedModule.forRoot(),
- CoreModule,
- AppRoutingModule
- ],
- declarations: [
- AppComponent,
- HeroTopComponent
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: HTTP_INTERCEPTORS, useClass: ProgressInterceptor, multi: true, deps: [ProgressBarService]},
- {provide: HTTP_INTERCEPTORS, useClass: TimingInterceptor, multi: true}
- ],
- bootstrap: [AppComponent]
-})
-
-export class AppModule {
-}
diff --git a/src/app/app.routes.server.ts b/src/app/app.routes.server.ts
new file mode 100644
index 00000000..4c0e4c70
--- /dev/null
+++ b/src/app/app.routes.server.ts
@@ -0,0 +1,25 @@
+import type { ServerRoute } from '@angular/ssr';
+import { RenderMode } from '@angular/ssr';
+import { inject } from '@angular/core';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+import { firstValueFrom } from 'rxjs';
+
+export const serverRoutes: ServerRoute[] = [
+ {
+ path: '',
+ renderMode: RenderMode.Prerender,
+ },
+ {
+ path: 'pokemon/:pokemonId',
+ renderMode: RenderMode.Prerender,
+ async getPrerenderParams() {
+ const pokemonService = inject(PokemonService);
+ const pokemonIds = await firstValueFrom(pokemonService.getLastUpdatedPokemonIds());
+ return pokemonIds.map((pokemonId) => ({ pokemonId }));
+ },
+ },
+ {
+ path: '**',
+ renderMode: RenderMode.Client,
+ },
+];
diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts
new file mode 100644
index 00000000..7b1b4bf8
--- /dev/null
+++ b/src/app/app.routes.ts
@@ -0,0 +1,32 @@
+import { AUTHENTICATION_PATHS, POKEMON_PATHS, ROOT_PATHS } from '~core/constants/paths.constants';
+import { Error404Component } from '~shared/components/error-404/error-404.component';
+import type { Route } from '@angular/router';
+import { HomeComponent } from '~features/home/home.component';
+import { MyPokemonComponent } from '~features/pokemon/pages/my-pokemon/my-pokemon.component';
+import { authenticationGuard } from '~core/guards/authentication.guard';
+
+export const appRoutes: Route[] = [
+ {
+ path: ROOT_PATHS.home,
+ component: HomeComponent,
+ },
+ {
+ path: AUTHENTICATION_PATHS.base,
+ loadChildren: async () =>
+ import('./features/authentication/authentication.routes').then(
+ (module_) => module_.AUTHENTICATION_ROUTES,
+ ),
+ },
+ {
+ path: ROOT_PATHS.myPokemon,
+ component: MyPokemonComponent,
+ canActivate: [authenticationGuard],
+ },
+ {
+ path: POKEMON_PATHS.base,
+ loadChildren: async () =>
+ import('./features/pokemon/pokemon.routes').then((module_) => module_.POKEMON_ROUTES),
+ },
+ { path: '404', component: Error404Component },
+ { path: '**', redirectTo: '404' },
+];
diff --git a/src/app/app.translate.factory.ts b/src/app/app.translate.factory.ts
deleted file mode 100644
index 1d420d15..00000000
--- a/src/app/app.translate.factory.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import {TranslateHttpLoader} from '@ngx-translate/http-loader';
-import {HttpClient} from '@angular/common/http';
-
-export function HttpLoaderFactory(http: HttpClient) {
- return new TranslateHttpLoader(http);
-}
diff --git a/src/app/config/app.config.ts b/src/app/config/app.config.ts
deleted file mode 100644
index 13f2ea5b..00000000
--- a/src/app/config/app.config.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {InjectionToken} from '@angular/core';
-
-import {IAppConfig} from './iapp.config';
-
-export let APP_CONFIG = new InjectionToken('app.config');
-
-export const AppConfig: IAppConfig = {
- routes: {
- heroes: 'heroes',
- error404: '404'
- },
- endpoints: {
- heroes: 'https://nodejs-example-app.herokuapp.com/heroes'
- },
- votesLimit: 3,
- topHeroesLimit: 4,
- snackBarDuration: 3000,
- repositoryURL: 'https://github.com/Ismaestro/angular5-example-app'
-};
diff --git a/src/app/config/iapp.config.ts b/src/app/config/iapp.config.ts
deleted file mode 100644
index 8a5380be..00000000
--- a/src/app/config/iapp.config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface IAppConfig {
- routes: any;
- endpoints: any;
- votesLimit: number;
- topHeroesLimit: number;
- snackBarDuration: number;
- repositoryURL: string;
-}
diff --git a/src/app/core/constants/alerts.constants.ts b/src/app/core/constants/alerts.constants.ts
new file mode 100644
index 00000000..2688f22c
--- /dev/null
+++ b/src/app/core/constants/alerts.constants.ts
@@ -0,0 +1,12 @@
+export enum AlertType {
+ SUCCESS = 'success',
+ ERROR = 'error',
+}
+
+export type Alert = {
+ id: string;
+ message: string;
+ type: AlertType;
+ hasCountdown?: boolean;
+ duration?: number;
+};
diff --git a/src/app/core/constants/api-error-codes.constants.ts b/src/app/core/constants/api-error-codes.constants.ts
new file mode 100644
index 00000000..c32745e4
--- /dev/null
+++ b/src/app/core/constants/api-error-codes.constants.ts
@@ -0,0 +1,3 @@
+export const API_ERROR_CODES = {
+ INVALID_CREDENTIALS_CODE: 2002,
+};
diff --git a/src/app/core/constants/endpoints.constants.ts b/src/app/core/constants/endpoints.constants.ts
new file mode 100644
index 00000000..bcb8334c
--- /dev/null
+++ b/src/app/core/constants/endpoints.constants.ts
@@ -0,0 +1,42 @@
+import { inject } from '@angular/core';
+import type { Environment } from '~core/tokens/environment.token';
+import { ENVIRONMENT } from '~core/tokens/environment.token';
+
+const getAuthEndpoints = (baseUrl: string) => ({
+ v1: {
+ authentication: `${baseUrl}/v1/authentication`,
+ login: `${baseUrl}/v1/authentication/login`,
+ refreshToken: `${baseUrl}/v1/authentication/token/refresh`,
+ },
+});
+
+const getUserEndpoints = (baseUrl: string) => ({
+ v1: {
+ user: `${baseUrl}/v1/user`,
+ pokemonCatch: `${baseUrl}/v1/user/pokemon/catch`,
+ },
+});
+
+const getPokemonEndpoints = (baseUrl: string, host: string) => ({
+ v1: {
+ pokemon: (pokemonIdOrName: string | number) => `${host}/v2/pokemon/${pokemonIdOrName}`,
+ lastUpdated: `${baseUrl}/v1/pokemon/last-updated`,
+ },
+});
+
+const getAnalyticsEndpoints = (baseUrl: string) => ({
+ v1: {
+ realtimeUsers: `${baseUrl}/v1/analytics/realtime-users`,
+ },
+});
+
+export const getEndpoints = () => {
+ const environment = inject(ENVIRONMENT);
+ const POKEMON_API_HOST = 'https://pokeapi.co/api';
+ return {
+ auth: getAuthEndpoints(environment.apiBaseUrl),
+ user: getUserEndpoints(environment.apiBaseUrl),
+ pokemon: getPokemonEndpoints(environment.apiBaseUrl, POKEMON_API_HOST),
+ analytics: getAnalyticsEndpoints(environment.apiBaseUrl),
+ } as const;
+};
diff --git a/src/app/core/constants/language.constants.ts b/src/app/core/constants/language.constants.ts
new file mode 100644
index 00000000..21eb32c2
--- /dev/null
+++ b/src/app/core/constants/language.constants.ts
@@ -0,0 +1,3 @@
+import { Locale } from '~core/enums/locale.enum';
+
+export const DEFAULT_LOCALE = Locale.EN;
diff --git a/src/app/core/constants/paths.constants.ts b/src/app/core/constants/paths.constants.ts
new file mode 100644
index 00000000..20822fc9
--- /dev/null
+++ b/src/app/core/constants/paths.constants.ts
@@ -0,0 +1,16 @@
+export const ROOT_PATHS = {
+ home: '',
+ myPokemon: 'my-pokemon',
+ error404: '404',
+};
+
+export const AUTHENTICATION_PATHS = {
+ base: 'auth',
+ logIn: 'log-in',
+ register: 'register',
+ myAccount: 'my-account',
+};
+
+export const POKEMON_PATHS = {
+ base: 'pokemon',
+};
diff --git a/src/app/core/constants/urls.constants.ts b/src/app/core/constants/urls.constants.ts
new file mode 100644
index 00000000..5f54d20e
--- /dev/null
+++ b/src/app/core/constants/urls.constants.ts
@@ -0,0 +1,17 @@
+import { AUTHENTICATION_PATHS, POKEMON_PATHS, ROOT_PATHS } from '~core/constants/paths.constants';
+
+export const ROOT_URLS = {
+ home: `/${ROOT_PATHS.home}`,
+ myPokedex: `/${ROOT_PATHS.myPokemon}`,
+ error404: `/${ROOT_PATHS.error404}`,
+};
+
+export const AUTH_URLS = {
+ logIn: `/${AUTHENTICATION_PATHS.base}/${AUTHENTICATION_PATHS.logIn}`,
+ register: `/${AUTHENTICATION_PATHS.base}/${AUTHENTICATION_PATHS.register}`,
+ myAccount: `/${AUTHENTICATION_PATHS.base}/${AUTHENTICATION_PATHS.myAccount}`,
+};
+
+export const POKEMON_URLS = {
+ detail: (id: string) => `/${POKEMON_PATHS.base}/${id}`,
+};
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
deleted file mode 100644
index 5b112e36..00000000
--- a/src/app/core/core.module.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {NgModule, Optional, SkipSelf} from '@angular/core';
-import {CommonModule} from '@angular/common';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-
-import {throwIfAlreadyLoaded} from './module-import-guard';
-import {LoggerService} from './logger.service';
-
-import {NavComponent} from './nav/nav.component';
-import {FooterComponent} from './footer/footer.component';
-import {SharedModule} from '../shared/modules/shared.module';
-import {RouterModule} from '@angular/router';
-import {SearchBarComponent} from './search-bar/search-bar.component';
-import {Error404Component} from './error404/error-404.component';
-import {ProgressBarService} from './progress-bar.service';
-
-
-@NgModule({
- imports: [
- CommonModule,
- FormsModule,
- RouterModule,
- SharedModule,
- ReactiveFormsModule
- ],
- exports: [
- NavComponent,
- FooterComponent
- ],
- declarations: [
- NavComponent,
- FooterComponent,
- SearchBarComponent,
- Error404Component
- ],
- providers: [
- LoggerService,
- ProgressBarService
- ]
-})
-
-export class CoreModule {
- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
- throwIfAlreadyLoaded(parentModule, 'CoreModule');
- }
-}
diff --git a/src/app/core/enums/app-error.enum.ts b/src/app/core/enums/app-error.enum.ts
new file mode 100644
index 00000000..73ab001d
--- /dev/null
+++ b/src/app/core/enums/app-error.enum.ts
@@ -0,0 +1,7 @@
+export enum AppError {
+ // Token Errors (3000–3999)
+ ACCESS_TOKEN_NOT_FOUND = 3000,
+ REFRESH_TOKEN_NOT_FOUND = 3001,
+ ACCESS_TOKEN_EXPIRED = 3002,
+ REFRESH_TOKEN_EXPIRED = 3003,
+}
diff --git a/src/app/core/enums/language.enum.ts b/src/app/core/enums/language.enum.ts
new file mode 100644
index 00000000..5cf7dc1f
--- /dev/null
+++ b/src/app/core/enums/language.enum.ts
@@ -0,0 +1,4 @@
+export enum Language {
+ EN_US = 'en-US',
+ ES_ES = 'es-ES',
+}
diff --git a/src/app/core/enums/locale.enum.ts b/src/app/core/enums/locale.enum.ts
new file mode 100644
index 00000000..98f6ef65
--- /dev/null
+++ b/src/app/core/enums/locale.enum.ts
@@ -0,0 +1,4 @@
+export enum Locale {
+ EN = 'en',
+ ES = 'es',
+}
diff --git a/src/app/core/error404/error-404.component.html b/src/app/core/error404/error-404.component.html
deleted file mode 100644
index c534e0a5..00000000
--- a/src/app/core/error404/error-404.component.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{'error404' | translate}}
-{{'mayTheForce' | translate}}
-
\ No newline at end of file
diff --git a/src/app/core/error404/error-404.component.scss b/src/app/core/error404/error-404.component.scss
deleted file mode 100755
index 4f14b84e..00000000
--- a/src/app/core/error404/error-404.component.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-img {
- margin: 0 auto;
- display: block;
-}
-
-.explanation {
- margin: 1em 0;
- text-align: center;
- font-size: 1.2em;
- font-weight: 300;
-}
\ No newline at end of file
diff --git a/src/app/core/error404/error-404.component.spec.ts b/src/app/core/error404/error-404.component.spec.ts
deleted file mode 100755
index 522fd43c..00000000
--- a/src/app/core/error404/error-404.component.spec.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import {TranslateModule} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {HeroService} from '../../heroes/shared/hero.service';
-import {MaterialModule} from '../../shared/modules/material.module';
-import {ProgressBarService} from '../progress-bar.service';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {Error404Component} from './error-404.component';
-
-describe('Error404Component', () => {
- let fixture;
- let component;
- let progressBarService;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- MaterialModule
- ],
- declarations: [
- Error404Component
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- HeroService,
- ProgressBarService
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
-
- fixture = TestBed.createComponent(Error404Component);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- progressBarService = TestBed.get(ProgressBarService);
- }));
-
- it('should create nav component', (() => {
- expect(component).toBeTruthy();
- }));
-});
diff --git a/src/app/core/error404/error-404.component.ts b/src/app/core/error404/error-404.component.ts
deleted file mode 100644
index 846679e4..00000000
--- a/src/app/core/error404/error-404.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {Component} from '@angular/core';
-
-@Component({
- selector: 'app-error-404',
- templateUrl: './error-404.component.html',
- styleUrls: ['./error-404.component.scss']
-})
-
-export class Error404Component {
- constructor() {
- }
-}
diff --git a/src/app/core/footer/footer.component.html b/src/app/core/footer/footer.component.html
deleted file mode 100644
index 0a4ca3b0..00000000
--- a/src/app/core/footer/footer.component.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/src/app/core/footer/footer.component.scss b/src/app/core/footer/footer.component.scss
deleted file mode 100755
index e9866077..00000000
--- a/src/app/core/footer/footer.component.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-footer {
- padding: 8px 16px;
- color: white;
- background: #3f51b5;
- margin-top: 2em;
- position: sticky;
- top: 100%;
-
- img {
- width: 25%;
- }
-}
-
-.footer-xs {
- text-align: center;
- padding-top: 1em;
-}
diff --git a/src/app/core/footer/footer.component.spec.ts b/src/app/core/footer/footer.component.spec.ts
deleted file mode 100755
index 1513a990..00000000
--- a/src/app/core/footer/footer.component.spec.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {FooterComponent} from './footer.component';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import {TranslateModule} from '@ngx-translate/core';
-
-describe('FooterComponent', () => {
- let fixture;
- let component;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TranslateModule.forRoot()
- ],
- declarations: [
- FooterComponent
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
-
- fixture = TestBed.createComponent(FooterComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- }));
-
- it('should create footer component', (() => {
- expect(component).toBeTruthy();
- }));
-});
diff --git a/src/app/core/footer/footer.component.ts b/src/app/core/footer/footer.component.ts
deleted file mode 100644
index d1efb5ab..00000000
--- a/src/app/core/footer/footer.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {Component} from '@angular/core';
-
-@Component({
- selector: 'app-footer',
- templateUrl: './footer.component.html',
- styleUrls: ['./footer.component.scss']
-})
-
-export class FooterComponent {
-}
diff --git a/src/app/core/guards/authentication.guard.ts b/src/app/core/guards/authentication.guard.ts
new file mode 100755
index 00000000..1c21e637
--- /dev/null
+++ b/src/app/core/guards/authentication.guard.ts
@@ -0,0 +1,16 @@
+import { inject } from '@angular/core';
+import { Router } from '@angular/router';
+import { AUTH_URLS } from '~core/constants/urls.constants';
+import { AuthenticationService } from '~features/authentication/services/authentication.service';
+
+export function authenticationGuard(): boolean {
+ const authenticationService = inject(AuthenticationService);
+ const router = inject(Router);
+
+ if (authenticationService.authState().isLoggedIn) {
+ return true;
+ }
+
+ void router.navigate([AUTH_URLS.logIn]);
+ return false;
+}
diff --git a/src/app/core/guards/no-authentication.guard.ts b/src/app/core/guards/no-authentication.guard.ts
new file mode 100644
index 00000000..178fb560
--- /dev/null
+++ b/src/app/core/guards/no-authentication.guard.ts
@@ -0,0 +1,16 @@
+import { inject } from '@angular/core';
+import { Router } from '@angular/router';
+import { AuthenticationService } from '~features/authentication/services/authentication.service';
+import { ROOT_PATHS } from '~core/constants/paths.constants';
+
+export function noAuthenticationGuard(): boolean {
+ const authenticationService = inject(AuthenticationService);
+ const router = inject(Router);
+
+ if (authenticationService.authState().isLoggedIn) {
+ void router.navigate([ROOT_PATHS.home]);
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/app/core/interceptors/authentication.interceptor.ts b/src/app/core/interceptors/authentication.interceptor.ts
new file mode 100644
index 00000000..142bdf24
--- /dev/null
+++ b/src/app/core/interceptors/authentication.interceptor.ts
@@ -0,0 +1,187 @@
+import type {
+ HttpErrorResponse,
+ HttpEvent,
+ HttpHandlerFn,
+ HttpRequest,
+} from '@angular/common/http';
+import type { Observable } from 'rxjs';
+import { BehaviorSubject, throwError } from 'rxjs';
+import { catchError, filter, switchMap, take } from 'rxjs/operators';
+import { inject } from '@angular/core';
+import { Router } from '@angular/router';
+import {
+ ACCESS_TOKEN_KEY,
+ AuthenticationService,
+} from '~features/authentication/services/authentication.service';
+import { AppError } from '~core/enums/app-error.enum';
+import { AUTH_URLS } from '~core/constants/urls.constants';
+import { LOCAL_STORAGE } from '~core/providers/local-storage';
+import { translations } from '../../../locale/translations';
+import { AlertService } from '~core/services/ui/alert.service';
+
+const isRefreshing = new BehaviorSubject(false);
+
+export function authenticationInterceptor(
+ request: HttpRequest,
+ next: HttpHandlerFn,
+): Observable> {
+ const authenticationService = inject(AuthenticationService);
+ const alertService = inject(AlertService);
+ const storageService = inject(LOCAL_STORAGE);
+ const router = inject(Router);
+
+ const clonedRequest = attachAccessToken(request, storageService);
+ return handleRequest({
+ request: clonedRequest,
+ next,
+ authenticationService,
+ alertService,
+ storageService,
+ router,
+ });
+}
+
+function attachAccessToken(
+ request: HttpRequest,
+ storageService: Storage | null,
+): HttpRequest {
+ const accessToken = storageService?.getItem(ACCESS_TOKEN_KEY);
+ if (accessToken) {
+ return request.clone({
+ setHeaders: { Authorization: `Bearer ${accessToken}` },
+ });
+ }
+ return request;
+}
+
+function handleRequest(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ authenticationService: AuthenticationService;
+ alertService: AlertService;
+ storageService: Storage | null;
+ router: Router;
+}): Observable> {
+ return parameters.next(parameters.request).pipe(
+ catchError((errorResponse: HttpErrorResponse) =>
+ handleErrors({
+ errorResponse,
+ ...parameters,
+ }),
+ ),
+ );
+}
+
+function handleErrors(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ authenticationService: AuthenticationService;
+ alertService: AlertService;
+ storageService: Storage | null;
+ router: Router;
+ errorResponse: HttpErrorResponse;
+}): Observable> {
+ if (isAccessTokenError(parameters.errorResponse)) {
+ return tryRefreshToken(parameters);
+ }
+
+ if (isRefreshTokenError(parameters.errorResponse)) {
+ parameters.authenticationService.logOut();
+ void parameters.router.navigate([AUTH_URLS.logIn]);
+ return throwError(() => new Error('Session expired. Please log in again.'));
+ }
+
+ return throwError(() => parameters.errorResponse);
+}
+
+function isAccessTokenError(errorResponse: HttpErrorResponse): boolean {
+ return (
+ errorResponse.status === 401 &&
+ [AppError.ACCESS_TOKEN_NOT_FOUND, AppError.ACCESS_TOKEN_EXPIRED].includes(
+ errorResponse.error.internalCode,
+ )
+ );
+}
+
+function isRefreshTokenError(errorResponse: HttpErrorResponse): boolean {
+ return (
+ errorResponse.status === 401 &&
+ [AppError.REFRESH_TOKEN_NOT_FOUND, AppError.REFRESH_TOKEN_EXPIRED].includes(
+ errorResponse.error.internalCode,
+ )
+ );
+}
+
+function tryRefreshToken(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ authenticationService: AuthenticationService;
+ alertService: AlertService;
+ storageService: Storage | null;
+ router: Router;
+}): Observable> {
+ if (!isRefreshing.getValue()) {
+ return handleTokenRefresh(parameters);
+ }
+
+ return waitForTokenRefresh(parameters);
+}
+
+function handleTokenRefresh(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ authenticationService: AuthenticationService;
+ alertService: AlertService;
+ storageService: Storage | null;
+ router: Router;
+}): Observable> {
+ isRefreshing.next(true);
+
+ return parameters.authenticationService.refreshToken().pipe(
+ switchMap(() => {
+ isRefreshing.next(false);
+ return retryRequestWithRefreshedToken(parameters);
+ }),
+ catchError((error: HttpErrorResponse) => {
+ isRefreshing.next(false);
+ handleRefreshError(parameters);
+ return throwError(() => error);
+ }),
+ );
+}
+
+function waitForTokenRefresh(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ storageService: Storage | null;
+}): Observable> {
+ return isRefreshing.pipe(
+ filter((refreshing) => !refreshing),
+ take(1),
+ switchMap(() => retryRequestWithRefreshedToken(parameters)),
+ );
+}
+
+function retryRequestWithRefreshedToken(parameters: {
+ request: HttpRequest;
+ next: HttpHandlerFn;
+ storageService: Storage | null;
+}): Observable> {
+ const refreshedToken = parameters.storageService?.getItem(ACCESS_TOKEN_KEY);
+ const clonedRequest = refreshedToken
+ ? parameters.request.clone({
+ setHeaders: { Authorization: `Bearer ${refreshedToken}` },
+ })
+ : parameters.request;
+ return parameters.next(clonedRequest);
+}
+
+function handleRefreshError(parameters: {
+ authenticationService: AuthenticationService;
+ alertService: AlertService;
+ router: Router;
+}): void {
+ parameters.authenticationService.logOut();
+ parameters.alertService.createErrorAlert(translations.sessionExpired);
+ void parameters.router.navigate([AUTH_URLS.logIn]);
+}
diff --git a/src/app/core/interceptors/caching.interceptor.ts b/src/app/core/interceptors/caching.interceptor.ts
new file mode 100644
index 00000000..d09a7a1c
--- /dev/null
+++ b/src/app/core/interceptors/caching.interceptor.ts
@@ -0,0 +1,34 @@
+import type { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';
+import { HttpContextToken, HttpResponse } from '@angular/common/http';
+import type { Observable } from 'rxjs';
+import { of, tap } from 'rxjs';
+
+export const CACHING_ENABLED = new HttpContextToken(() => false);
+
+const cache = new Map>();
+
+export function cachingInterceptor(
+ request: HttpRequest,
+ next: HttpHandlerFn,
+): Observable> {
+ if (request.context.get(CACHING_ENABLED)) {
+ const cachedResponse = cache.get(request.urlWithParams);
+ if (cachedResponse) {
+ return of(cachedResponse.clone());
+ }
+
+ return next(request).pipe(
+ tap((event) => {
+ if (event instanceof HttpResponse) {
+ cache.set(request.urlWithParams, event.clone());
+ }
+ }),
+ );
+ }
+
+ return next(request);
+}
+
+export function clearCache() {
+ cache.clear();
+}
diff --git a/src/app/core/logger.service.spec.ts b/src/app/core/logger.service.spec.ts
deleted file mode 100755
index bff9d153..00000000
--- a/src/app/core/logger.service.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {TestBed} from '@angular/core/testing';
-import {LoggerService} from './logger.service';
-
-describe('LoggerService', () => {
- let loggerService;
- beforeEach(() => {
- TestBed.configureTestingModule({
- providers: [
- LoggerService
- ]
- });
-
- loggerService = TestBed.get(LoggerService);
- });
-
- it('should log without errors', (() => {
- expect(loggerService).toBeDefined();
- expect(LoggerService.error('This is an error')).toBeUndefined();
- expect(LoggerService.log('This is a log')).toBeUndefined();
- }));
-});
diff --git a/src/app/core/logger.service.ts b/src/app/core/logger.service.ts
deleted file mode 100644
index a148fc5e..00000000
--- a/src/app/core/logger.service.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {Injectable} from '@angular/core';
-
-@Injectable()
-export class LoggerService {
- static log(msg: string): void {
- console.log(msg);
- }
-
- static error(msg: string, obj = {}): void {
- console.error(msg, obj);
- }
-}
diff --git a/src/app/core/module-import-guard.ts b/src/app/core/module-import-guard.ts
deleted file mode 100644
index 445640c4..00000000
--- a/src/app/core/module-import-guard.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {
- if (parentModule) {
- throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);
- }
-}
diff --git a/src/app/core/nav/nav.component.html b/src/app/core/nav/nav.component.html
deleted file mode 100644
index 6afeb5fa..00000000
--- a/src/app/core/nav/nav.component.html
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
- public
-
-
-
- flag
-
- English
-
-
-
- flag
-
- Español
-
-
-
- flag
-
- Português
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/core/nav/nav.component.scss b/src/app/core/nav/nav.component.scss
deleted file mode 100755
index 9a069a59..00000000
--- a/src/app/core/nav/nav.component.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-:host(app-nav) {
- padding-top: 0;
- padding-bottom: 5em;
- display: grid;
-
- header {
- position: fixed;
- z-index: 999;
- width: 100%;
-
- nav {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- padding: 8px 16px;
- color: white;
- height: 4em;
- background: #3f51b5;
-
- .mat-raised-button {
- color: #3f51b5;
- margin-right: 1em;
- }
-
- .progress-bar {
- display: flex;
- align-content: center;
- align-items: center;
- height: 5px;
- }
-
- .image-icon {
- width: 20px;
- height: 20px;
- }
-
- img {
- vertical-align: middle;
- }
- }
- }
-}
-
-@media (max-width: 680px) {
- :host(app-nav) {
- padding-top: 0;
- padding-bottom: 1em;
-
- header {
- position: relative;
-
- nav {
- height: 7em;
- display: flex;
- padding: 1em 2em 0;
- }
- }
- }
-}
-
-@media (max-width: 425px) {
- :host(app-nav) {
- padding-bottom: 0;
-
- header {
- nav {
- app-search-bar {
- width: 75%;
- }
- }
- }
- }
-}
diff --git a/src/app/core/nav/nav.component.spec.ts b/src/app/core/nav/nav.component.spec.ts
deleted file mode 100755
index d5b96088..00000000
--- a/src/app/core/nav/nav.component.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {NavComponent} from './nav.component';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import {TranslateModule, TranslateService} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {HeroService} from '../../heroes/shared/hero.service';
-import {MaterialModule} from '../../shared/modules/material.module';
-import {ProgressBarService} from '../progress-bar.service';
-import {TestsModule} from '../../shared/modules/tests.module';
-
-describe('NavComponent', () => {
- let fixture;
- let component;
- let progressBarService;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- MaterialModule
- ],
- declarations: [
- NavComponent
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- HeroService,
- ProgressBarService
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
-
- fixture = TestBed.createComponent(NavComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- progressBarService = TestBed.get(ProgressBarService);
- }));
-
- it('should create nav component with constructor', (() => {
- const translateService = TestBed.get(TranslateService);
- const instance = new NavComponent(AppConfig, progressBarService, translateService);
- expect(instance).toBeTruthy();
- }));
-
- it('should create nav component', (() => {
- expect(component).toBeTruthy();
- }));
-
- it('should update progress bar', (() => {
- expect(component.progressBarMode).toBeUndefined();
- progressBarService.updateProgressBar$.emit('query');
- expect(component.progressBarMode).toBe('query');
- }));
-
- it('should change language to spanish', (() => {
- expect(component.translateService.currentLang).toBeUndefined();
- component.changeLanguage('es');
- expect(component.translateService.currentLang).toBe('es');
- }));
-});
diff --git a/src/app/core/nav/nav.component.ts b/src/app/core/nav/nav.component.ts
deleted file mode 100644
index b9c0f790..00000000
--- a/src/app/core/nav/nav.component.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import {Component, Inject} from '@angular/core';
-import {TranslateService} from '@ngx-translate/core';
-
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {IAppConfig} from '../../config/iapp.config';
-import {ProgressBarService} from '../progress-bar.service';
-
-@Component({
- selector: 'app-nav',
- templateUrl: './nav.component.html',
- styleUrls: ['./nav.component.scss']
-})
-
-export class NavComponent {
- appConfig: any;
- menuItems: any[];
- progressBarMode: string;
-
- private translateService: TranslateService;
-
- constructor(@Inject(APP_CONFIG) appConfig: IAppConfig,
- private progressBarService: ProgressBarService,
- translateService: TranslateService) {
- this.appConfig = appConfig;
- this.translateService = translateService;
- this.loadMenus();
-
- this.progressBarService.updateProgressBar$.subscribe((mode: string) => {
- this.progressBarMode = mode;
- });
- }
-
- changeLanguage(language: string): void {
- this.translateService.use(language).subscribe(() => {
- this.loadMenus();
- });
- }
-
- private loadMenus(): void {
- this.translateService.get(['home', 'heroesList'], {}).subscribe((texts: any) => {
- this.menuItems = [
- {link: '/', name: texts['home']},
- {link: '/' + AppConfig.routes.heroes, name: texts['heroesList']}
- ];
- });
- }
-}
diff --git a/src/app/core/progress-bar.service.spec.ts b/src/app/core/progress-bar.service.spec.ts
deleted file mode 100644
index edbf8c01..00000000
--- a/src/app/core/progress-bar.service.spec.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import {TestBed} from '@angular/core/testing';
-import {ProgressBarService} from './progress-bar.service';
-import {HeroService} from '../heroes/shared/hero.service';
-import {TestsModule} from '../shared/modules/tests.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../config/app.config';
-
-describe('ProgressBarService', () => {
- let progressBarService;
- let heroService;
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- ProgressBarService,
- HeroService
- ]
- });
-
- progressBarService = TestBed.get(ProgressBarService);
- heroService = TestBed.get(HeroService);
- });
-
- it('should not be requestsRunning', (() => {
- const instance = new ProgressBarService();
- expect(instance).toBeTruthy();
- }));
-
- it('should not be requestsRunning', (() => {
- expect(progressBarService.requestsRunning).toBe(0);
- }));
-
- it('should increase and decrease the counter of requests running', (() => {
- progressBarService.increase();
- progressBarService.increase();
- expect(progressBarService.requestsRunning).toBe(2);
- progressBarService.decrease();
- expect(progressBarService.requestsRunning).toBe(1);
- progressBarService.decrease();
- expect(progressBarService.requestsRunning).toBe(0);
- progressBarService.decrease();
- expect(progressBarService.requestsRunning).toBe(0);
- }));
-});
diff --git a/src/app/core/progress-bar.service.ts b/src/app/core/progress-bar.service.ts
deleted file mode 100644
index d1c404ed..00000000
--- a/src/app/core/progress-bar.service.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {EventEmitter, Injectable} from '@angular/core';
-
-@Injectable()
-export class ProgressBarService {
- public updateProgressBar$: EventEmitter;
-
- private requestsRunning = 0;
-
- constructor() {
- this.updateProgressBar$ = new EventEmitter();
- }
-
- public list(): number {
- return this.requestsRunning;
- }
-
- public increase(): void {
- this.requestsRunning++;
- if (this.requestsRunning === 1) {
- this.updateProgressBar$.emit('query');
- }
- }
-
- public decrease(): void {
- if (this.requestsRunning > 0) {
- this.requestsRunning--;
- if (this.requestsRunning === 0) {
- this.updateProgressBar$.emit('none');
- }
- }
- }
-}
diff --git a/src/app/core/providers/local-storage.ts b/src/app/core/providers/local-storage.ts
new file mode 100644
index 00000000..f8e0166d
--- /dev/null
+++ b/src/app/core/providers/local-storage.ts
@@ -0,0 +1,64 @@
+import { isPlatformBrowser } from '@angular/common';
+import { inject, InjectionToken, PLATFORM_ID } from '@angular/core';
+
+/**
+ * LocalStorage is wrapper class for localStorage, operations can fail due to various reasons,
+ * such as browser restrictions or storage limits being exceeded. A wrapper is providing error handling.
+ */
+class LocalStorage implements Storage {
+ get length(): number {
+ try {
+ return localStorage.length;
+ } catch {
+ return 0;
+ }
+ }
+
+ clear(): void {
+ try {
+ localStorage.clear();
+ } catch {
+ /* Empty */
+ }
+ }
+
+ getItem(key: string): string | null {
+ try {
+ return localStorage.getItem(key);
+ } catch {
+ return null;
+ }
+ }
+
+ key(index: number): string | null {
+ try {
+ return localStorage.key(index);
+ } catch {
+ return null;
+ }
+ }
+
+ removeItem(key: string): void {
+ try {
+ localStorage.removeItem(key);
+ } catch {
+ /* Empty */
+ }
+ }
+
+ setItem(key: string, value: string): void {
+ try {
+ localStorage.setItem(key, value);
+ } catch {
+ /* Empty */
+ }
+ }
+}
+
+const getStorage = (platformId: object): Storage | null =>
+ isPlatformBrowser(platformId) ? new LocalStorage() : null;
+
+export const LOCAL_STORAGE = new InjectionToken('LOCAL_STORAGE', {
+ providedIn: 'root',
+ factory: () => getStorage(inject(PLATFORM_ID)),
+});
diff --git a/src/app/core/search-bar/search-bar.component.html b/src/app/core/search-bar/search-bar.component.html
deleted file mode 100644
index b44b5d21..00000000
--- a/src/app/core/search-bar/search-bar.component.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- {{hero.name}}
-
-
diff --git a/src/app/core/search-bar/search-bar.component.scss b/src/app/core/search-bar/search-bar.component.scss
deleted file mode 100644
index efc97e7e..00000000
--- a/src/app/core/search-bar/search-bar.component.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-:host(app-search-bar) {
- /deep/ .mat-input-placeholder {
- font-weight: 100;
- color: white;
- }
-
- /deep/ .mat-input-underline {
- background-color: white;
- bottom: 1.5em;
- }
-
- /deep/ .mat-input-infix {
- border-top: 1.2em solid transparent;
- }
-}
diff --git a/src/app/core/search-bar/search-bar.component.spec.ts b/src/app/core/search-bar/search-bar.component.spec.ts
deleted file mode 100755
index 820f0d7d..00000000
--- a/src/app/core/search-bar/search-bar.component.spec.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import {async, fakeAsync, TestBed, tick} from '@angular/core/testing';
-import {HeroService} from '../../heroes/shared/hero.service';
-import {SearchBarComponent} from './search-bar.component';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import {TranslateModule} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {AppRoutingModule} from '../../app-routing.module';
-import {HeroTopComponent} from '../../heroes/hero-top/hero-top.component';
-import {APP_BASE_HREF} from '@angular/common';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {Error404Component} from '../error404/error-404.component';
-
-describe('SearchBarComponent', () => {
- let fixture;
- let component;
- let heroService;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- AppRoutingModule
- ],
- declarations: [
- SearchBarComponent,
- HeroTopComponent,
- Error404Component
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'},
- HeroService
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
-
- fixture = TestBed.createComponent(SearchBarComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- heroService = TestBed.get(HeroService);
- }));
-
- it('should create hero search component', (() => {
- expect(component).toBeTruthy();
- }));
-
- it('should get all heroes', fakeAsync(() => {
- spyOn(heroService, 'getAllHeroes').and.returnValue(Promise.resolve(true));
- tick();
- fixture.detectChanges();
- expect(component.defaultHeroes.length).toBeGreaterThan(0);
- for (const hero of component.defaultHeroes) {
- expect(hero.default).toBe(true);
- }
- }));
-
- it('should filter heroes array', (() => {
- component.defaultHeroes = [
- {
- 'id': 1,
- 'name': 'batman',
- 'default': true
- },
- {
- 'id': 2,
- 'name': 'spiderman',
- 'default': false
- }
- ];
- expect(component.filterHeroes('batman').length).toBe(1);
- expect(component.filterHeroes('spiderman').length).toBe(0);
- expect(component.filterHeroes().length).toBe(2);
- }));
-});
diff --git a/src/app/core/search-bar/search-bar.component.ts b/src/app/core/search-bar/search-bar.component.ts
deleted file mode 100644
index fa5c174f..00000000
--- a/src/app/core/search-bar/search-bar.component.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import {Component} from '@angular/core';
-import {LoggerService} from '../logger.service';
-import {Hero} from '../../heroes/shared/hero.model';
-import {FormControl} from '@angular/forms';
-import {HeroService} from '../../heroes/shared/hero.service';
-import {Router} from '@angular/router';
-import {AppConfig} from '../../config/app.config';
-
-@Component({
- selector: 'app-search-bar',
- templateUrl: './search-bar.component.html',
- styleUrls: ['./search-bar.component.scss'],
- providers: [
- LoggerService
- ]
-})
-
-export class SearchBarComponent {
- defaultHeroes: Array = [];
- heroFormControl: FormControl;
- filteredHeroes: any;
- heroesAutocomplete: any;
-
- constructor(private heroService: HeroService,
- private router: Router) {
- this.heroFormControl = new FormControl();
-
- this.heroService.getAllHeroes().subscribe((heroes: Array) => {
- this.defaultHeroes = heroes.filter(hero => hero['default']);
-
- this.heroFormControl.valueChanges
- .startWith(null)
- .map(value => this.filterHeroes(value))
- .subscribe(heroesFiltered => {
- this.filteredHeroes = heroesFiltered;
- });
- });
- }
-
- filterHeroes(val: string): Hero[] {
- return val ? this.defaultHeroes.filter(hero => hero.name.toLowerCase().indexOf(val.toLowerCase()) === 0 && hero['default'])
- : this.defaultHeroes;
- }
-
- searchHero(hero: Hero): Promise {
- LoggerService.log('Moved to hero with id: ' + hero.id);
- return this.router.navigate([AppConfig.routes.heroes + '/' + hero.id]);
- }
-}
diff --git a/src/app/core/services/analytics.service.ts b/src/app/core/services/analytics.service.ts
new file mode 100644
index 00000000..5269dad4
--- /dev/null
+++ b/src/app/core/services/analytics.service.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { httpResource, type HttpResourceRef } from '@angular/common/http';
+import { getEndpoints } from '~core/constants/endpoints.constants';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class AnalyticsService {
+ private readonly endpoints = getEndpoints();
+
+ getRealtimeUsersResource(): HttpResourceRef<{ activeUsers: number }> {
+ return httpResource<{ activeUsers: number }>(
+ () => ({ url: this.endpoints.analytics.v1.realtimeUsers }),
+ {
+ defaultValue: { activeUsers: 1 },
+ },
+ );
+ }
+}
diff --git a/src/app/core/services/language.service.ts b/src/app/core/services/language.service.ts
new file mode 100644
index 00000000..fd5194ab
--- /dev/null
+++ b/src/app/core/services/language.service.ts
@@ -0,0 +1,46 @@
+import { inject, Injectable, LOCALE_ID } from '@angular/core';
+import { Router } from '@angular/router';
+import { Language } from '~core/enums/language.enum';
+import { Locale } from '~core/enums/locale.enum';
+import { DEFAULT_LOCALE } from '~core/constants/language.constants';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class LanguageService {
+ private readonly localeId = inject(LOCALE_ID);
+ private readonly router = inject(Router);
+
+ convertLocaleToAcceptLanguage(): Language {
+ if (this.localeId === (Locale.ES as string)) {
+ return Language.ES_ES;
+ }
+ return Language.EN_US;
+ }
+
+ navigateWithUserLanguage(language: Language, pathToRedirect: string) {
+ if (this.doesLocaleMatchLanguage(language)) {
+ void this.router.navigate([pathToRedirect]);
+ } else {
+ const localeToRedirect = this.getLocaleFromLanguage(language);
+ window.location.href =
+ localeToRedirect === DEFAULT_LOCALE
+ ? pathToRedirect
+ : `/${localeToRedirect}${pathToRedirect}`;
+ }
+ }
+
+ private doesLocaleMatchLanguage(language: Language) {
+ if (this.localeId === (Locale.ES as string)) {
+ return language === Language.ES_ES;
+ }
+ return language === Language.EN_US;
+ }
+
+ private getLocaleFromLanguage(language: Language): Locale {
+ if (language === Language.ES_ES) {
+ return Locale.ES;
+ }
+ return DEFAULT_LOCALE;
+ }
+}
diff --git a/src/app/core/services/storage/cookie-consent.service.ts b/src/app/core/services/storage/cookie-consent.service.ts
new file mode 100644
index 00000000..c9f13abb
--- /dev/null
+++ b/src/app/core/services/storage/cookie-consent.service.ts
@@ -0,0 +1,74 @@
+import { inject, Injectable } from '@angular/core';
+import { LOCAL_STORAGE } from '~core/providers/local-storage';
+
+declare const window: Window &
+ // eslint-disable-next-line @typescript-eslint/max-params
+ typeof globalThis & { gtag?: (a: string, b: string, o: object) => void };
+
+const CONSENT_COOKIE_KEY = 'isCookiesConsentAccepted';
+const CONSENT_COOKIE_VALUE = 'true';
+
+export enum ConsentState {
+ DENIED = 'denied',
+ GRANTED = 'granted',
+}
+
+@Injectable({
+ providedIn: 'root',
+})
+export class CookieConsentService {
+ private readonly localStorage: Storage | null = inject(LOCAL_STORAGE);
+
+ setCookieConsent(state: ConsentState): boolean {
+ if (!this.setConsentInLocalStorage()) {
+ return false;
+ }
+ return this.updateGtagConsent(state);
+ }
+
+ getCookieState(): boolean {
+ try {
+ return this.localStorage?.getItem(CONSENT_COOKIE_KEY) === CONSENT_COOKIE_VALUE;
+ } catch {
+ return false;
+ }
+ }
+
+ private setConsentInLocalStorage(): boolean {
+ try {
+ this.localStorage?.setItem(CONSENT_COOKIE_KEY, CONSENT_COOKIE_VALUE);
+ return true;
+ } catch {
+ return false;
+ }
+ }
+
+ private updateGtagConsent(state: ConsentState): boolean {
+ try {
+ if (window.gtag) {
+ const consentOptions = {
+ /* eslint-disable camelcase*/
+ ad_user_data: state,
+ ad_personalization: state,
+ ad_storage: state,
+ analytics_storage: state,
+ };
+
+ if (state === ConsentState.DENIED) {
+ window.gtag('consent', 'default', {
+ ...consentOptions,
+ wait_for_update: 500,
+ /* eslint-enable camelcase*/
+ });
+ } else {
+ window.gtag('consent', 'update', {
+ ...consentOptions,
+ });
+ }
+ }
+ return true;
+ } catch {
+ return false;
+ }
+ }
+}
diff --git a/src/app/core/services/storage/file.service.ts b/src/app/core/services/storage/file.service.ts
new file mode 100644
index 00000000..4db54d23
--- /dev/null
+++ b/src/app/core/services/storage/file.service.ts
@@ -0,0 +1,14 @@
+import { HttpClient } from '@angular/common/http';
+import { inject, Injectable } from '@angular/core';
+import type { Observable } from 'rxjs';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class FileService {
+ private readonly httpClient = inject(HttpClient);
+
+ getFileAsText(fileUrl: string): Observable {
+ return this.httpClient.get(fileUrl, { responseType: 'text' });
+ }
+}
diff --git a/src/app/core/services/ui/alert.service.ts b/src/app/core/services/ui/alert.service.ts
new file mode 100644
index 00000000..b9de75c2
--- /dev/null
+++ b/src/app/core/services/ui/alert.service.ts
@@ -0,0 +1,36 @@
+import { Injectable, signal } from '@angular/core';
+import type { Alert } from '~core/constants/alerts.constants';
+import { AlertType } from '~core/constants/alerts.constants';
+
+@Injectable({ providedIn: 'root' })
+export class AlertService {
+ private readonly _alerts = signal([]);
+
+ readonly alerts = this._alerts.asReadonly();
+
+ createSuccessAlert(message: string) {
+ this.createAlert({
+ id: this.generateAlertId(),
+ message,
+ type: AlertType.SUCCESS,
+ duration: 7000,
+ hasCountdown: true,
+ });
+ }
+
+ createErrorAlert(message: string) {
+ this.createAlert({ id: this.generateAlertId(), message, type: AlertType.ERROR });
+ }
+
+ removeAlert(alertToRemove: Alert) {
+ this._alerts.update((alerts) => alerts.filter((alert) => alert !== alertToRemove));
+ }
+
+ private createAlert(alert: Alert) {
+ this._alerts.update((alerts) => [...alerts, alert]);
+ }
+
+ private generateAlertId(): string {
+ return Math.random().toString(36).slice(2, 9) + Date.now().toString(36);
+ }
+}
diff --git a/src/app/core/services/ui/header.service.ts b/src/app/core/services/ui/header.service.ts
new file mode 100644
index 00000000..34819896
--- /dev/null
+++ b/src/app/core/services/ui/header.service.ts
@@ -0,0 +1,24 @@
+import { inject, Injectable, DOCUMENT } from '@angular/core';
+import type { Environment } from '~core/tokens/environment.token';
+import { ENVIRONMENT } from '~core/tokens/environment.token';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class HeaderService {
+ private readonly environment = inject(ENVIRONMENT);
+ private readonly document = inject(DOCUMENT);
+
+ setCanonical(absolutePath: string): void {
+ const [pathWithoutFragment] = HeaderService.normalizePath(absolutePath).split('#'),
+ fullPath = `${this.environment.domain}/${pathWithoutFragment}`;
+ this.document.querySelector('link[rel=canonical]')?.setAttribute('href', fullPath);
+ }
+
+ private static normalizePath(path: string): string {
+ if (path.startsWith('/')) {
+ return path.slice(1);
+ }
+ return path;
+ }
+}
diff --git a/src/app/core/services/ui/theme-manager.service.ts b/src/app/core/services/ui/theme-manager.service.ts
new file mode 100644
index 00000000..ba19856f
--- /dev/null
+++ b/src/app/core/services/ui/theme-manager.service.ts
@@ -0,0 +1,49 @@
+import { inject, Injectable, signal, DOCUMENT } from '@angular/core';
+import { LOCAL_STORAGE } from '~core/providers/local-storage';
+
+// Keep these constants in sync with the code in index.html
+const DARK_THEME_CLASS_NAME = 'theme-dark--mode',
+ LIGHT_THEME_CLASS_NAME = 'theme-light--mode',
+ THEME_SELECTED_LOCAL_STORAGE_KEY = 'theme';
+
+export enum Theme {
+ DARK = 'dark',
+ LIGHT = 'light',
+}
+
+@Injectable({
+ providedIn: 'root',
+})
+export class ThemeManagerService {
+ private readonly document = inject(DOCUMENT);
+ private readonly localStorage: Storage | null = inject(LOCAL_STORAGE);
+ private readonly _themeSelected = signal(Theme.DARK);
+
+ readonly themeSelected = this._themeSelected.asReadonly();
+
+ constructor() {
+ const themeFromLocalStorage = this.localStorage?.getItem(
+ THEME_SELECTED_LOCAL_STORAGE_KEY,
+ ) as Theme | null;
+ if (themeFromLocalStorage) {
+ this.setTheme(themeFromLocalStorage);
+ }
+ }
+
+ setTheme(theme: Theme): void {
+ this._themeSelected.set(theme);
+ this.localStorage?.setItem(THEME_SELECTED_LOCAL_STORAGE_KEY, this.themeSelected());
+ this.setBodyClasses();
+ }
+
+ private setBodyClasses(): void {
+ const documentClassList = this.document.documentElement.classList;
+ if (this.themeSelected() === Theme.DARK) {
+ documentClassList.add(DARK_THEME_CLASS_NAME);
+ documentClassList.remove(LIGHT_THEME_CLASS_NAME);
+ } else {
+ documentClassList.add(LIGHT_THEME_CLASS_NAME);
+ documentClassList.remove(DARK_THEME_CLASS_NAME);
+ }
+ }
+}
diff --git a/src/app/core/tokens/environment.token.ts b/src/app/core/tokens/environment.token.ts
new file mode 100644
index 00000000..5cd92ff3
--- /dev/null
+++ b/src/app/core/tokens/environment.token.ts
@@ -0,0 +1,8 @@
+import { InjectionToken } from '@angular/core';
+
+export type Environment = {
+ apiBaseUrl: string;
+ domain: boolean;
+};
+
+export const ENVIRONMENT = new InjectionToken('Environment Configuration');
diff --git a/src/app/features/authentication/authentication.routes.ts b/src/app/features/authentication/authentication.routes.ts
new file mode 100755
index 00000000..4db17039
--- /dev/null
+++ b/src/app/features/authentication/authentication.routes.ts
@@ -0,0 +1,25 @@
+import { LogInComponent } from '~features/authentication/pages/log-in/log-in.component';
+import { RegisterComponent } from '~features/authentication/pages/register/register.component';
+import { noAuthenticationGuard } from '~core/guards/no-authentication.guard';
+import { AUTHENTICATION_PATHS, ROOT_PATHS } from '~core/constants/paths.constants';
+import { authenticationGuard } from '~core/guards/authentication.guard';
+import { MyAccountComponent } from '~features/authentication/pages/my-account/my-account.component';
+
+export const AUTHENTICATION_ROUTES = [
+ {
+ path: AUTHENTICATION_PATHS.logIn,
+ component: LogInComponent,
+ canActivate: [noAuthenticationGuard],
+ },
+ {
+ path: AUTHENTICATION_PATHS.register,
+ component: RegisterComponent,
+ canActivate: [noAuthenticationGuard],
+ },
+ {
+ path: AUTHENTICATION_PATHS.myAccount,
+ component: MyAccountComponent,
+ canActivate: [authenticationGuard],
+ },
+ { path: '**', redirectTo: ROOT_PATHS.error404 },
+];
diff --git a/src/app/features/authentication/pages/log-in/log-in-form.types.ts b/src/app/features/authentication/pages/log-in/log-in-form.types.ts
new file mode 100644
index 00000000..2e3112d4
--- /dev/null
+++ b/src/app/features/authentication/pages/log-in/log-in-form.types.ts
@@ -0,0 +1,11 @@
+import type { FormControl, FormGroup } from '@angular/forms';
+
+export type LogInFormGroup = FormGroup<{
+ email: FormControl;
+ password: FormControl;
+}>;
+
+export type LogInFormState = {
+ isLoading: boolean;
+ isSubmitted: boolean;
+};
diff --git a/src/app/features/authentication/pages/log-in/log-in.component.html b/src/app/features/authentication/pages/log-in/log-in.component.html
new file mode 100755
index 00000000..b00295e0
--- /dev/null
+++ b/src/app/features/authentication/pages/log-in/log-in.component.html
@@ -0,0 +1,72 @@
+
+ ¡Welcome back!
+
+
diff --git a/src/app/features/authentication/pages/log-in/log-in.component.scss b/src/app/features/authentication/pages/log-in/log-in.component.scss
new file mode 100755
index 00000000..c5b271c8
--- /dev/null
+++ b/src/app/features/authentication/pages/log-in/log-in.component.scss
@@ -0,0 +1,36 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$login-form-max-width: 400px;
+
+:host {
+ @include pages.read-page;
+
+ text-align: center;
+
+ .login__form {
+ max-width: $login-form-max-width;
+
+ .form-footer__paragraph {
+ padding-block-end: 1rem;
+ }
+
+ .login__image-container {
+ position: relative;
+
+ .login__image {
+ position: absolute;
+ right: 7px;
+ bottom: -52px;
+ width: 55px;
+ height: auto;
+
+ @include mq.for-tablet-up {
+ right: -6px;
+ bottom: -65px;
+ width: 75px;
+ }
+ }
+ }
+ }
+}
diff --git a/src/app/features/authentication/pages/log-in/log-in.component.ts b/src/app/features/authentication/pages/log-in/log-in.component.ts
new file mode 100755
index 00000000..d00c2cb8
--- /dev/null
+++ b/src/app/features/authentication/pages/log-in/log-in.component.ts
@@ -0,0 +1,122 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
+ inject,
+ signal,
+} from '@angular/core';
+import { FormBuilder, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
+import { RouterModule } from '@angular/router';
+import { NgOptimizedImage } from '@angular/common';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
+import { catchError, EMPTY, finalize } from 'rxjs';
+import { emailValidator } from '~shared/validators/email.validator';
+import { AUTH_URLS, ROOT_URLS } from '~core/constants/urls.constants';
+import { passwordValidator } from '~shared/validators/password.validator';
+import { SlInputIconFocusDirective } from '~shared/directives/sl-input-icon-focus.directive';
+import { LowercaseDirective } from '~shared/directives/lowercase.directive';
+import { TrimDirective } from '~shared/directives/trim.directive';
+import type { ApiErrorResponse } from '~shared/types/api-response.types';
+import { API_ERROR_CODES } from '~core/constants/api-error-codes.constants';
+import { AlertService } from '~core/services/ui/alert.service';
+import { LanguageService } from '~core/services/language.service';
+import { AuthenticationService } from '../../services/authentication.service';
+import type { User } from '~features/authentication/types/user.type';
+import type {
+ LogInFormGroup,
+ LogInFormState,
+} from '~features/authentication/pages/log-in/log-in-form.types';
+import { translations } from '../../../../../locale/translations';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/input/input.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+
+@Component({
+ selector: 'app-log-in',
+ imports: [
+ ReactiveFormsModule,
+ RouterModule,
+ SlInputIconFocusDirective,
+ NgOptimizedImage,
+ LowercaseDirective,
+ TrimDirective,
+ ],
+ templateUrl: './log-in.component.html',
+ styleUrl: './log-in.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class LogInComponent {
+ private readonly alertService = inject(AlertService);
+ private readonly formBuilder = inject(FormBuilder);
+ private readonly authService = inject(AuthenticationService);
+ private readonly languageService = inject(LanguageService);
+ private readonly destroyRef = inject(DestroyRef);
+
+ readonly translations = translations;
+ readonly authUrls = AUTH_URLS;
+ readonly logInForm = this.createLoginForm();
+ readonly formControls = {
+ email: this.logInForm.get('email') as FormControl,
+ password: this.logInForm.get('password') as FormControl,
+ };
+ readonly formState = signal({
+ isLoading: false,
+ isSubmitted: false,
+ });
+
+ sendForm(): void {
+ this.updateFormState({ isSubmitted: true });
+
+ if (this.logInForm.invalid) {
+ this.logInForm.markAllAsTouched();
+ return;
+ }
+
+ this.updateFormState({ isLoading: true });
+ this.authService
+ .logIn(this.logInForm.getRawValue())
+ .pipe(
+ takeUntilDestroyed(this.destroyRef),
+ finalize(() => {
+ this.updateFormState({ isLoading: false });
+ }),
+ catchError((error: ApiErrorResponse) => {
+ this.handleLoginError(error);
+ return EMPTY;
+ }),
+ )
+ .subscribe({
+ next: (user: User) => {
+ this.languageService.navigateWithUserLanguage(user.language, ROOT_URLS.myPokedex);
+ },
+ });
+ }
+
+ private createLoginForm(): LogInFormGroup {
+ return this.formBuilder.group({
+ email: new FormControl('', {
+ validators: [Validators.required, Validators.minLength(4), emailValidator()],
+ nonNullable: true,
+ }),
+ password: new FormControl('', {
+ validators: [Validators.required, Validators.minLength(6), passwordValidator()],
+ nonNullable: true,
+ }),
+ });
+ }
+
+ private handleLoginError(response: ApiErrorResponse): void {
+ const errorMessage =
+ response.error.internalCode === API_ERROR_CODES.INVALID_CREDENTIALS_CODE
+ ? translations.loginCredentialsError
+ : translations.genericErrorAlert;
+ this.alertService.createErrorAlert(errorMessage);
+ }
+
+ private updateFormState(updates: Partial): void {
+ this.formState.update((state) => ({ ...state, ...updates }));
+ }
+}
diff --git a/src/app/features/authentication/pages/my-account/my-account.component.html b/src/app/features/authentication/pages/my-account/my-account.component.html
new file mode 100755
index 00000000..32cb0ad3
--- /dev/null
+++ b/src/app/features/authentication/pages/my-account/my-account.component.html
@@ -0,0 +1,87 @@
+
+ My account
+
+
+
+
+
diff --git a/src/app/features/authentication/pages/my-account/my-account.component.scss b/src/app/features/authentication/pages/my-account/my-account.component.scss
new file mode 100755
index 00000000..52c5d9dc
--- /dev/null
+++ b/src/app/features/authentication/pages/my-account/my-account.component.scss
@@ -0,0 +1,62 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$update-user-form-max-width: 400px;
+$decorative-image-width: 200px;
+
+:host {
+ @include pages.read-page;
+
+ text-align: center;
+
+ .update-user__form {
+ position: relative;
+ max-width: $update-user-form-max-width;
+ padding: var(--spacing-r-4xl) var(--spacing-r-xl);
+ margin-block-end: var(--spacing-r-4xl);
+
+ @include mq.for-tablet-up {
+ padding: var(--spacing-r-4xl) var(--spacing-r-xl);
+ }
+
+ .theme-button__container {
+ position: absolute;
+ top: var(--spacing-r-lg);
+ right: var(--spacing-r-lg);
+ }
+
+ .form-control__container:last-of-type {
+ margin: 0;
+ }
+
+ .favourite-pokemon__container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ .favourite-pokemon__image-container {
+ width: 20%;
+ height: auto;
+
+ @include mq.for-tablet-up {
+ width: 15%;
+ }
+ }
+ }
+ }
+
+ .decorative__container {
+ position: relative;
+
+ .decorative__image {
+ width: $decorative-image-width;
+ height: auto;
+
+ @include mq.for-tablet-landscape-up {
+ position: absolute;
+ right: -55px;
+ bottom: 26px;
+ }
+ }
+ }
+}
diff --git a/src/app/features/authentication/pages/my-account/my-account.component.ts b/src/app/features/authentication/pages/my-account/my-account.component.ts
new file mode 100755
index 00000000..690ebc4d
--- /dev/null
+++ b/src/app/features/authentication/pages/my-account/my-account.component.ts
@@ -0,0 +1,141 @@
+import type { OnInit } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
+ inject,
+ signal,
+} from '@angular/core';
+import { FormBuilder, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
+import { RouterModule } from '@angular/router';
+import { translations } from '../../../../../locale/translations';
+import { UserService } from '~features/authentication/services/user.service';
+import { Language } from '~core/enums/language.enum';
+import { SlInputIconFocusDirective } from '~shared/directives/sl-input-icon-focus.directive';
+import type { User } from '~features/authentication/types/user.type';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { PokemonImageComponent } from '~features/pokemon/components/pokemon-image/pokemon-image.component';
+import { AppSlSelectControlDirective } from '~shared/directives/sl-select-control.directive';
+import { ThemeButtonComponent } from '~shared/components/theme-button/theme-button.component';
+import { NgOptimizedImage } from '@angular/common';
+import { AlertService } from '~core/services/ui/alert.service';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
+import { LanguageService } from '~core/services/language.service';
+import { AUTH_URLS } from '~core/constants/urls.constants';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/input/input.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+import '@shoelace-style/shoelace/dist/components/select/select.js';
+import '@shoelace-style/shoelace/dist/components/option/option.js';
+import { TrimDirective } from '~shared/directives/trim.directive';
+
+@Component({
+ selector: 'app-my-account',
+ imports: [
+ RouterModule,
+ ReactiveFormsModule,
+ SlInputIconFocusDirective,
+ PokemonImageComponent,
+ AppSlSelectControlDirective,
+ ThemeButtonComponent,
+ NgOptimizedImage,
+ TrimDirective,
+ ],
+ templateUrl: './my-account.component.html',
+ styleUrl: './my-account.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class MyAccountComponent implements OnInit {
+ private readonly formBuilder = inject(FormBuilder);
+ private readonly userService = inject(UserService);
+ private readonly pokemonService = inject(PokemonService);
+ private readonly alertService = inject(AlertService);
+ private readonly destroyRef = inject(DestroyRef);
+ private readonly languageService = inject(LanguageService);
+
+ readonly isButtonUpdateUserFormLoading = signal(false);
+ readonly pokemonImage = signal('');
+
+ translations = translations;
+ user: User | undefined;
+ userFavouritePokemon: Pokemon | undefined;
+ name = new FormControl('', [Validators.required, Validators.minLength(2)]);
+ email = new FormControl('');
+ language = new FormControl(Language.EN_US, [Validators.required]);
+ updateUserForm = this.formBuilder.group({
+ name: this.name,
+ language: this.language,
+ email: this.email,
+ });
+
+ ngOnInit() {
+ this.email.disable();
+ this.loadUserInfo();
+ }
+
+ loadUserInfo() {
+ this.userService
+ .getMe()
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: (user: User) => {
+ this.user = user;
+ this.name.setValue(this.user.name);
+ this.email.setValue(this.user.email);
+ this.language.setValue(this.user.language);
+ this.loadPokemonImage();
+ },
+ error: () => {
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ },
+ });
+ }
+
+ loadPokemonImage() {
+ this.pokemonService
+ .getPokemon(this.user!.favouritePokemonId)
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: (pokemon) => {
+ this.userFavouritePokemon = pokemon;
+ this.pokemonImage.set(this.userFavouritePokemon.sprites.front_default);
+ },
+ error: () => {
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ },
+ });
+ }
+
+ sendForm() {
+ this.updateUserForm.markAllAsTouched();
+ if (this.updateUserForm.valid) {
+ this.isButtonUpdateUserFormLoading.set(true);
+ this.updateUser();
+ }
+ }
+
+ updateUser() {
+ const formValue = this.updateUserForm.getRawValue();
+ this.userService
+ .updateUser({
+ name: formValue.name!,
+ language: formValue.language!,
+ })
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: () => {
+ this.alertService.createSuccessAlert(translations.myAccountSuccessAlert);
+ this.languageService.navigateWithUserLanguage(formValue.language!, AUTH_URLS.myAccount);
+ this.isButtonUpdateUserFormLoading.set(false);
+ },
+ error: () => {
+ this.isButtonUpdateUserFormLoading.set(false);
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ },
+ });
+ }
+}
diff --git a/src/app/features/authentication/pages/register/register-form.types.ts b/src/app/features/authentication/pages/register/register-form.types.ts
new file mode 100644
index 00000000..df873aed
--- /dev/null
+++ b/src/app/features/authentication/pages/register/register-form.types.ts
@@ -0,0 +1,28 @@
+import type { FormControl, FormGroup } from '@angular/forms';
+import type { WritableSignal } from '@angular/core';
+
+export type RegisterFormGroup = FormGroup<{
+ name: FormControl;
+ email: FormControl;
+ password: FormControl;
+ confirmPassword: FormControl;
+ favouritePokemonId: FormControl;
+ terms: FormControl;
+}>;
+
+export type RegisterFormValue = {
+ name: string;
+ email: string;
+ password: string;
+ confirmPassword: string;
+ favouritePokemonId: number;
+ terms: boolean;
+};
+
+export type RegisterFormState = {
+ isLoading: boolean;
+ isSubmitted: boolean;
+ isRegistrationCompleted: boolean;
+ passwordsMatch: boolean;
+ isPokemonValidating: WritableSignal;
+};
diff --git a/src/app/features/authentication/pages/register/register.component.html b/src/app/features/authentication/pages/register/register.component.html
new file mode 100755
index 00000000..76ce0e37
--- /dev/null
+++ b/src/app/features/authentication/pages/register/register.component.html
@@ -0,0 +1,151 @@
+
+
+ ¡Register and complete your Pokédex!
+
+
+
diff --git a/src/app/features/authentication/pages/register/register.component.scss b/src/app/features/authentication/pages/register/register.component.scss
new file mode 100755
index 00000000..ae8dc543
--- /dev/null
+++ b/src/app/features/authentication/pages/register/register.component.scss
@@ -0,0 +1,71 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$register-form-max-width: 400px;
+
+:host {
+ @include pages.read-page;
+
+ text-align: center;
+
+ .register__form {
+ position: relative;
+ max-width: $register-form-max-width;
+ padding: var(--spacing-r-7xl) var(--spacing-r-xl);
+ margin-block-start: var(--spacing-r-6xl);
+
+ @include mq.for-tablet-up {
+ padding: var(--spacing-r-8xl) var(--spacing-r-xl);
+ margin-block-start: var(--spacing-r-7xl);
+ }
+
+ .register-form__image {
+ position: absolute;
+ top: -37px;
+ left: -19px;
+ width: 82px;
+ height: auto;
+ opacity: 0;
+ animation: fade-in 5s forwards;
+
+ &:hover {
+ opacity: 1;
+ animation: fade-out 1s forwards;
+ }
+
+ @include mq.for-tablet-up {
+ top: -42px;
+ left: -40px;
+ width: 95px;
+ }
+ }
+
+ .button--primary.pokemon-appear {
+ border-radius: var(--border-radius-max);
+ animation: flash 0.7s infinite;
+ }
+ }
+}
+
+@keyframes fade-in {
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+
+@keyframes flash {
+ 0%,
+ 100% {
+ background-color: white;
+ }
+
+ 50% {
+ background-color: black;
+ }
+}
diff --git a/src/app/features/authentication/pages/register/register.component.ts b/src/app/features/authentication/pages/register/register.component.ts
new file mode 100755
index 00000000..de233ff0
--- /dev/null
+++ b/src/app/features/authentication/pages/register/register.component.ts
@@ -0,0 +1,200 @@
+import type { OnInit } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
+ inject,
+ signal,
+} from '@angular/core';
+import { FormBuilder, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
+import { Router, RouterModule } from '@angular/router';
+import { NgOptimizedImage } from '@angular/common';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
+import { catchError, EMPTY, merge } from 'rxjs';
+import { AUTH_URLS, POKEMON_URLS, ROOT_URLS } from '~core/constants/urls.constants';
+import { emailValidator } from '~shared/validators/email.validator';
+import { passwordValidator } from '~shared/validators/password.validator';
+import { SlInputIconFocusDirective } from '~shared/directives/sl-input-icon-focus.directive';
+import { AppSlCheckboxControlDirective } from '~shared/directives/sl-checkbox-control.directive';
+import { LowercaseDirective } from '~shared/directives/lowercase.directive';
+import { TrimDirective } from '~shared/directives/trim.directive';
+import { AlertService } from '~core/services/ui/alert.service';
+import { AuthenticationService } from '../../services/authentication.service';
+import type {
+ RegisterFormGroup,
+ RegisterFormState,
+ RegisterFormValue,
+} from './register-form.types';
+import { translations } from '../../../../../locale/translations';
+import { PokemonValidator } from '~features/pokemon/validators/pokemon.validator';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/input/input.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+import '@shoelace-style/shoelace/dist/components/checkbox/checkbox.js';
+
+@Component({
+ selector: 'app-register',
+ imports: [
+ RouterModule,
+ ReactiveFormsModule,
+ NgOptimizedImage,
+ SlInputIconFocusDirective,
+ AppSlCheckboxControlDirective,
+ LowercaseDirective,
+ TrimDirective,
+ ],
+ templateUrl: './register.component.html',
+ styleUrl: './register.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class RegisterComponent implements OnInit {
+ private readonly router = inject(Router);
+ private readonly formBuilder = inject(FormBuilder);
+ private readonly authService = inject(AuthenticationService);
+ private readonly alertService = inject(AlertService);
+ private readonly pokemonValidator = inject(PokemonValidator);
+ private readonly destroyRef = inject(DestroyRef);
+
+ private readonly pokemonAppearAudio = new Audio(
+ 'https://res.cloudinary.com/ismaestro/video/upload/v1735370897/angularexampleapp/assets/sounds/battle-effect_gqckbf.mp3',
+ );
+
+ readonly translations = translations;
+ readonly authUrls = AUTH_URLS;
+ readonly registerForm = this.createRegisterForm();
+ readonly formControls = {
+ name: this.registerForm.get('name') as FormControl,
+ email: this.registerForm.get('email') as FormControl,
+ password: this.registerForm.get('password') as FormControl,
+ confirmPassword: this.registerForm.get('confirmPassword') as FormControl,
+ favouritePokemonId: this.registerForm.get('favouritePokemonId') as FormControl,
+ terms: this.registerForm.get('terms') as FormControl,
+ };
+ readonly formState = signal({
+ isLoading: false,
+ isSubmitted: false,
+ isRegistrationCompleted: false,
+ passwordsMatch: false,
+ isPokemonValidating: this.pokemonValidator.isPokemonValidating,
+ });
+
+ constructor() {
+ this.pokemonAppearAudio.volume = 0.1;
+ this.formControls.favouritePokemonId.setErrors({ pokemonName: true });
+ }
+
+ ngOnInit() {
+ merge(this.formControls.password.valueChanges, this.formControls.confirmPassword.valueChanges)
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe(() => {
+ this.checkPasswords();
+ });
+ }
+
+ sendForm(): void {
+ this.updateFormState({ isSubmitted: true });
+
+ if (this.registerForm.invalid) {
+ this.registerForm.markAllAsTouched();
+ return;
+ }
+
+ this.updateFormState({ isLoading: true });
+
+ this.authService
+ .register({
+ ...this.registerForm.getRawValue(),
+ favouritePokemonId: this.pokemonValidator.pokemonId() satisfies number,
+ } as RegisterFormValue)
+ .pipe(
+ takeUntilDestroyed(this.destroyRef),
+ catchError(() => {
+ this.handleRegistrationError();
+ return EMPTY;
+ }),
+ )
+ .subscribe(() => {
+ this.handleRegistrationSuccess();
+ });
+ }
+
+ // eslint-disable-next-line max-lines-per-function
+ private createRegisterForm(): RegisterFormGroup {
+ return this.formBuilder.group({
+ name: new FormControl('', {
+ validators: [Validators.required, Validators.minLength(2)],
+ nonNullable: true,
+ }),
+ email: new FormControl('', {
+ validators: [Validators.required, Validators.minLength(4), emailValidator()],
+ nonNullable: true,
+ }),
+ password: new FormControl('', {
+ validators: [Validators.required, passwordValidator()],
+ updateOn: 'change',
+ nonNullable: true,
+ }),
+ confirmPassword: new FormControl('', {
+ validators: [Validators.required, passwordValidator()],
+ updateOn: 'change',
+ nonNullable: true,
+ }),
+ favouritePokemonId: new FormControl('', {
+ validators: [Validators.required, Validators.minLength(2)],
+ asyncValidators: [this.pokemonValidator.validate.bind(this.pokemonValidator)],
+ updateOn: 'change',
+ nonNullable: true,
+ }),
+ terms: new FormControl(null, {
+ validators: [Validators.requiredTrue],
+ }),
+ });
+ }
+
+ private checkPasswords(): void {
+ if (this.formControls.password.value === this.formControls.confirmPassword.value) {
+ this.updateFormState({ passwordsMatch: true });
+ this.formControls.confirmPassword.setErrors(null);
+ } else {
+ this.updateFormState({
+ passwordsMatch: false,
+ });
+ this.formControls.confirmPassword.setErrors({ notEqual: true });
+ }
+ }
+
+ private handleRegistrationSuccess() {
+ this.pokemonAppearAudio
+ .play()
+ .then(() => {
+ this.updateFormState({ isRegistrationCompleted: true });
+ const ANIMATION_END_TIME = 2300;
+ setTimeout(() => {
+ const LAST_POKEMON_ID = 1025;
+ void this.router.navigate([
+ POKEMON_URLS.detail(String(this.getRandomNumber(1, LAST_POKEMON_ID))),
+ ]);
+ }, ANIMATION_END_TIME);
+ return true;
+ })
+ .catch(() => {
+ void this.router.navigate([ROOT_URLS.myPokedex]);
+ });
+ }
+
+ private getRandomNumber(min: number, max: number): number {
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+ }
+
+ private handleRegistrationError(): void {
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ this.updateFormState({ isLoading: false });
+ }
+
+ private updateFormState(updates: Partial): void {
+ this.formState.update((state) => ({ ...state, ...updates }));
+ }
+}
diff --git a/src/app/features/authentication/services/authentication.service.ts b/src/app/features/authentication/services/authentication.service.ts
new file mode 100755
index 00000000..33b44584
--- /dev/null
+++ b/src/app/features/authentication/services/authentication.service.ts
@@ -0,0 +1,125 @@
+import { inject, Injectable, signal, linkedSignal } from '@angular/core';
+import { LOCAL_STORAGE } from '~core/providers/local-storage';
+import { HttpClient } from '@angular/common/http';
+import type { Observable } from 'rxjs';
+import { map } from 'rxjs';
+import type { LoginRequest } from '~features/authentication/types/login-request.type';
+import type { LoginResponse } from '~features/authentication/types/login-response.type';
+import type {
+ RefreshTokenResponse,
+ RefreshTokenResponseData,
+} from '~features/authentication/types/refresh-token.response.type';
+import type {
+ RegisterResponse,
+ RegisterResponseData,
+} from '~features/authentication/types/register-response.type';
+import { LanguageService } from '~core/services/language.service';
+import type { User } from '~features/authentication/types/user.type';
+import { clearCache } from '~core/interceptors/caching.interceptor';
+import { getEndpoints } from '~core/constants/endpoints.constants';
+import type { RegisterFormValue } from '~features/authentication/pages/register/register-form.types';
+
+export const ACCESS_TOKEN_KEY = 'access-token';
+export const REFRESH_TOKEN_KEY = 'refresh-token';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class AuthenticationService {
+ private readonly endpoints = getEndpoints();
+ private readonly storageService = inject(LOCAL_STORAGE);
+ private readonly httpClient = inject(HttpClient);
+ private readonly languageService = inject(LanguageService);
+
+ private readonly authTokens = signal<{ accessToken?: string; refreshToken?: string }>({
+ accessToken: this.storageService?.getItem(ACCESS_TOKEN_KEY) ?? undefined,
+ refreshToken: this.storageService?.getItem(REFRESH_TOKEN_KEY) ?? undefined,
+ });
+
+ readonly authState = linkedSignal({
+ source: this.authTokens,
+ computation: (tokens) => ({
+ isLoggedIn: !!tokens.accessToken,
+ hasRefreshToken: !!tokens.refreshToken,
+ accessToken: tokens.accessToken,
+ refreshToken: tokens.refreshToken,
+ }),
+ });
+
+ register(registerRequest: RegisterFormValue): Observable {
+ return this.httpClient
+ .post(
+ this.endpoints.auth.v1.authentication,
+ {
+ email: registerRequest.email.toLowerCase(),
+ password: registerRequest.password,
+ name: registerRequest.name,
+ favouritePokemonId: registerRequest.favouritePokemonId,
+ terms: registerRequest.terms,
+ },
+ {
+ headers: {
+ 'Accept-Language': this.languageService.convertLocaleToAcceptLanguage(),
+ },
+ },
+ )
+ .pipe(
+ map((response: RegisterResponse) => {
+ const { data } = response;
+ this.saveTokens(data);
+ return data;
+ }),
+ );
+ }
+
+ logIn(loginRequest: LoginRequest): Observable {
+ return this.httpClient
+ .post(this.endpoints.auth.v1.login, {
+ email: loginRequest.email.toLowerCase(),
+ password: loginRequest.password,
+ })
+ .pipe(
+ map((response: LoginResponse) => {
+ const { data } = response;
+ this.saveTokens(data);
+ return data.user;
+ }),
+ );
+ }
+
+ refreshToken(): Observable {
+ return this.httpClient
+ .post(this.endpoints.auth.v1.refreshToken, {
+ refreshToken: this.storageService?.getItem(REFRESH_TOKEN_KEY),
+ })
+ .pipe(
+ map((response: RefreshTokenResponse) => {
+ const { data } = response;
+ this.saveTokens(data);
+ return data;
+ }),
+ );
+ }
+
+ logOut() {
+ clearCache();
+ this.removeTokens();
+ }
+
+ private saveTokens(data: { accessToken: string; refreshToken?: string }) {
+ this.storageService?.setItem(ACCESS_TOKEN_KEY, data.accessToken);
+ if (data.refreshToken) {
+ this.storageService?.setItem(REFRESH_TOKEN_KEY, data.refreshToken);
+ }
+ this.authTokens.set({
+ accessToken: data.accessToken,
+ refreshToken: data.refreshToken,
+ });
+ }
+
+ private removeTokens() {
+ this.storageService?.removeItem(ACCESS_TOKEN_KEY);
+ this.storageService?.removeItem(REFRESH_TOKEN_KEY);
+ this.authTokens.set({});
+ }
+}
diff --git a/src/app/features/authentication/services/user.service.ts b/src/app/features/authentication/services/user.service.ts
new file mode 100755
index 00000000..bdb77848
--- /dev/null
+++ b/src/app/features/authentication/services/user.service.ts
@@ -0,0 +1,56 @@
+import { inject, Injectable } from '@angular/core';
+import { HttpClient, HttpContext } from '@angular/common/http';
+import type { Observable } from 'rxjs';
+import { map } from 'rxjs';
+import { CACHING_ENABLED } from '~core/interceptors/caching.interceptor';
+import type { GetMeResponse } from '~features/authentication/types/get-me-response.type';
+import type { User } from '~features/authentication/types/user.type';
+import type { UpdateUserRequest } from '~features/authentication/types/update-user-request.type';
+import type { UpdateUserResponse } from '~features/authentication/types/update-user-response.type';
+import type { CatchPokemonRequest } from '~features/authentication/types/catch-pokemon-request.type';
+import type { CatchPokemonResponse } from '~features/authentication/types/catch-pokemon-response.type';
+import { getEndpoints } from '~core/constants/endpoints.constants';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class UserService {
+ private readonly endpoints = getEndpoints();
+ private readonly httpClient = inject(HttpClient);
+
+ getMe(options?: { cache: boolean }): Observable {
+ const { cache = true } = options ?? {};
+ return this.httpClient
+ .get(this.endpoints.user.v1.user, {
+ context: new HttpContext().set(CACHING_ENABLED, cache),
+ })
+ .pipe(
+ map((response: GetMeResponse) => {
+ const { data } = response;
+ return data.user;
+ }),
+ );
+ }
+
+ updateUser(updateUserRequest: UpdateUserRequest): Observable {
+ return this.httpClient
+ .patch(this.endpoints.user.v1.user, updateUserRequest)
+ .pipe(
+ map((response: UpdateUserResponse) => {
+ const { data } = response;
+ return data.user;
+ }),
+ );
+ }
+
+ catchPokemon(catchPokemonRequest: CatchPokemonRequest): Observable {
+ return this.httpClient
+ .post(this.endpoints.user.v1.pokemonCatch, catchPokemonRequest)
+ .pipe(
+ map((response: CatchPokemonResponse) => {
+ const { data } = response;
+ return data.user;
+ }),
+ );
+ }
+}
diff --git a/src/app/features/authentication/types/catch-pokemon-request.type.ts b/src/app/features/authentication/types/catch-pokemon-request.type.ts
new file mode 100644
index 00000000..bd828e9f
--- /dev/null
+++ b/src/app/features/authentication/types/catch-pokemon-request.type.ts
@@ -0,0 +1,3 @@
+export type CatchPokemonRequest = {
+ pokemonId: number;
+};
diff --git a/src/app/features/authentication/types/catch-pokemon-response.type.ts b/src/app/features/authentication/types/catch-pokemon-response.type.ts
new file mode 100644
index 00000000..7a50c5ea
--- /dev/null
+++ b/src/app/features/authentication/types/catch-pokemon-response.type.ts
@@ -0,0 +1,8 @@
+import type { User } from '~features/authentication/types/user.type';
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type CatchPokemonResponseData = {
+ user: User;
+};
+
+export type CatchPokemonResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/get-me-response.type.ts b/src/app/features/authentication/types/get-me-response.type.ts
new file mode 100644
index 00000000..3c04f9d9
--- /dev/null
+++ b/src/app/features/authentication/types/get-me-response.type.ts
@@ -0,0 +1,8 @@
+import type { User } from '~features/authentication/types/user.type';
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type GetMeResponseData = {
+ user: User;
+};
+
+export type GetMeResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/login-request.type.ts b/src/app/features/authentication/types/login-request.type.ts
new file mode 100644
index 00000000..4625b36a
--- /dev/null
+++ b/src/app/features/authentication/types/login-request.type.ts
@@ -0,0 +1,4 @@
+export type LoginRequest = {
+ email: string;
+ password: string;
+};
diff --git a/src/app/features/authentication/types/login-response.type.ts b/src/app/features/authentication/types/login-response.type.ts
new file mode 100644
index 00000000..526c5b32
--- /dev/null
+++ b/src/app/features/authentication/types/login-response.type.ts
@@ -0,0 +1,10 @@
+import type { User } from '~features/authentication/types/user.type';
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type LoginResponseData = {
+ accessToken: string;
+ refreshToken: string;
+ user: User;
+};
+
+export type LoginResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/refresh-token.response.type.ts b/src/app/features/authentication/types/refresh-token.response.type.ts
new file mode 100644
index 00000000..6e760772
--- /dev/null
+++ b/src/app/features/authentication/types/refresh-token.response.type.ts
@@ -0,0 +1,7 @@
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type RefreshTokenResponseData = {
+ accessToken: string;
+};
+
+export type RefreshTokenResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/register-request.type.ts b/src/app/features/authentication/types/register-request.type.ts
new file mode 100644
index 00000000..6f46b9cb
--- /dev/null
+++ b/src/app/features/authentication/types/register-request.type.ts
@@ -0,0 +1,7 @@
+export type RegisterRequest = {
+ email: string;
+ password: string;
+ name: string;
+ favouritePokemonId: number;
+ terms: boolean;
+};
diff --git a/src/app/features/authentication/types/register-response.type.ts b/src/app/features/authentication/types/register-response.type.ts
new file mode 100644
index 00000000..30e8af65
--- /dev/null
+++ b/src/app/features/authentication/types/register-response.type.ts
@@ -0,0 +1,10 @@
+import type { User } from '~features/authentication/types/user.type';
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type RegisterResponseData = {
+ accessToken: string;
+ refreshToken: string;
+ user: User;
+};
+
+export type RegisterResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/update-user-request.type.ts b/src/app/features/authentication/types/update-user-request.type.ts
new file mode 100644
index 00000000..c7b91e32
--- /dev/null
+++ b/src/app/features/authentication/types/update-user-request.type.ts
@@ -0,0 +1,6 @@
+import type { Language } from '~core/enums/language.enum';
+
+export type UpdateUserRequest = {
+ name?: string;
+ language?: Language;
+};
diff --git a/src/app/features/authentication/types/update-user-response.type.ts b/src/app/features/authentication/types/update-user-response.type.ts
new file mode 100644
index 00000000..e3ae9e81
--- /dev/null
+++ b/src/app/features/authentication/types/update-user-response.type.ts
@@ -0,0 +1,8 @@
+import type { User } from '~features/authentication/types/user.type';
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type UpdateUserResponseData = {
+ user: User;
+};
+
+export type UpdateUserResponse = ApiResponse;
diff --git a/src/app/features/authentication/types/user.type.ts b/src/app/features/authentication/types/user.type.ts
new file mode 100644
index 00000000..379fdc94
--- /dev/null
+++ b/src/app/features/authentication/types/user.type.ts
@@ -0,0 +1,12 @@
+import type { Language } from '~core/enums/language.enum';
+
+export type User = {
+ id: string;
+ createdAt: string;
+ updatedAt: string;
+ email: string;
+ name: string;
+ language: Language;
+ favouritePokemonId: number;
+ caughtPokemonIds: number[];
+};
diff --git a/src/app/features/home/home.component.html b/src/app/features/home/home.component.html
new file mode 100755
index 00000000..23005ce2
--- /dev/null
+++ b/src/app/features/home/home.component.html
@@ -0,0 +1,133 @@
+
+
+
+ Angular
+ Example App
+
+
+
+
+ This project is a modern, real-world application designed as a foundation for creating new
+ Angular-based projects and also a practical resource for learning.
+
+
+
+ It comes with features like internationalization, standalone components, a more logical folder
+ structure, etc, making it a great starting point for building scalable Angular apps.
+
+
+
+ Whether you’re looking for a boilerplate or a solid base project, this setup is designed to help
+ you create clean, maintainable code with ease.
+
+
+
+ This project leverages the PokeAPI to provide fun and practical examples, making it
+ easier to understand key concepts in Angular development. By using data from the Pokémon
+ universe, it offers a familiar and engaging way to showcase features like fetching data,
+ handling API calls, and displaying dynamic content.
+
+
+
+
+
+
+ @defer (on viewport) {
+ Key features
+
+
+
+
+ Angular Signals
+
+
+ Unlock reactivity with Angular Signals.
+
+ Signals provide a declarative way to manage state and reactivity in your application,
+ simplifying data flow and improving performance.
+
+
+ Learn more about Signals
+
+
+
+ Internationalization
+
+
+ Build apps for a global audience.
+
+ Angular’s internationalization tools make it seamless to localize your app, handle
+ translations, and format dates, numbers, and currencies for any locale.
+
+
+ Explore Internationalization
+
+
+
+ Reactive Forms
+
+
+ Effortless form handling and validation.
+
+ Reactive Forms empower you to create robust, dynamic forms with a model-driven approach,
+ making validation, dynamic updates, and testing a breeze.
+
+
+ Start with Reactive Forms
+
+
+
+ Animations
+
+
+ Bring your UI to life with Angular Animations.
+
+ Create smooth transitions and engaging effects with Angular’s powerful animation API,
+ making your application visually appealing and interactive.
+
+
+ Discover Angular Animations
+
+
+
+
+
+
+
+
+
+
Users seeing this page: {{ activeUsersResource.value().activeUsers }}
+
+ } @placeholder {
+
+ }
+
diff --git a/src/app/features/home/home.component.scss b/src/app/features/home/home.component.scss
new file mode 100755
index 00000000..2255c856
--- /dev/null
+++ b/src/app/features/home/home.component.scss
@@ -0,0 +1,126 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$separator-image-width: 130px;
+$separator-margin: 0 10px 35px 0;
+
+:host {
+ @include pages.read-page;
+
+ .home__heading-kbd {
+ margin: var(--spacing-r-md) 0;
+ }
+
+ .separator__container {
+ text-align: center;
+ border-bottom: 1px solid var(--septenary-contrast);
+
+ img {
+ width: $separator-image-width;
+ height: auto;
+ margin: $separator-margin;
+ }
+ }
+
+ .cards__grid-container {
+ display: grid;
+ grid-template-columns: repeat(1, 1fr);
+ gap: var(--spacing-r-xxl);
+ margin-block: var(--spacing-r-xl);
+ margin-block-end: var(--spacing-r-5xl);
+
+ @include mq.for-tablet-portrait-up {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ }
+
+ .real-time__container {
+ margin-block-start: var(--spacing-r-5xl);
+
+ p {
+ text-align: center;
+ }
+ }
+
+ .decorative-image__container-1 {
+ text-align: right;
+
+ img {
+ width: 230px;
+ height: auto;
+ }
+
+ @media (width >= 1200px) {
+ position: absolute;
+ right: 10px;
+ bottom: 80px;
+
+ img {
+ width: 200px;
+ height: auto;
+ }
+ }
+
+ @media (width >= 1300px) {
+ img {
+ width: 250px;
+ }
+ }
+
+ @media (width >= 1330px) {
+ right: 30px;
+
+ img {
+ width: 250px;
+ }
+ }
+
+ @media (width >= 1490px) {
+ img {
+ width: 330px;
+ }
+ }
+ }
+
+ .decorative-image__container-2 {
+ text-align: left;
+
+ img {
+ width: 200px;
+ height: auto;
+ }
+
+ @media (width >= 1200px) {
+ position: absolute;
+ bottom: -300px;
+ left: 10px;
+
+ img {
+ width: 180px;
+ height: auto;
+ }
+ }
+
+ @media (width >= 1300px) {
+ left: 40px;
+
+ img {
+ width: 220px;
+ }
+ }
+
+ @media (width >= 1330px) {
+ img {
+ width: 220px;
+ }
+ }
+
+ @media (width >= 1490px) {
+ left: 60px;
+
+ img {
+ width: 270px;
+ }
+ }
+ }
+}
diff --git a/src/app/features/home/home.component.ts b/src/app/features/home/home.component.ts
new file mode 100755
index 00000000..7f479820
--- /dev/null
+++ b/src/app/features/home/home.component.ts
@@ -0,0 +1,31 @@
+import { ChangeDetectionStrategy, Component, effect, inject } from '@angular/core';
+import { NgOptimizedImage } from '@angular/common';
+import { DecorativeHeaderComponent } from '~shared/components/decorative-header/decorative-header.component';
+import { CardComponent } from '~shared/components/card/card.component';
+import { interval } from 'rxjs';
+import { AnalyticsService } from '~core/services/analytics.service';
+
+@Component({
+ selector: 'app-home',
+ imports: [DecorativeHeaderComponent, NgOptimizedImage, CardComponent],
+ standalone: true,
+ templateUrl: './home.component.html',
+ styleUrl: './home.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class HomeComponent {
+ private readonly analyticsService = inject(AnalyticsService);
+ readonly activeUsersResource = this.analyticsService.getRealtimeUsersResource();
+
+ constructor() {
+ this.activeUsersResource.reload();
+ effect(() => {
+ const sub = interval(5000).subscribe(() => {
+ this.activeUsersResource.reload();
+ });
+ return () => {
+ sub.unsubscribe();
+ };
+ });
+ }
+}
diff --git a/src/app/features/pokemon/components/catch-animation/catch-animation.component.html b/src/app/features/pokemon/components/catch-animation/catch-animation.component.html
new file mode 100755
index 00000000..43a12234
--- /dev/null
+++ b/src/app/features/pokemon/components/catch-animation/catch-animation.component.html
@@ -0,0 +1,22 @@
+@if (pokemonState() !== 'disappear') {
+
+
+
+}
+
+
+
diff --git a/src/app/features/pokemon/components/catch-animation/catch-animation.component.scss b/src/app/features/pokemon/components/catch-animation/catch-animation.component.scss
new file mode 100644
index 00000000..746c715b
--- /dev/null
+++ b/src/app/features/pokemon/components/catch-animation/catch-animation.component.scss
@@ -0,0 +1,22 @@
+@use 'base/media-queries' as mq;
+
+:host {
+ .pokemon__container {
+ position: absolute;
+ right: 45px;
+ bottom: -105px;
+
+ @include mq.for-tablet-up {
+ right: 130px;
+ bottom: -170px;
+ }
+ }
+
+ .pokeball__image {
+ position: absolute;
+ top: 161px;
+ left: 96px;
+ width: 20px;
+ height: auto;
+ }
+}
diff --git a/src/app/features/pokemon/components/catch-animation/catch-animation.component.ts b/src/app/features/pokemon/components/catch-animation/catch-animation.component.ts
new file mode 100755
index 00000000..65100f98
--- /dev/null
+++ b/src/app/features/pokemon/components/catch-animation/catch-animation.component.ts
@@ -0,0 +1,115 @@
+import type { OnInit } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ DOCUMENT,
+ effect,
+ inject,
+ input,
+ signal,
+ type WritableSignal,
+} from '@angular/core';
+import { NgOptimizedImage, NgStyle } from '@angular/common';
+import { BattleEvent } from '~features/pokemon/components/pokedex/enums/pokedex-action.enum';
+import { catchAnimations } from '~features/pokemon/components/catch-animation/catch.animations';
+
+enum PokeballState {
+ Idle = 'idle',
+ Catching = 'catching',
+ Falling = 'falling',
+ Shaking = 'shaking',
+ Shining = 'shining',
+}
+
+enum PokemonState {
+ Idle = 'idle',
+ Shining = 'shining',
+ Disappear = 'disappear',
+}
+
+@Component({
+ selector: 'app-catch-animation',
+ imports: [NgOptimizedImage, NgStyle],
+ templateUrl: './catch-animation.component.html',
+ styleUrl: './catch-animation.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ host: {
+ '(window:resize)': 'loadAnimationPositions()',
+ },
+ animations: [catchAnimations],
+})
+export class CatchAnimationComponent implements OnInit {
+ private readonly document = inject(DOCUMENT);
+
+ readonly pokemonBattleEvent = input.required>();
+ readonly pokeballStartingPoint = signal('');
+ readonly pokeballPokemonXPoint = signal('');
+ readonly pokeballPokemonYPoint = signal('');
+ readonly pokeballGroundYPoint = signal('');
+ readonly pokeballState = signal(PokeballState.Idle);
+ readonly pokemonState = signal(PokemonState.Idle);
+
+ constructor() {
+ effect(() => {
+ const pokemonBattleEvent = this.pokemonBattleEvent();
+ if (pokemonBattleEvent() === BattleEvent.THROW_POKEBALL) {
+ this.startCatchAnimation();
+ }
+ if (
+ pokemonBattleEvent() === BattleEvent.POKEMON_LOADED ||
+ pokemonBattleEvent() === BattleEvent.RESET_BATTLE
+ ) {
+ this.pokeballState.set(PokeballState.Idle);
+ this.pokemonState.set(PokemonState.Idle);
+ }
+ });
+ }
+
+ ngOnInit() {
+ this.loadAnimationPositions();
+ }
+
+ startCatchAnimation() {
+ this.pokeballState.set(PokeballState.Catching);
+
+ setTimeout(() => {
+ this.pokemonState.set(PokemonState.Shining);
+ }, 500);
+ setTimeout(() => {
+ this.pokemonState.set(PokemonState.Disappear);
+ }, 1500);
+ setTimeout(() => {
+ this.pokeballState.set(PokeballState.Falling);
+ }, 1700);
+ setTimeout(() => {
+ this.pokeballState.set(PokeballState.Shaking);
+ }, 3000);
+ setTimeout(() => {
+ this.pokeballState.set(PokeballState.Shining);
+ this.pokemonBattleEvent().set(BattleEvent.CATCH_ANIMATION_ENDED);
+ }, 6500);
+ }
+
+ loadAnimationPositions() {
+ const innerWidth = this.document.defaultView?.innerWidth;
+ if (innerWidth && innerWidth <= 768) {
+ this.setMobilePositions();
+ } else {
+ this.setDesktopPositions();
+ }
+ }
+
+ private setMobilePositions() {
+ this.pokeballStartingPoint.set('0px, -80px');
+ this.pokeballPokemonXPoint.set('105px');
+ this.pokeballPokemonYPoint.set('-140px');
+ this.pokeballGroundYPoint.set('-80px');
+ }
+
+ private setDesktopPositions() {
+ this.pokeballStartingPoint.set('80px, 15px');
+ this.pokeballPokemonXPoint.set('260px');
+ this.pokeballPokemonYPoint.set('-100px');
+ this.pokeballGroundYPoint.set('-10px');
+ }
+}
diff --git a/src/app/features/pokemon/components/catch-animation/catch.animations.ts b/src/app/features/pokemon/components/catch-animation/catch.animations.ts
new file mode 100644
index 00000000..9a2156f2
--- /dev/null
+++ b/src/app/features/pokemon/components/catch-animation/catch.animations.ts
@@ -0,0 +1,193 @@
+import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
+
+/* eslint-disable @typescript-eslint/no-deprecated */
+export const catchAnimations = [
+ trigger('pokeballAnimation', [
+ state(
+ 'idle',
+ style({
+ opacity: 0,
+ transform: `translate(var(--pokeball-starting-point))`,
+ filter: 'brightness(1)',
+ }),
+ ),
+ state(
+ 'catching',
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-pokemon-y-point))`,
+ }),
+ ),
+ state(
+ 'falling',
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point))`,
+ }),
+ ),
+ state(
+ 'shaking',
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(0) rotate(0deg)`,
+ }),
+ ),
+ state(
+ 'shining',
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point))`,
+ filter: 'brightness(2) scale(1.1)',
+ }),
+ ),
+ transition('idle => catching', [
+ animate(
+ '1s ease-in-out',
+ keyframes([
+ style({ transform: `translate(var(--pokeball-starting-point))`, offset: 0 }),
+ style({ opacity: 0.5, offset: 0.6 }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-pokemon-y-point))`,
+ offset: 1,
+ }),
+ ]),
+ ),
+ ]),
+ transition('catching => falling', [
+ animate(
+ '0.3s ease-out',
+ keyframes([
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-pokemon-y-point))`,
+ offset: 0,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point))`,
+ offset: 1,
+ }),
+ ]),
+ ),
+ ]),
+ transition('falling => shaking', [
+ animate(
+ '3s ease-out',
+ keyframes([
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(0) rotate(0deg)`,
+ offset: 0,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(-3px) rotate(-10deg)`,
+ offset: 0.1,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(3px) rotate(10deg)`,
+ offset: 0.2,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(-3px) rotate(-5deg)`,
+ offset: 0.3,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(0) rotate(0deg)`,
+ offset: 0.35,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(0) rotate(0deg)`,
+ offset: 0.6,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(-3px) rotate(-10deg)`,
+ offset: 0.7,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(3px) rotate(10deg)`,
+ offset: 0.8,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(-3px) rotate(-5deg)`,
+ offset: 0.9,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) translateX(0) rotate(0deg)`,
+ offset: 1,
+ }),
+ ]),
+ ),
+ ]),
+ transition('shaking => shining', [
+ animate(
+ '2s ease-out',
+ keyframes([
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) scale(1)`,
+ filter: 'brightness(1)',
+ offset: 0,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) scale(1.1)`,
+ filter: 'brightness(1.5)',
+ offset: 0.2,
+ }),
+ style({
+ transform: `translate(var(--pokeball-pokemon-x-point), var(--pokeball-ground-y-point)) scale(1)`,
+ filter: 'brightness(1)',
+ offset: 1,
+ }),
+ ]),
+ ),
+ ]),
+ ]),
+ trigger('pokemonAnimation', [
+ state(
+ 'idle',
+ style({
+ opacity: 1,
+ filter: 'brightness(1)',
+ transform: 'scale(1) translate(0, 0)',
+ }),
+ ),
+ state(
+ 'shining',
+ style({
+ opacity: 1,
+ filter: 'brightness(2)',
+ }),
+ ),
+ state(
+ 'disappear',
+ style({
+ opacity: 1,
+ transform: 'scale(1) translate(0, 0)',
+ }),
+ ),
+ transition('idle => shining', [
+ animate(
+ '2s ease-in-out',
+ keyframes([
+ style({ filter: 'brightness(1.2)', offset: 0.3 }),
+ style({ filter: 'brightness(2)', offset: 0.6 }),
+ style({ filter: 'brightness(1.5)', offset: 1 }),
+ ]),
+ ),
+ ]),
+ transition('shining => disappear', [
+ animate(
+ '1s ease-out',
+ keyframes([
+ style({
+ opacity: 1,
+ transform: 'scale(1) translate(0, 0)',
+ offset: 0,
+ }),
+ style({
+ opacity: 0.7,
+ transform: 'scale(0.6) translate(0, -200px)',
+ offset: 0.5,
+ }),
+ style({
+ opacity: 0,
+ transform: 'scale(0) translate(0, -300px)',
+ offset: 1,
+ }),
+ ]),
+ ),
+ ]),
+ ]),
+];
diff --git a/src/app/features/pokemon/components/pokedex/enums/pokedex-action.enum.ts b/src/app/features/pokemon/components/pokedex/enums/pokedex-action.enum.ts
new file mode 100644
index 00000000..2f514aee
--- /dev/null
+++ b/src/app/features/pokemon/components/pokedex/enums/pokedex-action.enum.ts
@@ -0,0 +1,6 @@
+export enum BattleEvent {
+ RESET_BATTLE = 'RESET_BATTLE',
+ POKEMON_LOADED = 'POKEMON_LOADED',
+ THROW_POKEBALL = 'THROW_POKEBALL',
+ CATCH_ANIMATION_ENDED = 'CATCH_ANIMATION_ENDED',
+}
diff --git a/src/app/features/pokemon/components/pokedex/pokedex-pads.component.scss b/src/app/features/pokemon/components/pokedex/pokedex-pads.component.scss
new file mode 100644
index 00000000..9d0cf600
--- /dev/null
+++ b/src/app/features/pokemon/components/pokedex/pokedex-pads.component.scss
@@ -0,0 +1,201 @@
+@use 'base/media-queries' as mq;
+
+$pokedex-red: #cd112f;
+$pokedex-black: #000;
+$pokedex-dark-gray: #222;
+$pokedex-light-gray: #dedede;
+$pokedex-green: #52af5f;
+$pokedex-blue: #08cbf8;
+$pokedex-white: #fff;
+$pokedex-text-dark: #032d28;
+
+:host {
+ .pokedex__joystick-container {
+ position: absolute;
+ left: 0;
+ z-index: 1;
+ width: 100px;
+ height: 100px;
+ margin-top: -130px;
+ margin-left: 300px;
+ content: ' ';
+ background: $pokedex-dark-gray;
+ border: var(--spacing-xs) solid $pokedex-black;
+ border-top-right-radius: 50px;
+ border-bottom-right-radius: 50px;
+ transition: left 1s ease;
+
+ @include mq.for-phone-only {
+ display: none;
+ }
+
+ .pokedex__joystick-tracker {
+ width: 90px;
+ height: 90px;
+ margin: 3px;
+ background: $pokedex-light-gray;
+ border: var(--spacing-xs) solid $pokedex-black;
+ border-radius: 50%;
+
+ &::before,
+ &::after {
+ position: absolute;
+ content: ' ';
+ }
+
+ &::before {
+ width: 70px;
+ height: 70px;
+ margin-top: var(--spacing-md);
+ margin-left: var(--spacing-md);
+ border: 2px solid $pokedex-dark-gray;
+ border-radius: 50%;
+ }
+
+ &::after {
+ width: 10px;
+ height: 10px;
+ margin-top: -2px;
+ margin-left: 20px;
+ background: $pokedex-dark-gray;
+ border-radius: 50%;
+ }
+ }
+
+ .pokedex__joystick-button {
+ width: 50px;
+ height: 50px;
+ margin-top: 18px;
+ margin-left: 18px;
+ background: $pokedex-blue;
+ border: var(--spacing-xs) solid $pokedex-dark-gray;
+ border-radius: 50%;
+ }
+ }
+
+ .pokedex__top-data-container,
+ .pokedex__bottom-data-container {
+ height: 100px;
+ padding: var(--spacing-md);
+ margin: 12px 12px 12px 34px;
+ border: var(--spacing-sm) solid $pokedex-black;
+ border-radius: var(--spacing-md);
+ }
+
+ .pokedex__top-data-container {
+ display: flex;
+ flex-direction: row;
+ gap: var(--spacing-lg);
+ margin-left: var(--spacing-3xl);
+ color: $pokedex-text-dark;
+ background: $pokedex-white;
+
+ .pokedex__pokemon-image-container {
+ display: flex;
+ align-items: center;
+ max-width: 60px;
+
+ .pokedex__pokemon-image {
+ width: 100px;
+ height: auto;
+ }
+ }
+
+ .pokedex__top-text-container {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+
+ .pokemon__name-text {
+ font-weight: var(--font-weight-bold);
+ }
+
+ p {
+ margin-bottom: var(--spacing-r-sm);
+ font-size: var(--font-size-xs);
+ font-weight: var(--font-weight-light);
+ line-height: var(--line-height-xs);
+ }
+ }
+ }
+
+ .pokedex__bottom-data-container {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: center;
+ color: white;
+ background: $pokedex-text-dark;
+
+ p {
+ margin-bottom: var(--spacing-md);
+ font-size: var(--font-size-xs);
+ font-weight: var(--font-weight-light);
+ line-height: var(--line-height-md);
+ text-align: center;
+ }
+
+ .pokedex-actions__container {
+ width: auto;
+ padding: 0 var(--spacing-xxl);
+ text-align: center;
+ }
+ }
+
+ .pokedex__pad-container {
+ width: 66px;
+ background: $pokedex-dark-gray;
+ border-right: var(--spacing-sm) solid $pokedex-black;
+ border-top-left-radius: 75px;
+ border-bottom-left-radius: 75px;
+
+ &::before {
+ position: absolute;
+ width: 12px;
+ height: 6px;
+ margin-top: 70px;
+ content: ' ';
+ background: $pokedex-green;
+ border: var(--spacing-xs) solid $pokedex-black;
+ border-left-width: 0;
+ }
+
+ .pokedex__pad {
+ position: absolute;
+ width: 85px;
+ height: 85px;
+ margin-top: 30px;
+ margin-left: 17px;
+ background: $pokedex-light-gray;
+ border: var(--spacing-xs) solid $pokedex-black;
+ border-right-width: 0;
+ border-top-left-radius: 41px;
+ border-bottom-left-radius: 41px;
+
+ &::before,
+ &::after {
+ position: absolute;
+ width: 50px;
+ height: 15px;
+ margin-top: 35px;
+ margin-left: var(--spacing-xxl);
+ content: ' ';
+ background: $pokedex-dark-gray;
+ }
+
+ &::after {
+ transform: rotate(90deg);
+ }
+ }
+
+ .pokedex__pad-circle {
+ position: absolute;
+ width: 65px;
+ height: 65px;
+ margin-top: 40px;
+ margin-left: 30px;
+ border: var(--spacing-xs) solid $pokedex-light-gray;
+ border-radius: 50%;
+ }
+ }
+}
diff --git a/src/app/features/pokemon/components/pokedex/pokedex.component.html b/src/app/features/pokemon/components/pokedex/pokedex.component.html
new file mode 100644
index 00000000..827c772b
--- /dev/null
+++ b/src/app/features/pokemon/components/pokedex/pokedex.component.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+ @if (pokemon()) {
+
{{pokemon()?.name | firstTitleCase}}
+
N.º: {{pokemon()?.order}}
+
Height: {{pokemon()?.height}} dm
+
Weight: {{pokemon()?.weight}} hg
+ }
+
+
+
+
+
+
+
+
+
+ @if (userHasCaught()) {
+
+ 🎯 Nice catch, {{user?.name}}! You’re one step closer to being a Pokémon Master—keep it
+ up! 🌟
+
+ } @else if (userHasPokemon()) {
+
Already got this one, keep going!
+ } @else {
+
Still gotta catch 'em all, this one's missing from your Pokédex!
+
+
+ POKEBALL
+
+
+ }
+
+
+
+
diff --git a/src/app/features/pokemon/components/pokedex/pokedex.component.scss b/src/app/features/pokemon/components/pokedex/pokedex.component.scss
new file mode 100644
index 00000000..4489c26f
--- /dev/null
+++ b/src/app/features/pokemon/components/pokedex/pokedex.component.scss
@@ -0,0 +1,117 @@
+@use 'base/media-queries' as mq;
+
+$pokedex-red: #cd112f;
+$pokedex-black: #000;
+$pokedex-dark-gray: #222;
+$pokedex-light-gray: #dedede;
+$pokedex-green: #52af5f;
+$pokedex-blue: #08cbf8;
+$pokedex-white: #fff;
+$pokedex-text-dark: #032d28;
+
+:host {
+ .pokedex__container {
+ position: relative;
+
+ &.closed {
+ .pokedex__flap-container {
+ transform: rotateX(180deg) translate(0, -14px);
+ }
+
+ .pokedex__joystick-container {
+ left: -100px;
+ }
+
+ .pokedex__pad-container::before {
+ background: $pokedex-black;
+ }
+ }
+
+ .pokedex__separator,
+ .pokedex__bottom-part-container {
+ background: $pokedex-red;
+ border: var(--spacing-xs) solid $pokedex-black;
+ }
+
+ .pokedex__flap-container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ transform: rotateX(360deg);
+ transform-origin: 0 100%;
+ transform-style: preserve-3d;
+ transition: transform 1s;
+
+ figure {
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ backface-visibility: hidden;
+ }
+
+ .pokedex__flap-front,
+ .pokedex__flap-back {
+ background: $pokedex-red;
+ border: var(--spacing-xs) solid $pokedex-black;
+ }
+
+ .pokedex__flap-front {
+ border-bottom-right-radius: var(--spacing-3xl);
+ border-bottom-left-radius: var(--spacing-3xl);
+ transform: rotateX(180deg);
+ }
+
+ .pokedex__flap-back {
+ border-top-left-radius: 10px;
+ border-top-right-radius: var(--spacing-3xl);
+
+ &::before {
+ position: absolute;
+ width: 50px;
+ height: 100px;
+ margin-top: 23px;
+ margin-left: -52px;
+ content: ' ';
+ background: $pokedex-red;
+ border: var(--spacing-sx) solid $pokedex-black;
+ border-right-width: 0;
+ border-top-left-radius: 50px;
+ border-bottom-left-radius: 50px;
+ }
+ }
+ }
+
+ .pokedex__top-part-container {
+ position: relative;
+ z-index: 11;
+ width: 230px;
+ height: 150px;
+ margin-left: 70px;
+ cursor: pointer;
+ perspective: 800px;
+ }
+
+ .pokedex__separator {
+ position: relative;
+ z-index: 10;
+ width: 230px;
+ height: 10px;
+ margin-left: 70px;
+ border-bottom-width: 0;
+ }
+
+ .pokedex__bottom-part-container {
+ position: relative;
+ z-index: 10;
+ display: flex;
+ flex-direction: row;
+ width: 300px;
+ height: 150px;
+ border-top-left-radius: 75px;
+ border-bottom-right-radius: var(--spacing-3xl);
+ border-bottom-left-radius: 75px;
+ }
+ }
+}
diff --git a/src/app/features/pokemon/components/pokedex/pokedex.component.ts b/src/app/features/pokemon/components/pokedex/pokedex.component.ts
new file mode 100644
index 00000000..9a78793e
--- /dev/null
+++ b/src/app/features/pokemon/components/pokedex/pokedex.component.ts
@@ -0,0 +1,154 @@
+import type { OnInit, WritableSignal } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
+ effect,
+ inject,
+ input,
+ signal,
+} from '@angular/core';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { PokemonImageComponent } from '~features/pokemon/components/pokemon-image/pokemon-image.component';
+import { FirstTitleCasePipe } from '~shared/pipes/first-title-case.pipe';
+import { UserService } from '~features/authentication/services/user.service';
+import type { User } from '~features/authentication/types/user.type';
+import { BattleEvent } from '~features/pokemon/components/pokedex/enums/pokedex-action.enum';
+import { AlertService } from '~core/services/ui/alert.service';
+import { translations } from '../../../../../locale/translations';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
+import { AuthenticationService } from '~features/authentication/services/authentication.service';
+
+@Component({
+ selector: 'app-pokedex',
+ imports: [PokemonImageComponent, FirstTitleCasePipe],
+ templateUrl: './pokedex.component.html',
+ styleUrls: ['./pokedex.component.scss', './pokedex-pads.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class PokedexComponent implements OnInit {
+ private readonly userService = inject(UserService);
+ private readonly alertService = inject(AlertService);
+ private readonly destroyRef = inject(DestroyRef);
+ private readonly authenticationService = inject(AuthenticationService);
+
+ readonly pokemonBattleEvent = input.required>();
+ readonly pokemon = input();
+ readonly isPokedexClosed = signal(true);
+ readonly pokemonImage = signal('');
+ readonly userHasCaught = signal(false);
+ readonly userHasPokemon = signal(true);
+ readonly isPokedexButtonDisabled = signal(false);
+ readonly isUserLoggedIn = () => this.authenticationService.authState().isLoggedIn;
+
+ translations = translations;
+ user: User | undefined;
+ updatedUser: User | undefined;
+
+ constructor() {
+ effect(() => {
+ this.updatePokemonState();
+ this.handleBattleEvents();
+ });
+ }
+
+ ngOnInit() {
+ const pokemonValue = this.pokemon();
+ if (pokemonValue) {
+ if (this.isUserLoggedIn()) {
+ this.userService
+ .getMe({ cache: false })
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: (user: User) => {
+ this.user = user;
+ this.pokemonImage.set(pokemonValue.sprites.front_default);
+ this.userHasPokemon.set(user.caughtPokemonIds.includes(pokemonValue.id));
+ setTimeout(() => {
+ this.isPokedexClosed.set(false);
+ }, 300);
+ },
+ error: () => {
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ },
+ });
+ } else {
+ this.userHasPokemon.set(false);
+ this.pokemonImage.set(pokemonValue.sprites.front_default);
+ setTimeout(() => {
+ this.isPokedexClosed.set(false);
+ }, 300);
+ }
+ }
+ }
+
+ togglePokedex() {
+ this.isPokedexClosed.set(!this.isPokedexClosed());
+ }
+
+ notifyBattlefield() {
+ this.isPokedexButtonDisabled.set(true);
+ (this.pokemonBattleEvent() as unknown as WritableSignal).set(
+ BattleEvent.THROW_POKEBALL,
+ );
+ }
+
+ catchPokemon() {
+ this.userHasCaught.set(false);
+ const pokemonId = this.pokemon()?.id;
+ if (pokemonId) {
+ this.userService
+ .catchPokemon({ pokemonId })
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: (user) => {
+ this.notifyBattlefield();
+ this.updatedUser = user;
+ },
+ });
+ }
+ }
+
+ private updatePokemonState(): void {
+ const pokemonValue = this.pokemon();
+ if (pokemonValue) {
+ this.pokemonImage.set(pokemonValue.sprites.front_default);
+ this.userHasPokemon.set(this.user?.caughtPokemonIds.includes(pokemonValue.id) ?? false);
+ }
+ }
+
+ private handleBattleEvents(): void {
+ const event = this.pokemonBattleEvent()();
+ switch (event as unknown as BattleEvent) {
+ case BattleEvent.CATCH_ANIMATION_ENDED: {
+ this.handleCatchAnimationEnded();
+ break;
+ }
+ case BattleEvent.RESET_BATTLE: {
+ this.handleResetBattle();
+ break;
+ }
+ default: {
+ break;
+ }
+ }
+ }
+
+ private handleCatchAnimationEnded(): void {
+ if (this.updatedUser) {
+ this.user = this.updatedUser;
+ this.userHasCaught.set(true);
+ }
+ }
+
+ private handleResetBattle(): void {
+ this.userHasCaught.set(false);
+ this.isPokedexButtonDisabled.set(false);
+ const pokemonValue = this.pokemon();
+ const pokemonId = pokemonValue?.id;
+ const caughtPokemonIds = this.user?.caughtPokemonIds ?? [];
+ this.userHasPokemon.set(pokemonId ? caughtPokemonIds.includes(pokemonId) : true);
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.html b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.html
new file mode 100755
index 00000000..5e236716
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.html
@@ -0,0 +1,48 @@
+
diff --git a/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.scss b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.scss
new file mode 100644
index 00000000..879fd9a7
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.scss
@@ -0,0 +1,101 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$battle-terrain-container-border-color: #444;
+
+:host {
+ .pokemon-battlefield__container {
+ position: relative;
+ width: 285px;
+ height: 160px;
+ background-image: url('https://res.cloudinary.com/ismaestro/image/upload/angularexampleapp/assets/images/battle-grass.png');
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ border: 3px solid $battle-terrain-container-border-color;
+ border-radius: var(--border-radius-lg);
+ box-shadow: 0 var(--spacing-sm) var(--spacing-md) rgb(0 0 0 / 30%);
+
+ @include mq.for-tablet-up {
+ width: 512px;
+ height: 288px;
+ }
+
+ .pokemon-battlefield__trainer-container {
+ .pokemon-battlefield__trainer-image {
+ position: absolute;
+ bottom: 0;
+ left: 70px;
+ width: 45px;
+ height: auto;
+ opacity: 0;
+ transition: opacity 1s ease-in-out;
+
+ @include mq.for-tablet-up {
+ bottom: 0;
+ left: 150px;
+ width: 65px;
+ }
+ }
+
+ .trainer-1 {
+ opacity: 1;
+ }
+
+ &.animate .trainer-1 {
+ animation:
+ trainer-throw-pokeball 0s 0.3s forwards,
+ stay-visible 0s 0.9s forwards;
+ }
+
+ &.animate .trainer-2 {
+ animation: trainer-throw-pokeball 0.3s 0.4s forwards;
+ }
+
+ &.animate .trainer-3 {
+ animation: trainer-throw-pokeball 0.3s 0.4s forwards;
+ }
+
+ &.animate .trainer-4 {
+ animation: trainer-throw-pokeball 0.3s 0.6s forwards;
+ }
+ }
+
+ .pokemon-battlefield__pokemon-image-container {
+ opacity: 0;
+ transform: translateY(30px);
+ transition:
+ opacity 0.5s ease-in-out,
+ transform 0.5s ease-in-out;
+
+ &.loaded {
+ opacity: 1;
+ transform: translateY(-5px);
+ }
+ }
+ }
+}
+
+@keyframes trainer-throw-pokeball {
+ 0% {
+ opacity: 1;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+}
+
+@keyframes stay-visible {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.ts b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.ts
new file mode 100755
index 00000000..1819a127
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component.ts
@@ -0,0 +1,58 @@
+import type { OnInit, WritableSignal } from '@angular/core';
+import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { PokemonImageComponent } from '~features/pokemon/components/pokemon-image/pokemon-image.component';
+import { NgOptimizedImage } from '@angular/common';
+import { BattleEvent } from '~features/pokemon/components/pokedex/enums/pokedex-action.enum';
+import { CatchAnimationComponent } from '~features/pokemon/components/catch-animation/catch-animation.component';
+
+@Component({
+ selector: 'app-pokemon-battlefield',
+ imports: [PokemonImageComponent, CatchAnimationComponent, NgOptimizedImage],
+ templateUrl: './pokemon-battlefield.component.html',
+ styleUrl: './pokemon-battlefield.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class PokemonBattlefieldComponent implements OnInit {
+ readonly pokemonBattleEvent = input.required>();
+ readonly pokemon = input();
+ readonly pokemonImage = signal('');
+ readonly startCatchAnimation = signal(false);
+ readonly pokemonImageLoaded = signal(false);
+
+ constructor() {
+ effect(() => {
+ this.updatePokemonImage();
+ this.handleThrowPokeballEvent();
+ this.handleResetBattleEvent();
+ });
+ }
+
+ ngOnInit(): void {
+ this.pokemonImage.set(this.pokemon()?.sprites.front_default ?? '');
+ }
+
+ startPokemonInitialAnimation(loaded: boolean) {
+ this.pokemonImageLoaded.set(loaded);
+ }
+
+ private updatePokemonImage(): void {
+ const pokemonValue = this.pokemon();
+ if (pokemonValue) {
+ this.pokemonImage.set(pokemonValue.sprites.front_default);
+ }
+ }
+
+ private handleThrowPokeballEvent(): void {
+ if ((this.pokemonBattleEvent()() as unknown as BattleEvent) === BattleEvent.THROW_POKEBALL) {
+ this.startCatchAnimation.set(true);
+ }
+ }
+
+ private handleResetBattleEvent(): void {
+ if ((this.pokemonBattleEvent()() as unknown as BattleEvent) === BattleEvent.RESET_BATTLE) {
+ this.startCatchAnimation.set(false);
+ this.pokemonImageLoaded.set(false);
+ }
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.html b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.html
new file mode 100755
index 00000000..4824ca1d
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.html
@@ -0,0 +1,30 @@
+@if (!loading()) {
+
+
+ {{ pokemon()?.name | firstTitleCase }}
+
+
+
+
+
+
+ N.º: {{pokemon()?.order}}
+ Height: {{pokemon()?.height}} dm
+ Weight: {{pokemon()?.weight}} hg
+
+
+} @else {
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.scss b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.scss
new file mode 100755
index 00000000..cb3b468e
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.scss
@@ -0,0 +1,24 @@
+@use 'base/media-queries' as mq;
+
+$pokemon-image-size: 100px;
+
+:host {
+ .card__heading {
+ margin-block: 0;
+ font-size: var(--font-size-lg);
+ }
+
+ .pokemon__image-container {
+ width: $pokemon-image-size;
+ height: $pokemon-image-size;
+ margin: 0 auto var(--spacing-r-xl);
+
+ img {
+ height: 100%;
+ }
+ }
+
+ p {
+ margin-bottom: var(--spacing-r-sm);
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.ts b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.ts
new file mode 100755
index 00000000..d2f261d6
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-card/pokemon-card.component.ts
@@ -0,0 +1,26 @@
+import type { OnInit } from '@angular/core';
+import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { CardComponent } from '~shared/components/card/card.component';
+import { FirstTitleCasePipe } from '~shared/pipes/first-title-case.pipe';
+
+import '@shoelace-style/shoelace/dist/components/skeleton/skeleton.js';
+
+@Component({
+ selector: 'app-pokemon-card',
+ imports: [CardComponent, FirstTitleCasePipe],
+ templateUrl: './pokemon-card.component.html',
+ styleUrl: './pokemon-card.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class PokemonCardComponent implements OnInit {
+ readonly pokemon = input();
+ readonly loading = input();
+
+ pokemonImage: string | undefined;
+
+ ngOnInit() {
+ this.pokemonImage = this.pokemon()?.sprites.front_default;
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.html b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.html
new file mode 100755
index 00000000..7e62799a
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.html
@@ -0,0 +1,11 @@
+
+@if (croppedBase64Image()) {
+
+
+}
diff --git a/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.scss b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.scss
new file mode 100755
index 00000000..77312bef
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.scss
@@ -0,0 +1,15 @@
+@use 'base/media-queries' as mq;
+
+:host {
+ .pokemon__image {
+ height: auto;
+
+ @include mq.for-phone-only {
+ width: 100% !important;
+ }
+ }
+
+ canvas {
+ display: none;
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.ts b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.ts
new file mode 100755
index 00000000..d9cb73a4
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-image/pokemon-image.component.ts
@@ -0,0 +1,65 @@
+import {
+ type AfterViewInit,
+ ChangeDetectionStrategy,
+ Component,
+ effect,
+ type ElementRef,
+ inject,
+ input,
+ output,
+ signal,
+ type Signal,
+ viewChild,
+} from '@angular/core';
+import { NgStyle } from '@angular/common';
+import { CropImageService } from '~features/pokemon/services/crop-image.service';
+
+@Component({
+ selector: 'app-pokemon-image',
+ imports: [NgStyle],
+ templateUrl: './pokemon-image.component.html',
+ styleUrl: './pokemon-image.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class PokemonImageComponent implements AfterViewInit {
+ private readonly cropImageService = inject(CropImageService);
+
+ readonly loaded = output();
+ readonly canvas: Signal | undefined> = viewChild('canvas');
+ readonly image = input();
+ readonly imageWidth = input('100%');
+ readonly croppedBase64Image = signal('');
+ readonly croppedImageLoaded = signal(false);
+
+ constructor() {
+ effect(() => {
+ this.resetState();
+ if (this.canvas()) {
+ this.loadCroppedImage();
+ }
+ });
+ }
+
+ ngAfterViewInit() {
+ this.loadCroppedImage();
+ }
+
+ loadCroppedImage() {
+ const canvasElement = this.canvas();
+ const imageValue = this.image();
+ if (canvasElement && imageValue) {
+ void this.cropImageService
+ .getCroppedImageURL(canvasElement.nativeElement, imageValue)
+ .then((base64Image) => {
+ this.croppedBase64Image.set(base64Image);
+ this.loaded.emit(true);
+ return base64Image;
+ });
+ }
+ }
+
+ private resetState() {
+ this.croppedBase64Image.set('');
+ this.croppedImageLoaded.set(false);
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.html b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.html
new file mode 100755
index 00000000..05ee9c84
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ @if (searchState().showButton) {
+
+
+
+ }
+
diff --git a/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.scss b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.scss
new file mode 100755
index 00000000..142de85a
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.scss
@@ -0,0 +1,20 @@
+$pokemon-search-input-width: 230px;
+$pokemon-search-loading-image-size: 20px;
+
+:host {
+ width: $pokemon-search-input-width;
+
+ .search__container {
+ display: flex;
+ align-items: center;
+
+ .search__input.has-action {
+ margin-right: var(--spacing-lg);
+ }
+
+ .search__loading-image {
+ width: $pokemon-search-loading-image-size;
+ height: $pokemon-search-loading-image-size;
+ }
+ }
+}
diff --git a/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.ts b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.ts
new file mode 100755
index 00000000..a93d083f
--- /dev/null
+++ b/src/app/features/pokemon/components/pokemon-search-input/pokemon-search-input.component.ts
@@ -0,0 +1,72 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ computed,
+ CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
+ inject,
+ input,
+ signal,
+} from '@angular/core';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+import { SlInputIconFocusDirective } from '~shared/directives/sl-input-icon-focus.directive';
+import { POKEMON_URLS } from '~core/constants/urls.constants';
+import { Router } from '@angular/router';
+import { NgOptimizedImage } from '@angular/common';
+import { translations } from '../../../../../locale/translations';
+import { AlertService } from '~core/services/ui/alert.service';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
+import { TrimDirective } from '~shared/directives/trim.directive';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/input/input.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+
+@Component({
+ selector: 'app-pokemon-search-input',
+ imports: [SlInputIconFocusDirective, NgOptimizedImage, TrimDirective],
+ templateUrl: './pokemon-search-input.component.html',
+ styleUrl: './pokemon-search-input.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class PokemonSearchInputComponent {
+ private readonly router = inject(Router);
+ private readonly pokemonService = inject(PokemonService);
+ private readonly alertService = inject(AlertService);
+ private readonly destroyRef = inject(DestroyRef);
+
+ readonly title = input(translations.findPokemon);
+ readonly termValue = signal('');
+ readonly pokemonLoading = signal(false);
+ readonly searchState = computed(() => ({
+ isLoading: this.termValue() ? this.pokemonLoading() : false,
+ showButton: this.termValue() && this.pokemonLoading(),
+ }));
+
+ searchPokemon() {
+ const pokemonName = this.termValue().toLowerCase();
+ if (pokemonName) {
+ this.pokemonLoading.set(true);
+ this.pokemonService
+ .getPokemon(pokemonName)
+ .pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe({
+ next: (pokemon) => {
+ this.pokemonLoading.set(false);
+ this.termValue.set('');
+ void this.router.navigate([POKEMON_URLS.detail(pokemon.name)]);
+ },
+ error: () => {
+ this.pokemonLoading.set(false);
+ this.alertService.createErrorAlert(translations.pokemonNotFoundError);
+ },
+ });
+ }
+ }
+
+ assignInputValue(event: Event) {
+ const inputEvent = event as CustomEvent;
+ this.termValue.set((inputEvent.target as HTMLInputElement).value);
+ }
+}
diff --git a/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.html b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.html
new file mode 100755
index 00000000..5e6dbc5c
--- /dev/null
+++ b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.html
@@ -0,0 +1,52 @@
+
+ My Pokemon
+
+
+
+ @if (!userPokemons?.length) {
+
+
+
+ Uh-oh, it looks like you haven’t caught any Pokémon yet! Need help finding a pokemon?
+ Try using the search bar to track them down. Gotta catch ‘em all!
+
+
+
+
+
+
+ } @else {
+
+ @for (pokemon of userPokemons$ | ngrxPush; track pokemon.id) {
+
+
+
+ }
+
+ }
+
+
+
+
+
diff --git a/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.scss b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.scss
new file mode 100644
index 00000000..0ca45125
--- /dev/null
+++ b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.scss
@@ -0,0 +1,43 @@
+@use '../../../../../styles/base/media-queries' as mq;
+@use '../../../../../styles/components/pages';
+
+$grid-columns: 3;
+$empty-image-width: 200px;
+
+:host {
+ @include pages.read-page;
+
+ text-align: center;
+
+ .my-pokemon__search-container {
+ display: flex;
+ justify-content: center;
+ margin-block-end: var(--spacing-r-5xl);
+ }
+
+ .my-pokemon__grid {
+ display: grid;
+ grid-template-columns: 1fr;
+ gap: var(--spacing-r-xl);
+
+ @include mq.for-tablet-up {
+ grid-template-columns: repeat($grid-columns, 1fr);
+ }
+ }
+
+ .pokemons-empty__container {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-r-4xl);
+ align-items: center;
+
+ @include mq.for-tablet-up {
+ margin-left: 60px;
+ }
+
+ .pokemons-empty__image {
+ width: $empty-image-width;
+ height: auto;
+ }
+ }
+}
diff --git a/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.ts b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.ts
new file mode 100755
index 00000000..dfaf4a55
--- /dev/null
+++ b/src/app/features/pokemon/pages/my-pokemon/my-pokemon.component.ts
@@ -0,0 +1,44 @@
+import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
+import { UserService } from '~features/authentication/services/user.service';
+import { PokemonCardComponent } from '~features/pokemon/components/pokemon-card/pokemon-card.component';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+import { NgOptimizedImage } from '@angular/common';
+import { translations } from '../../../../../locale/translations';
+import { AlertService } from '~core/services/ui/alert.service';
+import { catchError, of, switchMap } from 'rxjs';
+import { LetDirective, PushPipe } from '@ngrx/component';
+import { PokemonSearchInputComponent } from '~features/pokemon/components/pokemon-search-input/pokemon-search-input.component';
+
+@Component({
+ selector: 'app-my-pokemon',
+ imports: [
+ PokemonCardComponent,
+ NgOptimizedImage,
+ PushPipe,
+ LetDirective,
+ PokemonSearchInputComponent,
+ ],
+ templateUrl: './my-pokemon.component.html',
+ styleUrl: './my-pokemon.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class MyPokemonComponent {
+ private readonly userService = inject(UserService);
+ private readonly pokemonService = inject(PokemonService);
+ private readonly alertService = inject(AlertService);
+
+ readonly translations = translations;
+ readonly userPokemons$ = this.userService.getMe({ cache: false }).pipe(
+ switchMap((user) => {
+ if (user.caughtPokemonIds.length === 0) {
+ return of([]);
+ }
+ return this.pokemonService.getPokemonByIds(user.caughtPokemonIds);
+ }),
+ catchError(() => {
+ this.alertService.createErrorAlert(translations.genericErrorAlert);
+ return of([]);
+ }),
+ );
+}
diff --git a/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.html b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.html
new file mode 100755
index 00000000..d8f590be
--- /dev/null
+++ b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.html
@@ -0,0 +1,7 @@
+@let pokemon = pokemonResource.value();
+@if (pokemon) {
+
+
+}
diff --git a/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.scss b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.scss
new file mode 100755
index 00000000..49ba4564
--- /dev/null
+++ b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.scss
@@ -0,0 +1,18 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+$pokedex-container-offset: 60px;
+
+:host {
+ @include pages.read-page;
+
+ align-items: center;
+
+ .pokedex__container {
+ margin: var(--spacing-r-4xl) 0;
+
+ @include mq.for-tablet-up {
+ margin: var(--spacing-r-4xl) $pokedex-container-offset 0 0;
+ }
+ }
+}
diff --git a/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.ts b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.ts
new file mode 100755
index 00000000..98a05bdc
--- /dev/null
+++ b/src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.ts
@@ -0,0 +1,57 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ effect,
+ inject,
+ PLATFORM_ID,
+ signal,
+} from '@angular/core';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { ActivatedRoute } from '@angular/router';
+import { PokemonBattlefieldComponent } from '~features/pokemon/components/pokemon-battlefield/pokemon-battlefield.component';
+import { PokedexComponent } from '~features/pokemon/components/pokedex/pokedex.component';
+import { BattleEvent } from '~features/pokemon/components/pokedex/enums/pokedex-action.enum';
+import { translations } from '../../../../../locale/translations';
+import { AlertService } from '~core/services/ui/alert.service';
+import { toSignal } from '@angular/core/rxjs-interop';
+import { map } from 'rxjs';
+import { isPlatformBrowser } from '@angular/common';
+
+@Component({
+ selector: 'app-pokemon-detail',
+ imports: [PokemonBattlefieldComponent, PokedexComponent],
+ templateUrl: './pokemon-detail.component.html',
+ styleUrl: './pokemon-detail.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class PokemonDetailComponent {
+ private readonly activatedRoute = inject(ActivatedRoute);
+ private readonly pokemonService = inject(PokemonService);
+ private readonly alertService = inject(AlertService);
+ private readonly platformId = inject(PLATFORM_ID);
+
+ readonly isBrowser = isPlatformBrowser(this.platformId);
+ readonly pokemonId = toSignal(
+ this.activatedRoute.paramMap.pipe(map((parameters) => parameters.get('pokemonId') ?? '')),
+ { initialValue: '' },
+ );
+ readonly pokemonResource = this.pokemonService.getPokemonResource(this.pokemonId);
+ readonly pokemon = signal(null);
+
+ // eslint-disable-next-line @angular-eslint/prefer-signals
+ pokemonBattleEvent = signal(BattleEvent.POKEMON_LOADED);
+
+ constructor() {
+ effect(() => {
+ if (this.pokemonResource.value()) {
+ this.pokemonBattleEvent.set(BattleEvent.RESET_BATTLE);
+ }
+ if (this.pokemonResource.error()) {
+ this.alertService.createErrorAlert(translations.pokemonNotFoundError);
+ }
+ });
+ }
+}
diff --git a/src/app/features/pokemon/pokemon.routes.ts b/src/app/features/pokemon/pokemon.routes.ts
new file mode 100755
index 00000000..c713b2fa
--- /dev/null
+++ b/src/app/features/pokemon/pokemon.routes.ts
@@ -0,0 +1,9 @@
+import type { Route } from '@angular/router';
+import { PokemonDetailComponent } from '~features/pokemon/pages/pokemon-detail/pokemon-detail.component';
+
+export const POKEMON_ROUTES: Route[] = [
+ {
+ path: ':pokemonId',
+ component: PokemonDetailComponent,
+ },
+];
diff --git a/src/app/features/pokemon/services/crop-image.service.ts b/src/app/features/pokemon/services/crop-image.service.ts
new file mode 100644
index 00000000..8c7f0384
--- /dev/null
+++ b/src/app/features/pokemon/services/crop-image.service.ts
@@ -0,0 +1,114 @@
+import { inject, Injectable, PLATFORM_ID } from '@angular/core';
+import { isPlatformBrowser } from '@angular/common';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class CropImageService {
+ private readonly platformId = inject(PLATFORM_ID);
+ readonly isBrowser = isPlatformBrowser(this.platformId);
+
+ async getCroppedImageURL(canvas: HTMLCanvasElement, imageUrl: string): Promise {
+ return new Promise((resolve, reject) => {
+ if (this.isBrowser) {
+ const context = canvas.getContext('2d', { willReadFrequently: true });
+ if (!context) {
+ reject(new Error('Canvas context not found'));
+ return;
+ }
+
+ const image = new Image();
+ image.crossOrigin = 'Anonymous';
+ image.src = imageUrl;
+ image.addEventListener('load', () => {
+ canvas.width = image.width;
+ canvas.height = image.height;
+ context.drawImage(image, 0, 0);
+ const croppedImageUrl = this.cropImageToFitContent({ context, image, canvas });
+ resolve(croppedImageUrl);
+ });
+
+ image.addEventListener('error', () => {
+ reject(new Error('Image failed to load'));
+ });
+ }
+ });
+ }
+
+ private cropImageToFitContent({
+ context,
+ image,
+ canvas,
+ }: {
+ context: CanvasRenderingContext2D;
+ image: HTMLImageElement;
+ canvas: HTMLCanvasElement;
+ }): string {
+ const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
+ const { top, bottom, left, right } = this.findCropBoundaries(imageData, canvas);
+ const croppedWidth = Math.max(right - left, 1);
+ const croppedHeight = Math.max(bottom - top, 1);
+ return this.createCroppedImage({ image, left, top, croppedWidth, croppedHeight });
+ }
+
+ // eslint-disable-next-line max-statements
+ private findCropBoundaries(imageData: ImageData, canvas: HTMLCanvasElement) {
+ let bottom = 0,
+ left = canvas.width,
+ right = 0,
+ top = canvas.height;
+
+ for (let row = 0; row < canvas.height; row++) {
+ for (let column = 0; column < canvas.width; column++) {
+ const index = (row * canvas.width + column) * 4;
+ const alpha = imageData.data[index + 3];
+ if (alpha > 0) {
+ // Update boundaries for non-transparent pixel
+ top = Math.min(top, row);
+ bottom = Math.max(bottom, row);
+ left = Math.min(left, column);
+ right = Math.max(right, column);
+ }
+ }
+ }
+
+ return { top, bottom, left, right };
+ }
+
+ // eslint-disable-next-line max-lines-per-function
+ private createCroppedImage({
+ image,
+ left,
+ top,
+ croppedWidth,
+ croppedHeight,
+ }: {
+ image: HTMLImageElement;
+ left: number;
+ top: number;
+ croppedWidth: number;
+ croppedHeight: number;
+ }): string {
+ const croppedCanvas = document.createElement('canvas');
+ const croppedContext = croppedCanvas.getContext('2d');
+ if (!croppedContext) {
+ return '';
+ }
+ croppedCanvas.width = croppedWidth;
+ croppedCanvas.height = croppedHeight;
+
+ croppedContext.drawImage(
+ image,
+ left,
+ top,
+ croppedWidth,
+ croppedHeight,
+ 0,
+ 0,
+ croppedWidth,
+ croppedHeight,
+ );
+
+ return croppedCanvas.toDataURL();
+ }
+}
diff --git a/src/app/features/pokemon/services/pokemon.service.ts b/src/app/features/pokemon/services/pokemon.service.ts
new file mode 100644
index 00000000..f8aef44a
--- /dev/null
+++ b/src/app/features/pokemon/services/pokemon.service.ts
@@ -0,0 +1,50 @@
+import { inject, Injectable } from '@angular/core';
+import type { Observable } from 'rxjs';
+import { forkJoin, map } from 'rxjs';
+import type { HttpResourceRef } from '@angular/common/http';
+import { HttpClient, HttpContext, HttpParams, httpResource } from '@angular/common/http';
+import { CACHING_ENABLED } from '~core/interceptors/caching.interceptor';
+import type { Pokemon } from '~features/pokemon/types/pokemon.type';
+import { getEndpoints } from '~core/constants/endpoints.constants';
+import type { LastUpdatedPokemonIdsResponse } from '~features/pokemon/types/last-updated-pokemon-ids-response.type';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class PokemonService {
+ private readonly endpoints = getEndpoints();
+ private readonly httpClient = inject(HttpClient);
+
+ getPokemon(pokemonIdOrName: string | number): Observable {
+ return this.httpClient.get(this.endpoints.pokemon.v1.pokemon(pokemonIdOrName), {
+ params: new HttpParams().set('limit', '1'),
+ context: new HttpContext().set(CACHING_ENABLED, true),
+ });
+ }
+
+ getPokemonResource(pokemonName: () => string | undefined): HttpResourceRef {
+ return httpResource(() =>
+ pokemonName() ? this.endpoints.pokemon.v1.pokemon(pokemonName()!) : undefined,
+ );
+ }
+
+ getPokemonByIds(ids: number[]): Observable {
+ const getPokemonRequests = ids.map((id) => this.getPokemon(id));
+ return forkJoin(getPokemonRequests).pipe(
+ map((pokemons: Pokemon[]) =>
+ pokemons.toSorted((pokemonA, pokemonB) => Number(pokemonA.order) - Number(pokemonB.order)),
+ ),
+ );
+ }
+
+ getLastUpdatedPokemonIds(): Observable {
+ return this.httpClient
+ .get(this.endpoints.pokemon.v1.lastUpdated)
+ .pipe(
+ map((response: LastUpdatedPokemonIdsResponse) => {
+ const { data } = response;
+ return data.pokemonIds;
+ }),
+ );
+ }
+}
diff --git a/src/app/features/pokemon/types/last-updated-pokemon-ids-response.type.ts b/src/app/features/pokemon/types/last-updated-pokemon-ids-response.type.ts
new file mode 100644
index 00000000..20320138
--- /dev/null
+++ b/src/app/features/pokemon/types/last-updated-pokemon-ids-response.type.ts
@@ -0,0 +1,7 @@
+import type { ApiResponse } from '~shared/types/api-response.types';
+
+export type LastUpdatedPokemonIdsResponseData = {
+ pokemonIds: string[];
+};
+
+export type LastUpdatedPokemonIdsResponse = ApiResponse;
diff --git a/src/app/features/pokemon/types/pokemon.type.ts b/src/app/features/pokemon/types/pokemon.type.ts
new file mode 100644
index 00000000..474fd849
--- /dev/null
+++ b/src/app/features/pokemon/types/pokemon.type.ts
@@ -0,0 +1,11 @@
+export type Pokemon = {
+ id: number;
+ order: string;
+ name: string;
+ height: string;
+ weight: string;
+ sprites: {
+ front_default: string;
+ front_shiny: string;
+ };
+};
diff --git a/src/app/features/pokemon/validators/pokemon.validator.ts b/src/app/features/pokemon/validators/pokemon.validator.ts
new file mode 100644
index 00000000..c89e3518
--- /dev/null
+++ b/src/app/features/pokemon/validators/pokemon.validator.ts
@@ -0,0 +1,47 @@
+import type { Observable } from 'rxjs';
+import { catchError, finalize, map, of, switchMap, tap, timer } from 'rxjs';
+import { inject, Injectable, signal } from '@angular/core';
+import type { AbstractControl, AsyncValidator, ValidationErrors } from '@angular/forms';
+import { PokemonService } from '~features/pokemon/services/pokemon.service';
+
+@Injectable({ providedIn: 'root' })
+export class PokemonValidator implements AsyncValidator {
+ private readonly pokemonService = inject(PokemonService);
+ private readonly pokemonName = signal('');
+ private readonly debounceMs = 500;
+
+ readonly pokemonId = signal(-1);
+ readonly isPokemonValidating = signal(false);
+
+ validate(control: AbstractControl): Observable {
+ const pokemonName = (control.value ?? '').toLowerCase().trim();
+
+ if (!pokemonName) {
+ this.isPokemonValidating.set(false);
+ this.pokemonId.set(-1);
+ return of(null);
+ }
+
+ this.pokemonName.set(pokemonName);
+ this.isPokemonValidating.set(true);
+ return this.validatePokemonName(pokemonName).pipe(
+ finalize(() => {
+ this.isPokemonValidating.set(false);
+ }),
+ );
+ }
+
+ private validatePokemonName(pokemonName: string): Observable {
+ return timer(this.debounceMs).pipe(
+ switchMap(() =>
+ this.pokemonService.getPokemon(pokemonName).pipe(
+ tap((pokemon) => {
+ this.pokemonId.set(pokemon.id);
+ }),
+ map(() => null),
+ catchError(() => of({ pokemonName: true })),
+ ),
+ ),
+ );
+ }
+}
diff --git a/src/app/heroes/hero-detail/hero-detail.component.html b/src/app/heroes/hero-detail/hero-detail.component.html
deleted file mode 100755
index 07e9c79a..00000000
--- a/src/app/heroes/hero-detail/hero-detail.component.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{{'heroDetail' | translate}}
-
-
-
-
-
-
-
- {{hero.name}}
- {{hero.alterEgo}}
-
-
- {{hero.likes}}
- favorite
-
-
-
-
-
-
-
diff --git a/src/app/heroes/hero-detail/hero-detail.component.scss b/src/app/heroes/hero-detail/hero-detail.component.scss
deleted file mode 100755
index 94aff3db..00000000
--- a/src/app/heroes/hero-detail/hero-detail.component.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-#heroe-detail {
- width: 65%;
- margin: 0 auto;
- margin-top: 2em;
-}
\ No newline at end of file
diff --git a/src/app/heroes/hero-detail/hero-detail.component.spec.ts b/src/app/heroes/hero-detail/hero-detail.component.spec.ts
deleted file mode 100755
index a26c77bd..00000000
--- a/src/app/heroes/hero-detail/hero-detail.component.spec.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {APP_BASE_HREF} from '@angular/common';
-import {HeroDetailComponent} from './hero-detail.component';
-import {HeroesModule} from '../heroes.module';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {TranslateModule} from '@ngx-translate/core';
-import {HeroService} from '../shared/hero.service';
-
-describe('HeroDetailComponent', () => {
- let fixture;
- let component;
- let heroService;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- HeroesModule
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'},
- HeroService
- ],
- }).compileComponents();
-
- fixture = TestBed.createComponent(HeroDetailComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- heroService = TestBed.get(HeroService);
- }));
-
- it('should create hero detail component', (() => {
- expect(component).toBeTruthy();
- }));
-
- it('should like a hero', async(() => {
- localStorage.setItem('votes', String(AppConfig.votesLimit - 1));
- component.like({id: 1}).then((result) => {
- expect(result).toBe(true);
- });
- }));
-});
diff --git a/src/app/heroes/hero-detail/hero-detail.component.ts b/src/app/heroes/hero-detail/hero-detail.component.ts
deleted file mode 100755
index ccfcd5b4..00000000
--- a/src/app/heroes/hero-detail/hero-detail.component.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {Component} from '@angular/core';
-import {Hero} from '../shared/hero.model';
-import {HeroService} from '../shared/hero.service';
-import {ActivatedRoute} from '@angular/router';
-
-@Component({
- selector: 'app-hero-detail',
- templateUrl: './hero-detail.component.html',
- styleUrls: ['./hero-detail.component.scss']
-})
-
-export class HeroDetailComponent {
- hero: Hero;
- canVote: boolean;
-
- constructor(private heroService: HeroService,
- private activatedRoute: ActivatedRoute) {
- this.activatedRoute.params.subscribe((params: any) => {
- if (params['id']) {
- this.heroService.getHeroById(params['id']).subscribe((hero: Hero) => {
- this.hero = hero;
- });
- }
- });
- }
-
- like(hero: Hero) {
- return new Promise((resolve, reject) => {
- this.heroService.like(hero).subscribe(() => {
- this.canVote = this.heroService.checkIfUserCanVote();
- resolve(true);
- }, (error) => {
- reject(error);
- });
- });
- }
-}
diff --git a/src/app/heroes/hero-list/hero-list.component.html b/src/app/heroes/hero-list/hero-list.component.html
deleted file mode 100755
index 53c92d96..00000000
--- a/src/app/heroes/hero-list/hero-list.component.html
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
{{ 'heroesList' | translate }}
-
-
-
-
-
-
-
- {{hero.name}}
-
- {{hero.alterEgo}}
-
-
- {{hero.likes}}
-
- favorite
-
-
- delete
-
-
-
-
-
-
-
-
{{ 'createHero' | translate }}
-
-
-
diff --git a/src/app/heroes/hero-list/hero-list.component.scss b/src/app/heroes/hero-list/hero-list.component.scss
deleted file mode 100755
index 77965862..00000000
--- a/src/app/heroes/hero-list/hero-list.component.scss
+++ /dev/null
@@ -1,66 +0,0 @@
-#left {
- width: 50%;
- float: left;
- margin-left: 6%;
-}
-
-#right {
- margin-left: 50%;
- text-align: center;
- padding-right: 17%;
-}
-
-.clear {
- clear: both;
-}
-
-.mat-list {
- margin: 0 auto;
- display: table;
-
- /deep/ .mat-list-text {
- text-align: left !important;
- }
-}
-
-.hero-actions {
- padding-bottom: 0;
-
- .remove-icon {
- padding-left: 0.5em;
- color: darkslategrey;
- cursor: pointer;
- }
-}
-
-form {
- display: grid;
- width: 80%;
- margin: 0 auto;
-
- .mat-raised-button {
- color: white;
- background: #3f51b5;
- width: 50%;
- margin: 0 auto;
- }
-
- .mat-form-field {
- width: 100%;
- }
-}
-
-@media (max-width: 680px) {
- #left {
- width: 100%;
- float: none;
- margin: 0 auto;
- }
-
- #right {
- margin: 1em auto 0;
- width: 90%;
- float: none;
- padding: 0;
- }
-}
diff --git a/src/app/heroes/hero-list/hero-list.component.spec.ts b/src/app/heroes/hero-list/hero-list.component.spec.ts
deleted file mode 100755
index ba82217b..00000000
--- a/src/app/heroes/hero-list/hero-list.component.spec.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {APP_BASE_HREF} from '@angular/common';
-import {HeroListComponent} from './hero-list.component';
-import {HeroesModule} from '../heroes.module';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-
-describe('HeroListComponent', () => {
- let fixture;
- let component;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- HeroesModule
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'}
- ],
- }).compileComponents();
-
- fixture = TestBed.createComponent(HeroListComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- }));
-
- it('should create hero list component', (() => {
- expect(component).toBeTruthy();
- }));
-});
diff --git a/src/app/heroes/hero-list/hero-list.component.ts b/src/app/heroes/hero-list/hero-list.component.ts
deleted file mode 100755
index 3169c1e1..00000000
--- a/src/app/heroes/hero-list/hero-list.component.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import {Component, ViewChild} from '@angular/core';
-import {Hero} from '../shared/hero.model';
-import {HeroService} from '../shared/hero.service';
-import {FormBuilder, FormGroup, Validators} from '@angular/forms';
-import {MatDialog} from '@angular/material';
-import {AppConfig} from '../../config/app.config';
-import {Router} from '@angular/router';
-import {LoggerService} from '../../core/logger.service';
-
-@Component({
- selector: 'app-remove-hero-dialog',
- templateUrl: './remove-hero.dialog.html',
-})
-
-export class RemoveHeroDialogComponent {
- constructor() {
- }
-}
-
-@Component({
- selector: 'app-hero-list',
- templateUrl: './hero-list.component.html',
- styleUrls: ['./hero-list.component.scss']
-})
-
-export class HeroListComponent {
- heroes: Hero[];
- newHeroForm: FormGroup;
- canVote = false;
- error: string;
- @ViewChild('form') myNgForm; // just to call resetForm method
-
- constructor(private heroService: HeroService,
- private dialog: MatDialog,
- private router: Router,
- private formBuilder: FormBuilder) {
- this.canVote = this.heroService.checkIfUserCanVote();
-
- this.newHeroForm = this.formBuilder.group({
- 'name': ['', [Validators.required]],
- 'alterEgo': ['', [Validators.required]]
- });
-
- this.heroService.getAllHeroes().subscribe((heroes: Array) => {
- this.heroes = heroes.sort((a, b) => {
- return b.likes - a.likes;
- });
- });
- }
-
- like(hero: Hero) {
- this.heroService.like(hero).subscribe(() => {
- this.canVote = this.heroService.checkIfUserCanVote();
- }, (error: Response) => {
- LoggerService.error('maximum votes limit reached', error);
- });
- }
-
- createNewHero(newHero: Hero) {
- this.heroService.createHero(newHero).subscribe((newHeroWithId) => {
- this.heroes.push(newHeroWithId);
- this.myNgForm.resetForm();
- }, (response: Response) => {
- if (response.status === 500) {
- this.error = 'errorHasOcurred';
- }
- });
- }
-
- seeHeroDetails(hero): void {
- if (hero.default) {
- this.router.navigate([AppConfig.routes.heroes + '/' + hero.id]);
- }
- }
-
- remove(heroToRemove: Hero): void {
- const dialogRef = this.dialog.open(RemoveHeroDialogComponent);
- dialogRef.afterClosed().subscribe(result => {
- if (result) {
- this.heroService.deleteHeroById(heroToRemove.id).subscribe(() => {
- this.heroService.showSnackBar('heroRemoved');
- this.heroes = this.heroes.filter(hero => hero.id !== heroToRemove.id);
- }, (response: Response) => {
- if (response.status === 500) {
- this.error = 'heroDefault';
- }
- });
- }
- });
- }
-}
diff --git a/src/app/heroes/hero-list/remove-hero.dialog.html b/src/app/heroes/hero-list/remove-hero.dialog.html
deleted file mode 100644
index 07ff6b98..00000000
--- a/src/app/heroes/hero-list/remove-hero.dialog.html
+++ /dev/null
@@ -1,6 +0,0 @@
-{{'removeHero' | translate}}
-{{'areYouSure' | translate}}
-
- {{'no' | translate}}
- {{'yes' | translate}}
-
\ No newline at end of file
diff --git a/src/app/heroes/hero-top/hero-top.component.html b/src/app/heroes/hero-top/hero-top.component.html
deleted file mode 100755
index 6a43e7a8..00000000
--- a/src/app/heroes/hero-top/hero-top.component.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
{{'topHeroes' | translate}}
-
-
-
-
-
-
-
- {{hero.name}}
- {{hero.alterEgo}}
-
-
- {{hero.likes}}
- favorite
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/heroes/hero-top/hero-top.component.scss b/src/app/heroes/hero-top/hero-top.component.scss
deleted file mode 100755
index 4072e82b..00000000
--- a/src/app/heroes/hero-top/hero-top.component.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-#heroes-list {
- margin: 2em;
-}
-
-.hero-card {
- margin: 2em auto;
-}
-
-.progress-spinner {
- margin: 0 auto;
-}
-
-@media (max-width: 680px) {
- .hero-card {
- width: 80%;
- margin: 0 auto;
- }
-
- .mat-card {
- margin-bottom: 2em;
- }
-}
\ No newline at end of file
diff --git a/src/app/heroes/hero-top/hero-top.component.spec.ts b/src/app/heroes/hero-top/hero-top.component.spec.ts
deleted file mode 100755
index 5542f29d..00000000
--- a/src/app/heroes/hero-top/hero-top.component.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import {async, fakeAsync, TestBed, tick} from '@angular/core/testing';
-import {APP_BASE_HREF} from '@angular/common';
-import {HeroTopComponent} from './hero-top.component';
-import {HeroService} from '../shared/hero.service';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-
-describe('HeroTopComponent', () => {
- let fixture;
- let component;
- let heroService;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot(),
- ],
- declarations: [
- HeroTopComponent
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'},
- HeroService
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
-
- fixture = TestBed.createComponent(HeroTopComponent);
- fixture.detectChanges();
- component = fixture.debugElement.componentInstance;
- heroService = TestBed.get(HeroService);
- }));
-
- it('should create hero top component', (() => {
- expect(component).toBeTruthy();
- }));
-
- it('should initialice component', fakeAsync(() => {
- fixture.detectChanges();
- spyOn(heroService, 'getAllHeroes').and.returnValue(Promise.resolve(true));
- tick();
- fixture.detectChanges();
- expect(component.heroes.length).toBe(AppConfig.topHeroesLimit);
- }));
-
- it('should like a hero', async(() => {
- localStorage.setItem('votes', String(AppConfig.votesLimit - 1));
- component.like({id: 1}).then((result) => {
- expect(result).toBe(true);
- });
- }));
-
- it('should not like a hero', async(() => {
- localStorage.setItem('votes', String(AppConfig.votesLimit));
- component.like({id: 1}).then(() => {
- }, (error) => {
- expect(error).toBe('maximum votes');
- });
- expect(heroService.checkIfUserCanVote()).toBe(false);
- }));
-});
diff --git a/src/app/heroes/hero-top/hero-top.component.ts b/src/app/heroes/hero-top/hero-top.component.ts
deleted file mode 100755
index 3ed93985..00000000
--- a/src/app/heroes/hero-top/hero-top.component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import {Component} from '@angular/core';
-
-import {Hero} from '../shared/hero.model';
-
-import {HeroService} from '../shared/hero.service';
-import {AppConfig} from '../../config/app.config';
-
-@Component({
- selector: 'app-hero-top',
- templateUrl: './hero-top.component.html',
- styleUrls: ['./hero-top.component.scss']
-})
-export class HeroTopComponent {
-
- heroes: Hero[] = null;
- canVote = false;
-
- constructor(private heroService: HeroService) {
- this.canVote = this.heroService.checkIfUserCanVote();
-
- this.heroService.getAllHeroes().subscribe((heroes) => {
- this.heroes = heroes.sort((a, b) => {
- return b.likes - a.likes;
- }).slice(0, AppConfig.topHeroesLimit);
- });
- }
-
- like(hero: Hero): Promise {
- return new Promise((resolve, reject) => {
- this.heroService.like(hero).subscribe(() => {
- this.canVote = this.heroService.checkIfUserCanVote();
- resolve(true);
- }, (error) => {
- reject(error);
- });
- });
- }
-}
diff --git a/src/app/heroes/heroes-routing.module.ts b/src/app/heroes/heroes-routing.module.ts
deleted file mode 100644
index 13d550bb..00000000
--- a/src/app/heroes/heroes-routing.module.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {NgModule} from '@angular/core';
-import {RouterModule, Routes} from '@angular/router';
-
-import {HeroListComponent} from './hero-list/hero-list.component';
-import {HeroDetailComponent} from './hero-detail/hero-detail.component';
-import {HeroesComponent} from './heroes.component';
-
-const heroesRoutes: Routes = [
- {
- path: '',
- component: HeroesComponent,
- children: [
- {path: '', component: HeroListComponent},
- {path: ':id', component: HeroDetailComponent}
- ]
- }
-];
-
-@NgModule({
- imports: [
- RouterModule.forChild(heroesRoutes)
- ],
- exports: [
- RouterModule
- ]
-})
-
-export class HeroRoutingModule {
-}
diff --git a/src/app/heroes/heroes.component.html b/src/app/heroes/heroes.component.html
deleted file mode 100644
index 90c6b646..00000000
--- a/src/app/heroes/heroes.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/app/heroes/heroes.component.spec.ts b/src/app/heroes/heroes.component.spec.ts
deleted file mode 100755
index 39ff683a..00000000
--- a/src/app/heroes/heroes.component.spec.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {APP_BASE_HREF} from '@angular/common';
-import {HeroesComponent} from './heroes.component';
-import {HeroesModule} from './heroes.module';
-import {TestsModule} from '../shared/modules/tests.module';
-import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-
-describe('HeroesComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- HeroesModule
- ],
- providers: [
- {provide: APP_BASE_HREF, useValue: '/'}
- ],
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
- }).compileComponents();
- }));
-
- it('should create heroes component', (() => {
- const fixture = TestBed.createComponent(HeroesComponent);
- fixture.detectChanges();
- const component = fixture.debugElement.componentInstance;
- expect(component).toBeTruthy();
- }));
-});
diff --git a/src/app/heroes/heroes.component.ts b/src/app/heroes/heroes.component.ts
deleted file mode 100755
index 40b8a454..00000000
--- a/src/app/heroes/heroes.component.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {Component} from '@angular/core';
-
-@Component({
- selector: 'app-heroes',
- templateUrl: './heroes.component.html'
-})
-
-export class HeroesComponent {
-
- constructor() {
-
- }
-}
diff --git a/src/app/heroes/heroes.module.ts b/src/app/heroes/heroes.module.ts
deleted file mode 100644
index eaf17913..00000000
--- a/src/app/heroes/heroes.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import {NgModule} from '@angular/core';
-import {CommonModule} from '@angular/common';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-
-import {HeroRoutingModule} from './heroes-routing.module';
-import {SharedModule} from '../shared/modules/shared.module';
-
-import {HeroListComponent, RemoveHeroDialogComponent} from './hero-list/hero-list.component';
-import {HeroService} from './shared/hero.service';
-import {HeroDetailComponent} from './hero-detail/hero-detail.component';
-import {HeroesComponent} from './heroes.component';
-
-@NgModule({
- imports: [
- CommonModule,
- FormsModule,
- SharedModule,
- HeroRoutingModule,
- ReactiveFormsModule
- ],
- declarations: [
- HeroesComponent,
- HeroListComponent,
- RemoveHeroDialogComponent,
- HeroDetailComponent
- ],
- entryComponents: [
- RemoveHeroDialogComponent
- ],
- providers: [
- HeroService
- ]
-})
-
-export class HeroesModule {
-}
diff --git a/src/app/heroes/shared/hero.model.ts b/src/app/heroes/shared/hero.model.ts
deleted file mode 100755
index 21f69c57..00000000
--- a/src/app/heroes/shared/hero.model.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export class Hero {
- constructor(public id: number,
- public name: string,
- public alterEgo: string,
- public likes: number) {
- }
-}
diff --git a/src/app/heroes/shared/hero.service.spec.ts b/src/app/heroes/shared/hero.service.spec.ts
deleted file mode 100755
index b24f0de3..00000000
--- a/src/app/heroes/shared/hero.service.spec.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import {async, TestBed} from '@angular/core/testing';
-import {HeroService} from './hero.service';
-import {APP_BASE_HREF} from '@angular/common';
-import {APP_CONFIG, AppConfig} from '../../config/app.config';
-import {TestsModule} from '../../shared/modules/tests.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {HttpErrorResponse} from '@angular/common/http';
-import {ErrorObservable} from 'rxjs/observable/ErrorObservable';
-
-describe('HeroService', () => {
- let heroService;
- let newHeroCreated;
-
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- TestsModule,
- TranslateModule.forRoot()
- ],
- providers: [
- {provide: APP_CONFIG, useValue: AppConfig},
- {provide: APP_BASE_HREF, useValue: '/'},
- HeroService
- ]
- });
-
- heroService = TestBed.get(HeroService);
- });
-
- it('should contains heroes', async(() => {
- heroService.getAllHeroes().subscribe((data: any) => {
- expect(data.length).toBeGreaterThan(AppConfig.topHeroesLimit);
- });
- }));
-
- it('should get hero by id 1', async(() => {
- heroService.getHeroById('1').subscribe((hero) => {
- expect(hero.id).toEqual(1);
- });
- }));
-
- it('should fail getting hero by no id', async(() => {
- heroService.getHeroById('noId').subscribe(() => {
- }, (error) => {
- expect(error).toEqual(jasmine.any(HttpErrorResponse));
- });
- }));
-
- it('should fail creating empty hero', async(() => {
- heroService.createHero({}).subscribe(() => {
- }, (error) => {
- expect(error).toEqual(jasmine.any(HttpErrorResponse));
- });
- }));
-
- it('should fail deleting noId hero', async(() => {
- heroService.deleteHeroById('noId').subscribe(() => {
- }, (error) => {
- expect(error).toEqual(jasmine.any(HttpErrorResponse));
- });
- }));
-
- it('should fail like empty hero', async(() => {
- localStorage.setItem('votes', String(0));
- heroService.like('noId').subscribe(() => {
- }, (error) => {
- expect(error).toEqual(jasmine.any(HttpErrorResponse));
- });
- }));
-
- it('should return json response error', async(() => {
- expect(heroService.handleError(new Response('noId'))).toEqual(jasmine.any(ErrorObservable));
- }));
-
- it('should create hero', async(() => {
- heroService.createHero({
- 'name': 'test',
- 'alterEgo': 'test'
- }).subscribe((hero) => {
- newHeroCreated = hero;
- expect(hero.id).not.toBeNull();
- });
- }));
-
- it('should not like a hero because no votes', async(() => {
- localStorage.setItem('votes', String(AppConfig.votesLimit));
- expect(heroService.checkIfUserCanVote()).toBe(false);
- heroService.like(newHeroCreated).subscribe(() => {
- }, (error) => {
- expect(error).toBe('maximum votes');
- });
- }));
-
- it('should like a hero', async(() => {
- localStorage.setItem('votes', String(0));
- expect(heroService.checkIfUserCanVote()).toBe(true);
- heroService.like(newHeroCreated).subscribe((response) => {
- expect(response).toEqual({});
- });
- }));
-
- it('should delete a hero', async(() => {
- heroService.deleteHeroById(newHeroCreated.id).subscribe((response) => {
- expect(response).toEqual({});
- });
- }));
-});
diff --git a/src/app/heroes/shared/hero.service.ts b/src/app/heroes/shared/hero.service.ts
deleted file mode 100755
index 6c3bff11..00000000
--- a/src/app/heroes/shared/hero.service.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import {Injectable} from '@angular/core';
-import {HttpClient, HttpHeaders} from '@angular/common/http';
-
-import {AppConfig} from '../../config/app.config';
-
-import {Hero} from './hero.model';
-import {Observable} from 'rxjs/Observable';
-import {MatSnackBar, MatSnackBarConfig} from '@angular/material';
-import {TranslateService} from '@ngx-translate/core';
-
-@Injectable()
-export class HeroService {
- private headers: HttpHeaders;
- private heroesUrl: string;
- private translations: any;
-
- private handleError(error: any) {
- if (error instanceof Response) {
- return Observable.throw(error.json()['error'] || 'backend server error');
- }
- return Observable.throw(error || 'backend server error');
- }
-
- constructor(private http: HttpClient,
- private translateService: TranslateService,
- private snackBar: MatSnackBar) {
- this.heroesUrl = AppConfig.endpoints.heroes;
- this.headers = new HttpHeaders({'Content-Type': 'application/json'});
-
- this.translateService.get(['heroCreated', 'saved', 'heroLikeMaximum', 'heroRemoved'], {
- 'value': AppConfig.votesLimit
- }).subscribe((texts) => {
- this.translations = texts;
- });
- }
-
- getAllHeroes(): Observable {
- return this.http.get(this.heroesUrl)
- .map(response => {
- return response;
- })
- .catch(error => this.handleError(error));
- }
-
- getHeroById(heroId: string): Observable {
- return this.http.get(this.heroesUrl + '/' + heroId)
- .map(response => {
- return response;
- })
- .catch(error => this.handleError(error));
- }
-
- createHero(hero: any): Observable {
- return this.http
- .post(this.heroesUrl, JSON.stringify({
- name: hero.name,
- alterEgo: hero.alterEgo
- }), {headers: this.headers})
- .map(response => {
- this.showSnackBar('heroCreated');
- return response;
- })
- .catch(error => this.handleError(error));
- }
-
- like(hero: Hero) {
- if (this.checkIfUserCanVote()) {
- const url = `${this.heroesUrl}/${hero.id}/like`;
- return this.http
- .post(url, {}, {headers: this.headers})
- .map((response) => {
- localStorage.setItem('votes', '' + (Number(localStorage.getItem('votes')) + 1));
- hero.likes += 1;
- this.showSnackBar('saved');
- return response;
- })
- .catch(error => this.handleError(error));
- } else {
- this.showSnackBar('heroLikeMaximum');
- return Observable.throw('maximum votes');
- }
- }
-
- checkIfUserCanVote(): boolean {
- return Number(localStorage.getItem('votes')) < AppConfig.votesLimit;
- }
-
- deleteHeroById(id: any): Observable> {
- const url = `${this.heroesUrl}/${id}`;
- return this.http.delete(url, {headers: this.headers})
- .map((response) => {
- this.showSnackBar('heroRemoved');
- return response;
- })
- .catch(error => this.handleError(error));
- }
-
- showSnackBar(name): void {
- const config: any = new MatSnackBarConfig();
- config.duration = AppConfig.snackBarDuration;
- this.snackBar.open(this.translations[name], 'OK', config);
- }
-}
diff --git a/src/app/shared/components/card/card.component.html b/src/app/shared/components/card/card.component.html
new file mode 100755
index 00000000..c49078d9
--- /dev/null
+++ b/src/app/shared/components/card/card.component.html
@@ -0,0 +1,19 @@
+@if (href()) {
+
+
+
+} @else {
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/shared/components/card/card.component.scss b/src/app/shared/components/card/card.component.scss
new file mode 100644
index 00000000..ec7ee856
--- /dev/null
+++ b/src/app/shared/components/card/card.component.scss
@@ -0,0 +1,40 @@
+:host {
+ .card__container {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: var(--spacing-r-3xl);
+ overflow: hidden;
+ color: var(--primary-contrast);
+ border: 1px solid var(--senary-contrast);
+ border-radius: var(--border-radius-sm);
+ transition:
+ border-color 0.3s ease,
+ background-color 0.3s ease;
+
+ &:hover {
+ .card__link {
+ background-position: 0 0;
+ }
+
+ background: var(--card-background-hover);
+ }
+
+ * + *:not(a, code, span),
+ .card__heading {
+ margin-block-end: var(--spacing-r-3xl);
+ }
+
+ .card__link {
+ position: relative;
+ margin-block: 0;
+ font-size: var(--font-size-sm);
+ color: transparent;
+ background: var(--card-link-background-hover);
+ background-position: 100% 0;
+ background-clip: text;
+ background-size: 200% 100%;
+ transition: background-position 2s ease-out;
+ }
+ }
+}
diff --git a/src/app/shared/components/card/card.component.ts b/src/app/shared/components/card/card.component.ts
new file mode 100755
index 00000000..8bc50afd
--- /dev/null
+++ b/src/app/shared/components/card/card.component.ts
@@ -0,0 +1,13 @@
+import { ChangeDetectionStrategy, Component, input } from '@angular/core';
+import { NgTemplateOutlet } from '@angular/common';
+
+@Component({
+ selector: 'app-card',
+ imports: [NgTemplateOutlet],
+ templateUrl: './card.component.html',
+ styleUrl: './card.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class CardComponent {
+ readonly href = input('');
+}
diff --git a/src/app/shared/components/cookie-popup/cookie-popup.component.html b/src/app/shared/components/cookie-popup/cookie-popup.component.html
new file mode 100644
index 00000000..233cda09
--- /dev/null
+++ b/src/app/shared/components/cookie-popup/cookie-popup.component.html
@@ -0,0 +1,18 @@
+@if (!hasAccepted()) {
+
+
+ This site uses Google Tag Manager and Google Analytics to make it work smoothly and to
+ understand user behavior.
+
+
+ Ok, got it!
+
+
+}
diff --git a/src/app/shared/components/cookie-popup/cookie-popup.component.scss b/src/app/shared/components/cookie-popup/cookie-popup.component.scss
new file mode 100644
index 00000000..cacab224
--- /dev/null
+++ b/src/app/shared/components/cookie-popup/cookie-popup.component.scss
@@ -0,0 +1,45 @@
+$popup-max-width: 265px;
+
+:host {
+ position: fixed;
+ right: var(--spacing-r-md);
+ bottom: var(--spacing-r-md);
+ z-index: var(--z-index-cookie-consent);
+ visibility: hidden;
+ opacity: 0;
+ animation: 1s linear forwards 0.5s fade-in;
+
+ .cookies__container {
+ max-width: $popup-max-width;
+ padding: var(--spacing-r-xl);
+ font-size: var(--font-size-sm);
+ background-color: var(--page-background);
+ border: 1px solid var(--senary-contrast);
+ border-radius: var(--border-radius-sm);
+ box-shadow: 0 0 10px 0 rgb(0 0 0 / 10%);
+ transition:
+ background-color 0.3s ease,
+ border-color 0.3s ease,
+ color 0.3s ease;
+
+ > div {
+ display: flex;
+ gap: var(--spacing-r-md);
+ align-items: center;
+ width: 100%;
+ margin-block-start: var(--spacing-r-xl);
+ }
+
+ p {
+ margin-block: 0;
+ color: var(--primary-contrast);
+ }
+ }
+
+ @keyframes fade-in {
+ 100% {
+ visibility: visible;
+ opacity: 1;
+ }
+ }
+}
diff --git a/src/app/shared/components/cookie-popup/cookie-popup.component.ts b/src/app/shared/components/cookie-popup/cookie-popup.component.ts
new file mode 100644
index 00000000..0efbaa98
--- /dev/null
+++ b/src/app/shared/components/cookie-popup/cookie-popup.component.ts
@@ -0,0 +1,30 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ inject,
+ signal,
+} from '@angular/core';
+import { ConsentState, CookieConsentService } from '~core/services/storage/cookie-consent.service';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+
+@Component({
+ selector: 'app-cookie-popup',
+ templateUrl: './cookie-popup.component.html',
+ styleUrl: './cookie-popup.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class CookiePopupComponent {
+ private readonly cookieConsentService = inject(CookieConsentService);
+
+ readonly hasAccepted = signal(this.cookieConsentService.getCookieState());
+
+ acceptCookies(): void {
+ const cookieSaved = this.cookieConsentService.setCookieConsent(ConsentState.GRANTED);
+ if (cookieSaved) {
+ this.hasAccepted.set(true);
+ }
+ }
+}
diff --git a/src/app/shared/components/decorative-header/decorative-header.component.html b/src/app/shared/components/decorative-header/decorative-header.component.html
new file mode 100755
index 00000000..1d6254f0
--- /dev/null
+++ b/src/app/shared/components/decorative-header/decorative-header.component.html
@@ -0,0 +1,6 @@
+
diff --git a/src/app/shared/components/decorative-header/decorative-header.component.scss b/src/app/shared/components/decorative-header/decorative-header.component.scss
new file mode 100644
index 00000000..95bf37f6
--- /dev/null
+++ b/src/app/shared/components/decorative-header/decorative-header.component.scss
@@ -0,0 +1,38 @@
+@use 'base/media-queries' as mq;
+
+$svg-width: 200px;
+
+:host {
+ .decorative-header__container {
+ position: relative;
+ display: flex;
+ flex-direction: column-reverse;
+ padding: var(--spacing-r-3xl);
+ margin-block-end: var(--spacing-r-4xl);
+ overflow: hidden;
+ background: var(--septenary-contrast);
+ border-radius: var(--border-radius-xl);
+ transition: background 0.3s ease;
+
+ @include mq.for-tablet-portrait-up {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .decorative-header__image {
+ width: $svg-width;
+ height: auto;
+ margin-bottom: var(--spacing-r-xl);
+
+ // stylelint-disable selector-pseudo-element-no-unknown
+ ::ng-deep svg {
+ overflow: unset;
+ }
+
+ @include mq.for-tablet-portrait-up {
+ margin-bottom: 0;
+ }
+ }
+ }
+}
diff --git a/src/app/shared/components/decorative-header/decorative-header.component.ts b/src/app/shared/components/decorative-header/decorative-header.component.ts
new file mode 100644
index 00000000..ea1b0082
--- /dev/null
+++ b/src/app/shared/components/decorative-header/decorative-header.component.ts
@@ -0,0 +1,25 @@
+import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
+import type { SafeHtml } from '@angular/platform-browser';
+import { DomSanitizer } from '@angular/platform-browser';
+import { FileService } from '~core/services/storage/file.service';
+import { rxResource } from '@angular/core/rxjs-interop';
+
+@Component({
+ selector: 'app-decorative-header',
+ templateUrl: './decorative-header.component.html',
+ styleUrl: './decorative-header.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class DecorativeHeaderComponent {
+ private readonly fileService = inject(FileService);
+ private readonly domSanitizer = inject(DomSanitizer);
+
+ readonly svgUrl = input('');
+ readonly svgResource = rxResource({
+ params: this.svgUrl,
+ stream: ({ params }) => this.fileService.getFileAsText(params),
+ });
+ readonly svgContent = computed(() =>
+ this.domSanitizer.bypassSecurityTrustHtml(this.svgResource.value()!),
+ );
+}
diff --git a/src/app/shared/components/error-404/error-404.component.html b/src/app/shared/components/error-404/error-404.component.html
new file mode 100755
index 00000000..337874d8
--- /dev/null
+++ b/src/app/shared/components/error-404/error-404.component.html
@@ -0,0 +1,15 @@
+
+ Error 404: A Wild Error Appeared
+
+
+
+
+
diff --git a/src/app/shared/components/error-404/error-404.component.scss b/src/app/shared/components/error-404/error-404.component.scss
new file mode 100644
index 00000000..d524f5ca
--- /dev/null
+++ b/src/app/shared/components/error-404/error-404.component.scss
@@ -0,0 +1,13 @@
+@use 'base/media-queries' as mq;
+@use 'components/pages';
+
+:host {
+ @include pages.read-page;
+
+ text-align: center;
+
+ img {
+ width: 300px;
+ height: auto;
+ }
+}
diff --git a/src/app/shared/components/error-404/error-404.component.ts b/src/app/shared/components/error-404/error-404.component.ts
new file mode 100755
index 00000000..caf7e7aa
--- /dev/null
+++ b/src/app/shared/components/error-404/error-404.component.ts
@@ -0,0 +1,11 @@
+import { ChangeDetectionStrategy, Component } from '@angular/core';
+import { NgOptimizedImage } from '@angular/common';
+
+@Component({
+ selector: 'app-error-404',
+ imports: [NgOptimizedImage],
+ templateUrl: './error-404.component.html',
+ styleUrl: 'error-404.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class Error404Component {}
diff --git a/src/app/shared/components/footer/footer.component.html b/src/app/shared/components/footer/footer.component.html
new file mode 100755
index 00000000..dd8a6df1
--- /dev/null
+++ b/src/app/shared/components/footer/footer.component.html
@@ -0,0 +1,129 @@
+
diff --git a/src/app/shared/components/footer/footer.component.scss b/src/app/shared/components/footer/footer.component.scss
new file mode 100755
index 00000000..3b0c092c
--- /dev/null
+++ b/src/app/shared/components/footer/footer.component.scss
@@ -0,0 +1,65 @@
+@use 'base/media-queries' as mq;
+
+:host {
+ margin-top: auto;
+
+ .footer-container {
+ position: relative;
+ justify-content: center;
+ padding: var(--layout-padding);
+ padding-inline-end: var(--spacing-r-xl);
+ container: footer / inline-size;
+ background-color: var(--page-background);
+ transition: background-color 0.3s ease;
+
+ .footer-columns {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: var(--spacing-r-4xl);
+ text-align: center;
+
+ @include mq.for-tablet-up {
+ grid-template-columns: repeat(4, 1fr);
+ }
+
+ h2 {
+ margin-block-end: var(--spacing-r-3xl);
+ font-size: var(--font-size-sm);
+ font-weight: var(--font-weight-bold);
+ letter-spacing: var(--letter-spacing-sm);
+ }
+
+ ul {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-r-xl);
+ padding: 0;
+ list-style: none;
+
+ li {
+ font-size: var(--font-size-xs);
+ }
+ }
+
+ a {
+ font-weight: var(--font-weight-light);
+ color: var(--quaternary-contrast);
+ transition: color 0.3s ease;
+
+ &:hover {
+ color: var(--primary-contrast);
+ }
+ }
+ }
+
+ .licence__paragraph {
+ grid-column: span 4;
+ margin-block-start: var(--spacing-r-4xl);
+ font-size: var(--font-size-xs);
+ font-weight: var(--font-weight-light);
+ color: var(--quaternary-contrast);
+ text-align: center;
+ transition: color 0.3s ease;
+ }
+ }
+}
diff --git a/src/app/shared/components/footer/footer.component.ts b/src/app/shared/components/footer/footer.component.ts
new file mode 100755
index 00000000..71fd4d95
--- /dev/null
+++ b/src/app/shared/components/footer/footer.component.ts
@@ -0,0 +1,9 @@
+import { ChangeDetectionStrategy, Component } from '@angular/core';
+
+@Component({
+ selector: 'app-footer',
+ templateUrl: './footer.component.html',
+ styleUrl: './footer.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class FooterComponent {}
diff --git a/src/app/shared/components/header/header.component.html b/src/app/shared/components/header/header.component.html
new file mode 100755
index 00000000..8d450245
--- /dev/null
+++ b/src/app/shared/components/header/header.component.html
@@ -0,0 +1,153 @@
+
+
+
+ @if (!menuOpen()) {
+
+ }
+
+
+
+
+
+
+
+
+ @if (!isUserLoggedIn()) {
+
+
+
+
+
+
+
+
+
+
+ } @else {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+
diff --git a/src/app/shared/components/header/header.component.scss b/src/app/shared/components/header/header.component.scss
new file mode 100755
index 00000000..31303312
--- /dev/null
+++ b/src/app/shared/components/header/header.component.scss
@@ -0,0 +1,158 @@
+@use 'base/media-queries' as mq;
+
+$line-active-item-bottom: -31px;
+$avatar-size: 40px;
+
+:host {
+ .nav__container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1px solid var(--septenary-contrast);
+
+ @include mq.for-tablet-up {
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ padding: 0 var(--spacing-r-xl);
+ }
+
+ &.open {
+ padding-bottom: var(--spacing-3xl);
+
+ @include mq.for-tablet-up {
+ padding-bottom: 0;
+ }
+ }
+
+ .nav-mobile__container {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+
+ &.open {
+ border-bottom: 1px solid var(--septenary-contrast);
+ }
+
+ .nav__hamburger {
+ display: block;
+ padding: var(--spacing-xl) var(--spacing-xl);
+ margin-left: auto;
+ }
+
+ .nav__item:first-of-type {
+ margin-left: var(--spacing-r-xl);
+ }
+
+ @include mq.for-tablet-up {
+ display: none;
+ }
+ }
+
+ .nav__items {
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-r-lg);
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ color: inherit;
+ text-decoration: none;
+
+ @include mq.for-tablet-up {
+ display: flex;
+ flex-flow: row wrap;
+ }
+
+ &.open {
+ display: flex;
+ padding-top: 0;
+ }
+
+ @include mq.for-tablet-up {
+ &.user-logged {
+ .nav__item:nth-child(4) {
+ margin-left: auto;
+ }
+ }
+
+ &:not(.user-logged) {
+ .nav__item:nth-child(5) {
+ margin-left: auto;
+ }
+ }
+ }
+
+ .nav__item {
+ display: block;
+ margin: var(--spacing-md) 0;
+
+ &:first-of-type {
+ margin-top: var(--spacing-r-4xl);
+ }
+
+ @include mq.for-tablet-up {
+ margin: var(--spacing-xxl) var(--spacing-lg);
+
+ &:first-of-type {
+ margin: 0 var(--spacing-md) 0;
+ }
+
+ &:last-of-type {
+ margin-right: var(--spacing-sm);
+ }
+
+ &:nth-child(-n + 0) {
+ align-self: flex-start;
+ }
+ }
+
+ .nav__link {
+ font-size: var(--font-size-md);
+ color: var(--text-color-secondary);
+ text-decoration: none;
+
+ &:hover {
+ color: var(--text-color-secondary-hover);
+ }
+
+ @include mq.for-tablet-up {
+ &.active {
+ position: relative;
+
+ &::after {
+ position: absolute;
+ bottom: $line-active-item-bottom;
+ left: 0;
+ width: 100%;
+ height: var(--spacing-xs);
+ content: '';
+ background-color: var(--full-contrast);
+ }
+ }
+ }
+
+ img:first-of-type {
+ margin: 0;
+ }
+ }
+ }
+ }
+
+ .avatar__image {
+ width: $avatar-size;
+ height: $avatar-size;
+ border-radius: 50%;
+ }
+
+ .github-logo__image {
+ opacity: 0.7;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+ }
+}
diff --git a/src/app/shared/components/header/header.component.ts b/src/app/shared/components/header/header.component.ts
new file mode 100755
index 00000000..1ea6ff42
--- /dev/null
+++ b/src/app/shared/components/header/header.component.ts
@@ -0,0 +1,67 @@
+import type { ElementRef, Signal } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ inject,
+ signal,
+ viewChild,
+} from '@angular/core';
+import { AUTH_URLS, ROOT_URLS } from '~core/constants/urls.constants';
+import { Router, RouterLink, RouterLinkActive } from '@angular/router';
+import { NgOptimizedImage, NgTemplateOutlet } from '@angular/common';
+import { AuthenticationService } from '~features/authentication/services/authentication.service';
+import { LanguageSelectorComponent } from '~shared/components/language-selector/language-selector.component';
+import { ThemeButtonComponent } from '~shared/components/theme-button/theme-button.component';
+import { ROOT_PATHS } from '~core/constants/paths.constants';
+import { translations } from '../../../../locale/translations';
+import type { SlDropdown } from '@shoelace-style/shoelace';
+import { PokemonSearchInputComponent } from '~features/pokemon/components/pokemon-search-input/pokemon-search-input.component';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+import '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';
+
+@Component({
+ selector: 'app-header',
+ imports: [
+ RouterLink,
+ RouterLinkActive,
+ NgOptimizedImage,
+ LanguageSelectorComponent,
+ NgTemplateOutlet,
+ ThemeButtonComponent,
+ PokemonSearchInputComponent,
+ ],
+ templateUrl: './header.component.html',
+ styleUrl: './header.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class HeaderComponent {
+ private readonly authenticationService = inject(AuthenticationService);
+ private readonly router = inject(Router);
+
+ readonly ROOT_PATHS = ROOT_PATHS;
+ readonly ROOT_URLS = ROOT_URLS;
+ readonly AUTH_URLS = AUTH_URLS;
+ readonly translations = translations;
+ readonly avatarDropdown: Signal | undefined> = viewChild('avatarDropdown');
+ readonly isUserLoggedIn = () => this.authenticationService.authState().isLoggedIn;
+ readonly menuOpen = signal(false);
+
+ logOutUser() {
+ this.closeMenu();
+ this.authenticationService.logOut();
+ void this.router.navigate([ROOT_URLS.home]);
+ }
+
+ toggleMenu() {
+ this.menuOpen.set(!this.menuOpen());
+ }
+
+ closeMenu() {
+ void this.avatarDropdown()?.nativeElement.hide();
+ this.menuOpen.set(false);
+ }
+}
diff --git a/src/app/shared/components/language-selector/language-selector.component.html b/src/app/shared/components/language-selector/language-selector.component.html
new file mode 100755
index 00000000..000b5e69
--- /dev/null
+++ b/src/app/shared/components/language-selector/language-selector.component.html
@@ -0,0 +1,13 @@
+
+ {{
+ localeIdText() | uppercase
+ }}
+
+
diff --git a/src/app/shared/components/language-selector/language-selector.component.ts b/src/app/shared/components/language-selector/language-selector.component.ts
new file mode 100755
index 00000000..3f01eac3
--- /dev/null
+++ b/src/app/shared/components/language-selector/language-selector.component.ts
@@ -0,0 +1,26 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ inject,
+ signal,
+} from '@angular/core';
+import { Router } from '@angular/router';
+import { UpperCasePipe } from '@angular/common';
+import { LanguageService } from '~core/services/language.service';
+
+import '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';
+
+@Component({
+ selector: 'app-language-selector',
+ imports: [UpperCasePipe],
+ templateUrl: './language-selector.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class LanguageSelectorComponent {
+ private readonly languageService = inject(LanguageService);
+
+ readonly router = inject(Router);
+ readonly localeIdText = signal(this.languageService.convertLocaleToAcceptLanguage());
+}
diff --git a/src/app/shared/components/progress-bar/progress-bar.component.ts b/src/app/shared/components/progress-bar/progress-bar.component.ts
new file mode 100644
index 00000000..22e28398
--- /dev/null
+++ b/src/app/shared/components/progress-bar/progress-bar.component.ts
@@ -0,0 +1,75 @@
+import type { Signal } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ effect,
+ inject,
+ signal,
+ viewChild,
+} from '@angular/core';
+import { NgProgressbar, NgProgressRef } from 'ngx-progressbar';
+import type { RouterEvent } from '@angular/router';
+import {
+ NavigationCancel,
+ NavigationEnd,
+ NavigationError,
+ NavigationSkipped,
+ NavigationStart,
+ Router,
+} from '@angular/router';
+import { toSignal } from '@angular/core/rxjs-interop';
+import { filter } from 'rxjs';
+
+/** Delay before showing the progress bar */
+export const PROGRESS_BAR_DELAY = 30;
+
+@Component({
+ selector: 'app-progress-bar',
+ imports: [NgProgressbar],
+ template: ` `,
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class ProgressBarComponent {
+ private readonly router = inject(Router);
+ private readonly progressBar: Signal = viewChild(NgProgressRef);
+ private readonly routerEvents = toSignal(
+ this.router.events.pipe(filter((event) => this.isNavigationEvent(event as RouterEvent))),
+ ) as Signal;
+ private readonly timeoutId = signal(null);
+
+ constructor() {
+ effect(() => {
+ const event = this.routerEvents();
+
+ if (event instanceof NavigationStart) {
+ const id = setTimeout(() => {
+ this.progressBar()?.start();
+ }, PROGRESS_BAR_DELAY) as unknown as number;
+
+ this.timeoutId.set(id);
+ }
+
+ if (this.isNavigationEndLike(event)) {
+ const id = this.timeoutId();
+ if (id !== null) {
+ clearTimeout(id);
+ }
+ this.progressBar()?.complete();
+ this.timeoutId.set(null);
+ }
+ });
+ }
+
+ private isNavigationEvent(event: RouterEvent): boolean {
+ return event instanceof NavigationStart || this.isNavigationEndLike(event);
+ }
+
+ private isNavigationEndLike(event: RouterEvent): boolean {
+ return (
+ event instanceof NavigationEnd ||
+ event instanceof NavigationCancel ||
+ event instanceof NavigationSkipped ||
+ event instanceof NavigationError
+ );
+ }
+}
diff --git a/src/app/shared/components/theme-button/theme-button.component.html b/src/app/shared/components/theme-button/theme-button.component.html
new file mode 100755
index 00000000..00caf2be
--- /dev/null
+++ b/src/app/shared/components/theme-button/theme-button.component.html
@@ -0,0 +1,7 @@
+
+ @if (themeSelected() === Theme.DARK) {
+
+ } @else {
+
+ }
+
diff --git a/src/app/shared/components/theme-button/theme-button.component.ts b/src/app/shared/components/theme-button/theme-button.component.ts
new file mode 100755
index 00000000..c90f36b2
--- /dev/null
+++ b/src/app/shared/components/theme-button/theme-button.component.ts
@@ -0,0 +1,26 @@
+import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
+import { Theme, ThemeManagerService } from '~core/services/ui/theme-manager.service';
+
+import '@shoelace-style/shoelace/dist/components/button/button.js';
+import '@shoelace-style/shoelace/dist/components/icon/icon.js';
+
+@Component({
+ selector: 'app-theme-button',
+ templateUrl: './theme-button.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class ThemeButtonComponent {
+ private readonly themeManagerService = inject(ThemeManagerService);
+
+ readonly themeSelected = this.themeManagerService.themeSelected;
+ readonly Theme = Theme;
+
+ toggleTheme() {
+ if (this.themeSelected() === Theme.DARK) {
+ this.themeManagerService.setTheme(Theme.LIGHT);
+ } else {
+ this.themeManagerService.setTheme(Theme.DARK);
+ }
+ }
+}
diff --git a/src/app/shared/components/toast-stack/toast-stack.component.html b/src/app/shared/components/toast-stack/toast-stack.component.html
new file mode 100755
index 00000000..667724ec
--- /dev/null
+++ b/src/app/shared/components/toast-stack/toast-stack.component.html
@@ -0,0 +1,14 @@
+@for (alert of alerts(); track alert.id) {
+
+}
diff --git a/src/app/shared/components/toast-stack/toast-stack.component.ts b/src/app/shared/components/toast-stack/toast-stack.component.ts
new file mode 100755
index 00000000..ffd8ef00
--- /dev/null
+++ b/src/app/shared/components/toast-stack/toast-stack.component.ts
@@ -0,0 +1,44 @@
+import type { ElementRef } from '@angular/core';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ CUSTOM_ELEMENTS_SCHEMA,
+ effect,
+ inject,
+ viewChildren,
+} from '@angular/core';
+import { AlertService } from '~core/services/ui/alert.service';
+import type { Alert } from '~core/constants/alerts.constants';
+
+import '@shoelace-style/shoelace/dist/components/alert/alert.js';
+
+@Component({
+ selector: 'app-toast-stack',
+ templateUrl: './toast-stack.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class ToastStackComponent {
+ private readonly alertService = inject(AlertService);
+ private readonly toastedAlertIds = new Set();
+ private readonly alertElements = viewChildren('alertReference');
+
+ readonly alerts = this.alertService.alerts;
+
+ constructor() {
+ effect(() => {
+ for (const element of this.alertElements()) {
+ const native = element.nativeElement as HTMLElement & { toast?: () => void };
+ const alertId = native.getAttribute('id');
+ if (alertId && !this.toastedAlertIds.has(alertId)) {
+ native.toast?.();
+ this.toastedAlertIds.add(alertId);
+ }
+ }
+ });
+ }
+
+ removeFromAlerts(alert: Alert) {
+ this.alertService.removeAlert(alert);
+ }
+}
diff --git a/src/app/shared/directives/lowercase.directive.ts b/src/app/shared/directives/lowercase.directive.ts
new file mode 100644
index 00000000..49ef91ea
--- /dev/null
+++ b/src/app/shared/directives/lowercase.directive.ts
@@ -0,0 +1,20 @@
+import { Directive, ElementRef, inject } from '@angular/core';
+import { NgControl } from '@angular/forms';
+
+@Directive({
+ selector: '[appLowercase]',
+ host: {
+ '(keydown)': 'onKeyDown()',
+ },
+})
+export class LowercaseDirective {
+ private readonly el = inject(ElementRef);
+ private readonly ngControl = inject(NgControl);
+
+ onKeyDown() {
+ const { control } = this.ngControl;
+ if (control) {
+ control.setValue(this.el.nativeElement.value.toLowerCase());
+ }
+ }
+}
diff --git a/src/app/shared/directives/sl-checkbox-control.directive.ts b/src/app/shared/directives/sl-checkbox-control.directive.ts
new file mode 100644
index 00000000..bc1971df
--- /dev/null
+++ b/src/app/shared/directives/sl-checkbox-control.directive.ts
@@ -0,0 +1,47 @@
+import { Directive, ElementRef, inject, model } from '@angular/core';
+import type { ControlValueAccessor } from '@angular/forms';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+@Directive({
+ selector: '[appSlCheckboxControl]',
+ providers: [
+ {
+ provide: NG_VALUE_ACCESSOR,
+ useExisting: AppSlCheckboxControlDirective,
+ multi: true,
+ },
+ ],
+ host: {
+ '[attr.checked]': 'checked()',
+ '(sl-change)': 'onSlChange()',
+ },
+})
+export class AppSlCheckboxControlDirective implements ControlValueAccessor {
+ private readonly el = inject(ElementRef);
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function,@typescript-eslint/no-unused-vars
+ private onChangeFn = (value: boolean) => {};
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ private onTouchedFn = () => {};
+
+ readonly checked = model(false);
+
+ writeValue(value: boolean): void {
+ this.checked.set(value);
+ }
+
+ registerOnChange(function_: () => void): void {
+ this.onChangeFn = function_;
+ }
+
+ registerOnTouched(function_: () => void): void {
+ this.onTouchedFn = function_;
+ }
+
+ onSlChange(): void {
+ const { checked } = this.el.nativeElement;
+ this.onChangeFn(checked);
+ this.onTouchedFn();
+ }
+}
diff --git a/src/app/shared/directives/sl-input-icon-focus.directive.ts b/src/app/shared/directives/sl-input-icon-focus.directive.ts
new file mode 100755
index 00000000..13cf33f1
--- /dev/null
+++ b/src/app/shared/directives/sl-input-icon-focus.directive.ts
@@ -0,0 +1,36 @@
+import { Directive, ElementRef, inject } from '@angular/core';
+
+@Directive({
+ selector: '[appSlInputIconFocus]',
+ host: {
+ '(mouseover)': 'onMouseOver()',
+ '(mouseout)': 'onMouseOut()',
+ '(focus)': 'onFocus()',
+ '(blur)': 'onBlur()',
+ },
+})
+export class SlInputIconFocusDirective {
+ private readonly el = inject(ElementRef);
+
+ private isFocused = false;
+
+ onMouseOver() {
+ this.el.nativeElement.querySelector('sl-icon').style.color = 'var(--primary-contrast)';
+ }
+
+ onMouseOut() {
+ if (!this.isFocused) {
+ this.el.nativeElement.querySelector('sl-icon').style.color = 'var(--quaternary-contrast)';
+ }
+ }
+
+ onFocus() {
+ this.isFocused = true;
+ this.el.nativeElement.querySelector('sl-icon').style.color = 'var(--primary-contrast)';
+ }
+
+ onBlur() {
+ this.isFocused = false;
+ this.el.nativeElement.querySelector('sl-icon').style.color = 'var(--quaternary-contrast)';
+ }
+}
diff --git a/src/app/shared/directives/sl-select-control.directive.ts b/src/app/shared/directives/sl-select-control.directive.ts
new file mode 100644
index 00000000..a0129473
--- /dev/null
+++ b/src/app/shared/directives/sl-select-control.directive.ts
@@ -0,0 +1,47 @@
+import { Directive, ElementRef, inject, model } from '@angular/core';
+import type { ControlValueAccessor } from '@angular/forms';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+@Directive({
+ selector: '[appSlSelectControl]',
+ providers: [
+ {
+ provide: NG_VALUE_ACCESSOR,
+ useExisting: AppSlSelectControlDirective,
+ multi: true,
+ },
+ ],
+ host: {
+ '[attr.value]': 'value()',
+ '(sl-change)': 'onSlChange()',
+ },
+})
+export class AppSlSelectControlDirective implements ControlValueAccessor {
+ private readonly el = inject(ElementRef);
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function,@typescript-eslint/no-unused-vars
+ private onChangeFn = (value: unknown) => {};
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ private onTouchedFn = () => {};
+
+ readonly value = model('');
+
+ writeValue(value: string): void {
+ this.value.set(value);
+ }
+
+ registerOnChange(function_: () => void): void {
+ this.onChangeFn = function_;
+ }
+
+ registerOnTouched(function_: () => void): void {
+ this.onTouchedFn = function_;
+ }
+
+ onSlChange(): void {
+ const { value } = this.el.nativeElement;
+ this.onChangeFn(value);
+ this.onTouchedFn();
+ }
+}
diff --git a/src/app/shared/directives/trim.directive.ts b/src/app/shared/directives/trim.directive.ts
new file mode 100755
index 00000000..24adbadc
--- /dev/null
+++ b/src/app/shared/directives/trim.directive.ts
@@ -0,0 +1,15 @@
+import { Directive, ElementRef, inject } from '@angular/core';
+
+@Directive({
+ selector: '[appTrim]',
+ host: {
+ '(blur)': 'onBlur()',
+ },
+})
+export class TrimDirective {
+ private readonly el = inject(ElementRef);
+
+ onBlur() {
+ this.el.nativeElement.value = this.el.nativeElement.value.trim();
+ }
+}
diff --git a/src/app/shared/interceptors/progress.interceptor.ts b/src/app/shared/interceptors/progress.interceptor.ts
deleted file mode 100644
index 52ab4146..00000000
--- a/src/app/shared/interceptors/progress.interceptor.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';
-import {Observable} from 'rxjs/Observable';
-import {ProgressBarService} from '../../core/progress-bar.service';
-
-export class ProgressInterceptor implements HttpInterceptor {
- constructor(private progressBarService: ProgressBarService) {
- }
-
- intercept(req: HttpRequest, next: HttpHandler): Observable> {
- this.progressBarService.increase();
- return next
- .handle(req)
- .do(event => {
- if (event instanceof HttpResponse) {
- this.progressBarService.decrease();
- }
- });
- }
-}
diff --git a/src/app/shared/interceptors/timing.interceptor.ts b/src/app/shared/interceptors/timing.interceptor.ts
deleted file mode 100644
index ccf85658..00000000
--- a/src/app/shared/interceptors/timing.interceptor.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';
-import {Observable} from 'rxjs/Observable';
-import {LoggerService} from '../../core/logger.service';
-
-export class TimingInterceptor implements HttpInterceptor {
- constructor() {
- }
-
- intercept(req: HttpRequest, next: HttpHandler): Observable> {
- const started = Date.now();
- return next
- .handle(req)
- .do(event => {
- if (event instanceof HttpResponse) {
- const elapsed = Date.now() - started;
- LoggerService.log(`Request for ${req.urlWithParams} took ${elapsed} ms.`);
- }
- });
- }
-}
diff --git a/src/app/shared/modules/material.module.ts b/src/app/shared/modules/material.module.ts
deleted file mode 100644
index 59b756ab..00000000
--- a/src/app/shared/modules/material.module.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import {
- MatAutocompleteModule,
- MatButtonModule,
- MatCardModule,
- MatDialogModule,
- MatGridListModule,
- MatIconModule,
- MatInputModule,
- MatListModule,
- MatMenuModule,
- MatProgressBarModule,
- MatProgressSpinnerModule,
- MatSliderModule,
- MatSnackBarModule,
- MatTooltipModule
-} from '@angular/material';
-import {NgModule} from '@angular/core';
-
-@NgModule({
- imports: [
- MatButtonModule,
- MatMenuModule,
- MatIconModule,
- MatCardModule,
- MatSliderModule,
- MatProgressBarModule,
- MatAutocompleteModule,
- MatInputModule,
- MatGridListModule,
- MatSnackBarModule,
- MatProgressSpinnerModule,
- MatTooltipModule,
- MatListModule,
- MatDialogModule
- ],
- exports: [
- MatButtonModule,
- MatMenuModule,
- MatIconModule,
- MatCardModule,
- MatSliderModule,
- MatProgressBarModule,
- MatAutocompleteModule,
- MatInputModule,
- MatGridListModule,
- MatSnackBarModule,
- MatProgressSpinnerModule,
- MatTooltipModule,
- MatListModule,
- MatDialogModule
- ],
-})
-
-export class MaterialModule {
-}
diff --git a/src/app/shared/modules/shared.module.ts b/src/app/shared/modules/shared.module.ts
deleted file mode 100644
index 6bcf25e3..00000000
--- a/src/app/shared/modules/shared.module.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {ModuleWithProviders, NgModule} from '@angular/core';
-import {MaterialModule} from './material.module';
-import {TranslateModule} from '@ngx-translate/core';
-import {HeroService} from '../../heroes/shared/hero.service';
-import {FlexLayoutModule} from '@angular/flex-layout';
-
-@NgModule({
- imports: [
- MaterialModule,
- FlexLayoutModule,
- TranslateModule
- ],
- exports: [
- MaterialModule,
- FlexLayoutModule,
- TranslateModule
- ]
-})
-
-export class SharedModule {
- static forRoot(): ModuleWithProviders {
- return {
- ngModule: SharedModule,
- providers: [
- HeroService
- ]
- };
- }
-}
diff --git a/src/app/shared/modules/tests.module.ts b/src/app/shared/modules/tests.module.ts
deleted file mode 100644
index c3bf4e93..00000000
--- a/src/app/shared/modules/tests.module.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import {NgModule} from '@angular/core';
-import {ProgressBarService} from '../../core/progress-bar.service';
-import {MaterialModule} from './material.module';
-import {BrowserModule} from '@angular/platform-browser';
-import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
-import {HttpClientModule} from '@angular/common/http';
-import {RouterModule} from '@angular/router';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-import {RouterTestingModule} from '@angular/router/testing';
-
-@NgModule({
- exports: [
- BrowserModule,
- BrowserAnimationsModule,
- HttpClientModule,
- RouterModule,
- RouterTestingModule,
- MaterialModule,
- FormsModule,
- ReactiveFormsModule
- ],
- providers: [ProgressBarService]
-})
-
-export class TestsModule {
-}
diff --git a/src/app/shared/pipes/first-title-case.pipe.ts b/src/app/shared/pipes/first-title-case.pipe.ts
new file mode 100644
index 00000000..8446c69c
--- /dev/null
+++ b/src/app/shared/pipes/first-title-case.pipe.ts
@@ -0,0 +1,11 @@
+import type { PipeTransform } from '@angular/core';
+import { Pipe } from '@angular/core';
+
+@Pipe({
+ name: 'firstTitleCase',
+})
+export class FirstTitleCasePipe implements PipeTransform {
+ transform(value: string | undefined): string {
+ return value ? value[0].toUpperCase() + value.slice(1) : '';
+ }
+}
diff --git a/src/app/shared/types/api-response.types.ts b/src/app/shared/types/api-response.types.ts
new file mode 100644
index 00000000..9c368e6c
--- /dev/null
+++ b/src/app/shared/types/api-response.types.ts
@@ -0,0 +1,11 @@
+export type ApiResponse = {
+ ok: boolean;
+ data: T;
+};
+
+export type ApiErrorResponse = {
+ error: {
+ internalCode?: number;
+ message?: string;
+ };
+};
diff --git a/src/app/shared/validators/email.validator.ts b/src/app/shared/validators/email.validator.ts
new file mode 100644
index 00000000..a2d9e370
--- /dev/null
+++ b/src/app/shared/validators/email.validator.ts
@@ -0,0 +1,13 @@
+import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
+
+export function emailValidator(): ValidatorFn {
+ return (control: AbstractControl): ValidationErrors | null => {
+ const { value } = control;
+ if (!value) {
+ return null;
+ }
+
+ const emailRegex = /^[^\s@]+@[^\s@][^\s.@]*\.[^\s@]+$/u;
+ return emailRegex.test(value) ? null : { email: value };
+ };
+}
diff --git a/src/app/shared/validators/password.validator.ts b/src/app/shared/validators/password.validator.ts
new file mode 100644
index 00000000..f2ceb052
--- /dev/null
+++ b/src/app/shared/validators/password.validator.ts
@@ -0,0 +1,18 @@
+import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
+
+export function passwordValidator(): ValidatorFn {
+ const validators = [
+ (value: string) => /[A-Z]/u.test(value), // Has uppercase
+ (value: string) => /[a-z]/u.test(value), // Has lowercase
+ (value: string) => /[0-9]/u.test(value), // Has numeric
+ (value: string) => value.length >= 8, // Is valid length
+ ];
+
+ return (control: AbstractControl): ValidationErrors | null => {
+ const value = control.value as string;
+ if (!value) {
+ return null;
+ }
+ return validators.every((function_) => function_(value)) ? null : { passwordStrength: true };
+ };
+}
diff --git a/src/assets/css/loading.css b/src/assets/css/loading.css
deleted file mode 100644
index fb3a79fa..00000000
--- a/src/assets/css/loading.css
+++ /dev/null
@@ -1,126 +0,0 @@
-html {
- height: 100%;
-}
-
-body {
- min-height: 100%;
-}
-
-.loading-page {
- height: 100%;
- width: 100%;
- position: absolute;
- background: #3f51b5;
-}
-
-.spinner {
- position: absolute;
- left: 48%;
- top: 40%;
- width: 55px;
- height: 65px;
- text-align: center;
-}
-
-.spinner {
- position: absolute;
- left: 48%;
- top: 40%;
- text-align: center;
- margin: 20px auto;
- width: 40px;
- height: 40px;
- -webkit-transform: rotateZ(45deg);
- transform: rotateZ(45deg);
-}
-
-.spinner .sk-cube {
- float: left;
- width: 50%;
- height: 50%;
- position: relative;
- -webkit-transform: scale(1.1);
- -ms-transform: scale(1.1);
- transform: scale(1.1);
-}
-
-.spinner .sk-cube:before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: white;
- -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both;
- animation: sk-foldCubeAngle 2.4s infinite linear both;
- -webkit-transform-origin: 100% 100%;
- -ms-transform-origin: 100% 100%;
- transform-origin: 100% 100%;
-}
-
-.spinner .sk-cube2 {
- -webkit-transform: scale(1.1) rotateZ(90deg);
- transform: scale(1.1) rotateZ(90deg);
-}
-
-.spinner .sk-cube3 {
- -webkit-transform: scale(1.1) rotateZ(180deg);
- transform: scale(1.1) rotateZ(180deg);
-}
-
-.spinner .sk-cube4 {
- -webkit-transform: scale(1.1) rotateZ(270deg);
- transform: scale(1.1) rotateZ(270deg);
-}
-
-.spinner .sk-cube2:before {
- -webkit-animation-delay: 0.3s;
- animation-delay: 0.3s;
-}
-
-.spinner .sk-cube3:before {
- -webkit-animation-delay: 0.6s;
- animation-delay: 0.6s;
-}
-
-.spinner .sk-cube4:before {
- -webkit-animation-delay: 0.9s;
- animation-delay: 0.9s;
-}
-
-@-webkit-keyframes sk-foldCubeAngle {
- 0%, 10% {
- -webkit-transform: perspective(140px) rotateX(-180deg);
- transform: perspective(140px) rotateX(-180deg);
- opacity: 0;
- }
- 25%, 75% {
- -webkit-transform: perspective(140px) rotateX(0deg);
- transform: perspective(140px) rotateX(0deg);
- opacity: 1;
- }
- 90%, 100% {
- -webkit-transform: perspective(140px) rotateY(180deg);
- transform: perspective(140px) rotateY(180deg);
- opacity: 0;
- }
-}
-
-@keyframes sk-foldCubeAngle {
- 0%, 10% {
- -webkit-transform: perspective(140px) rotateX(-180deg);
- transform: perspective(140px) rotateX(-180deg);
- opacity: 0;
- }
- 25%, 75% {
- -webkit-transform: perspective(140px) rotateX(0deg);
- transform: perspective(140px) rotateX(0deg);
- opacity: 1;
- }
- 90%, 100% {
- -webkit-transform: perspective(140px) rotateY(180deg);
- transform: perspective(140px) rotateY(180deg);
- opacity: 0;
- }
-}
\ No newline at end of file
diff --git a/src/assets/css/reset.css b/src/assets/css/reset.css
deleted file mode 100644
index 27fe71ee..00000000
--- a/src/assets/css/reset.css
+++ /dev/null
@@ -1,51 +0,0 @@
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, embed,
-figure, figcaption, footer, header,
-menu, nav, output, ruby, section, summary,
-time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font: inherit;
- vertical-align: baseline;
-}
-
-/* HTML5 display-role reset for older browsers */
-article, aside, details, figcaption, figure,
-footer, header, menu, nav, section {
- display: block;
-}
-
-html, body {
- height: 100%;
-}
-
-body {
- line-height: 1;
-}
-
-ol, ul {
- list-style: none;
-}
-
-blockquote, q {
- quotes: none;
-}
-
-blockquote:before, blockquote:after,
-q:before, q:after {
- content: none;
-}
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
\ No newline at end of file
diff --git a/src/assets/css/styles.scss b/src/assets/css/styles.scss
deleted file mode 100644
index b71f26e3..00000000
--- a/src/assets/css/styles.scss
+++ /dev/null
@@ -1,85 +0,0 @@
-@import 'http://github.com/~@angular/material/prebuilt-themes/deeppurple-amber.css';
-
-* {
- font-family: 'Roboto', sans-serif;
-}
-
-a, .cp {
- cursor: pointer;
-}
-
-.section-title {
- text-align: center;
- font-size: 1.5em;
- font-weight: 300;
- padding: 1em 0 0;
-}
-
-.flex-spacer {
- flex-grow: 1;
-}
-
-.progress-spinner {
- height: 60px !important;
- margin: 2em auto;
-}
-
-snack-bar-container {
- background: #3f51b5 !important;
-}
-
-.mat-menu-content {
- background: #3f51b5;
-}
-
-.mat-menu-item, .mat-menu-item .mat-icon {
- color: white;
- font-weight: 100;
-}
-
-.hero-actions {
- align-items: center;
- display: flex;
- padding-bottom: 1em;
-}
-
-.like-icon {
- color: #DC143C;
- cursor: pointer;
-}
-
-.mat-raised-button[disabled] {
- background: #bbb !important;
-}
-
-.mat-dialog-container {
- background: #3f51b5;
- color: white;
-}
-
-.mat-dialog-content {
- text-align: center;
- padding: 1em 24px !important;
-}
-
-.mat-dialog-title {
- text-align: center;
-}
-
-.hero-header-image {
- background-size: cover;
-}
-
-.mat-card-image {
- margin-bottom: -28px !important;
- border-top: 1px solid #eee;
-}
-
-.mat-list-avatar {
- height: 55px !important;
- width: 55px !important;
-}
-
-.text-right {
- text-align: right;
-}
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
deleted file mode 100644
index c982f9a3..00000000
--- a/src/assets/i18n/en.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "home": "Home",
- "heroesList": "Heroes list",
- "angularExampleApp": "Angular Example App",
- "language": "Language",
- "orange": "Orange",
- "yellow": "Yellow",
- "cyan": "Cyan",
- "name": "Name",
- "nameRequired": "Name is required",
- "hero-top": {
- "title": "Top Heroes"
- },
- "hero-create-new": {
- "newHero": "New hero"
- },
- "heroPower": "Hero power",
- "details": "details",
- "saveHero": "Save hero",
- "createNewHero": "Create new hero",
- "alert": "Alert",
- "sureRemoveHero": "Do you want to remove the hero?",
- "cancel": "Cancel",
- "remove": "Remove",
- "findHero": "Find a hero",
- "back": "Back",
- "noHero": "There is no hero!",
- "heroDuplicated": "Hero id is already taken",
- "heroDefault": "It's a default hero, you cannot delete it",
- "topHeroes": "Heroes most liked",
- "saved": "Saved!",
- "heroLikeMaximum": "The limit of votes is {{value}}!",
- "canVote": "Can vote :)",
- "cannotVote": "Cannot vote anymore :(",
- "createHero": "Create a hero",
- "realName": "Real name",
- "create": "Create",
- "realNameRequired": "Real name is required",
- "errorHasOcurred": "An error has ocurred",
- "heroCreated": "Hero created!",
- "removeHero": "Delete hero",
- "areYouSure": "Are you sure?",
- "no": "No",
- "yes": "Yes",
- "heroRemoved": "Hero has gone :(",
- "heroDetail": "Hero detail",
- "error404": "404 Error",
- "mayTheForce": "May the force be with you",
- "updateBrowser": "You are using an old browser, please update it and reload the page."
-}
\ No newline at end of file
diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json
deleted file mode 100644
index d0acd572..00000000
--- a/src/assets/i18n/es.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "home": "Inicio",
- "heroesList": "Lista de heroes",
- "angularExampleApp": "Angular aplicación de ejemplo",
- "language": "Idioma",
- "orange": "Naranja",
- "yellow": "Amarillo",
- "cyan": "Cian",
- "name": "Nombre",
- "nameRequired": "El nombre es obligatorio",
- "hero-top": {
- "title": "Top Heroes"
- },
- "hero-create-new": {
- "newHero": "Nuevo heroe"
- },
- "heroPower": "Poder del heroe",
- "details": "info",
- "saveHero": "Guardar heroe",
- "createNewHero": "Crear nuevo heroe",
- "alert": "Alerta",
- "sureRemoveHero": "¿Estas seguro de que quieres eliminar el heroe?",
- "cancel": "Cancelar",
- "remove": "Eliminar",
- "findHero": "Busca un heroe",
- "back": "Atras",
- "noHero": "No hay heroe!",
- "heroDuplicated": "El id del heroe ya está cogido!",
- "heroDefault": "Los heroes por defecto, no se pueden borrar!",
- "topHeroes": "Heroes más votados",
- "saved": "Guardado!",
- "heroLikeMaximum": "El límite de votos es {{value}}!",
- "canVote": "Puedes votar :)",
- "cannotVote": "No puedes votar más :(",
- "createHero": "Añadir un heroe",
- "realName": "Nombre real",
- "create": "Crear",
- "realNameRequired": "Nombre real es obligatorio",
- "errorHasOcurred": "Ha ocurrido un error",
- "heroCreated": "Heroe creado!",
- "removeHero": "Eliminar heroe",
- "areYouSure": "¿Estas seguro?",
- "no": "No",
- "yes": "Yes",
- "heroRemoved": "El heroe nos ha dejado :(",
- "heroDetail": "Detalle del heroe",
- "error404": "Error 404",
- "mayTheForce": "Que la fuerza te acompañe",
- "updateBrowser": "Estas usando un navegador antiguo, por favor actualiza la versión y recarga la página."
-}
\ No newline at end of file
diff --git a/src/assets/i18n/pt-br.json b/src/assets/i18n/pt-br.json
deleted file mode 100644
index 82ef0e46..00000000
--- a/src/assets/i18n/pt-br.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "home": "Inicio",
- "heroesList": "Lista de heróis",
- "angularExampleApp": "Aplicação exemplo de angular",
- "language": "Idioma",
- "orange": "Laranja",
- "yellow": "Amarelo",
- "cyan": "Ciano",
- "name": "Nome",
- "nameRequired": "O nome é obrigatório",
- "hero-top": {
- "title": "Top heróis"
- },
- "hero-create-new": {
- "newHero": "Novo herói"
- },
- "heroPower": "Poder",
- "details": "info",
- "saveHero": "Salvar herói",
- "createNewHero": "Criar novo herói",
- "alert": "Alerta",
- "sureRemoveHero": "Você tem certeza que quer remover o herói?",
- "cancel": "Cancelar",
- "remove": "Remover",
- "findHero": "Pesquisar herói",
- "back": "Voltar",
- "noHero": "Não há heróis",
- "heroDuplicated": "O ID do herói já está pronto",
- "heroDefault": "Este é um herói padrão, você não pode excluí-lo",
- "topHeroes": "Heróis mais curtidos",
- "saved": "Salvo!",
- "heroLikeMaximum": "O limite de votos é {{valor}}!",
- "canVote": "Vote :)",
- "cannotVote": "Não é mais possível voltar:(",
- "createHero": "Crie um herói",
- "realName": "Nome real",
- "create": "Criar",
- "realNameRequired": "O nome real e obrigatório",
- "errorHasOcurred": "Ocorreu um erro :(",
- "heroCreated": "Herói criado!",
- "removeHero": "Excluir herói",
- "areYouSure": "Você tem certeza?",
- "no": "Não",
- "yes": "Sim",
- "heroRemoved": "O herói se foi :(",
- "heroDetail": "Detalhes do herói",
- "error404": "Erro 404",
- "mayTheForce": "Que a força te acompanhe",
- "updateBrowser": "Você está usando um navegador antigo, atualize a versão e recarregue a página."
-}
\ No newline at end of file
diff --git a/src/assets/images/404.gif b/src/assets/images/404.gif
deleted file mode 100644
index 4593f537..00000000
Binary files a/src/assets/images/404.gif and /dev/null differ
diff --git a/src/assets/images/angular.svg b/src/assets/images/angular.svg
deleted file mode 100644
index a0c7d054..00000000
--- a/src/assets/images/angular.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/assets/images/github-circle-white-transparent.svg b/src/assets/images/github-circle-white-transparent.svg
deleted file mode 100644
index dcb637f1..00000000
--- a/src/assets/images/github-circle-white-transparent.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
- github-circle-white-transparent
-
-
\ No newline at end of file
diff --git a/src/assets/images/heroes/1-thumbnail.jpg b/src/assets/images/heroes/1-thumbnail.jpg
deleted file mode 100644
index a3653b53..00000000
Binary files a/src/assets/images/heroes/1-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/1.jpg b/src/assets/images/heroes/1.jpg
deleted file mode 100644
index 4121007e..00000000
Binary files a/src/assets/images/heroes/1.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/2-thumbnail.jpg b/src/assets/images/heroes/2-thumbnail.jpg
deleted file mode 100644
index 1ea9ce2b..00000000
Binary files a/src/assets/images/heroes/2-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/2.jpg b/src/assets/images/heroes/2.jpg
deleted file mode 100644
index 91a93cfe..00000000
Binary files a/src/assets/images/heroes/2.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/3-thumbnail.jpg b/src/assets/images/heroes/3-thumbnail.jpg
deleted file mode 100644
index 6d40501d..00000000
Binary files a/src/assets/images/heroes/3-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/3.jpg b/src/assets/images/heroes/3.jpg
deleted file mode 100644
index 3d8b6c32..00000000
Binary files a/src/assets/images/heroes/3.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/4-thumbnail.jpg b/src/assets/images/heroes/4-thumbnail.jpg
deleted file mode 100644
index c5a01563..00000000
Binary files a/src/assets/images/heroes/4-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/4.jpg b/src/assets/images/heroes/4.jpg
deleted file mode 100644
index c73f4688..00000000
Binary files a/src/assets/images/heroes/4.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/5-thumbnail.jpg b/src/assets/images/heroes/5-thumbnail.jpg
deleted file mode 100644
index 32a6bdf2..00000000
Binary files a/src/assets/images/heroes/5-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/5.jpg b/src/assets/images/heroes/5.jpg
deleted file mode 100644
index 326c5471..00000000
Binary files a/src/assets/images/heroes/5.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/6-thumbnail.jpg b/src/assets/images/heroes/6-thumbnail.jpg
deleted file mode 100644
index 3e4c5de9..00000000
Binary files a/src/assets/images/heroes/6-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/6.jpg b/src/assets/images/heroes/6.jpg
deleted file mode 100644
index 3d21e88b..00000000
Binary files a/src/assets/images/heroes/6.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/7-thumbnail.jpg b/src/assets/images/heroes/7-thumbnail.jpg
deleted file mode 100644
index 28002c19..00000000
Binary files a/src/assets/images/heroes/7-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/7.jpg b/src/assets/images/heroes/7.jpg
deleted file mode 100644
index 249a30f9..00000000
Binary files a/src/assets/images/heroes/7.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/8-thumbnail.jpg b/src/assets/images/heroes/8-thumbnail.jpg
deleted file mode 100644
index dcfa93d2..00000000
Binary files a/src/assets/images/heroes/8-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/8.jpg b/src/assets/images/heroes/8.jpg
deleted file mode 100644
index 9e9c65f3..00000000
Binary files a/src/assets/images/heroes/8.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/9-thumbnail.jpg b/src/assets/images/heroes/9-thumbnail.jpg
deleted file mode 100644
index 8e28d539..00000000
Binary files a/src/assets/images/heroes/9-thumbnail.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/9.jpg b/src/assets/images/heroes/9.jpg
deleted file mode 100644
index a33dfc28..00000000
Binary files a/src/assets/images/heroes/9.jpg and /dev/null differ
diff --git a/src/assets/images/heroes/default.png b/src/assets/images/heroes/default.png
deleted file mode 100644
index 822078a3..00000000
Binary files a/src/assets/images/heroes/default.png and /dev/null differ
diff --git a/src/assets/js/gtm.js b/src/assets/js/gtm.js
deleted file mode 100644
index 73b95c9a..00000000
--- a/src/assets/js/gtm.js
+++ /dev/null
@@ -1,5 +0,0 @@
-(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
- new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
- j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
- 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
-})(window,document,'script','dataLayer','GTM-TF7QP5M');
\ No newline at end of file
diff --git a/src/assets/js/modernizr.js b/src/assets/js/modernizr.js
deleted file mode 100644
index b24934dd..00000000
--- a/src/assets/js/modernizr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! modernizr 3.5.0 (Custom Build) | MIT *
- * https://modernizr.com/download/?-eventlistener-localstorage-queryselector-sessionstorage-setclasses !*/
-!function(e,n,s){function o(e,n){return typeof e===n}function t(){var e,n,s,t,a,l,c;for(var f in i)if(i.hasOwnProperty(f)){if(e=[],n=i[f],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(s=0;s
-
-
- Angular Example App
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ Angular Example App
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/locale/messages.es.xlf b/src/locale/messages.es.xlf
new file mode 100755
index 00000000..8e1cba26
--- /dev/null
+++ b/src/locale/messages.es.xlf
@@ -0,0 +1,540 @@
+
+
+
+
+ ¡Welcome back!
+ ¡Bienvenido de nuevo!
+
+
+ Password
+ Contraseña
+
+
+ Enter
+ Entrar
+
+
+ Register
+ Regístrate
+
+
+ Field required.
+ Campo requerido
+
+
+ Must contain at least one lowercase letter, one uppercase letter and one number. No special characters.
+ La contraseña debe contener al menos una letra minúscula, una mayúscula y un número. No se admiten caracteres especiales.
+
+
+ Angular Example App
+ Angular Example App ES
+
+
+ What's your favourite pokemon?
+ ¿Cuál es tu Pokémon favorito?
+
+
+ Home
+ Inicio
+
+
+ Log in
+ Iniciar sesión
+
+
+ Log out
+ Cerrar sesión
+
+
+ pokemon image
+ imagen de pokemon
+
+
+ Skip to main content
+ Saltar al contenido principal
+
+
+ This site uses Google Tag Manager and Google Analytics to make it work smoothly and to understand user behavior.
+ Este sitio utiliza Google Tag Manager y Google Analytics para que funcione sin problemas y también para entender cómo se comportan los usuarios.
+
+
+ Ok, got it!
+ ¡Ok, entendido!
+
+
+ Error 404: A Wild Error Appeared
+ Error 404: Ha aparecido un error salvaje
+
+
+ ash and pikachu sad
+ Ash y Pikachu tristes
+
+
+ Angular
+ Angular
+
+
+ Angular blog
+ Blog de Angular
+
+
+ Blog
+ Blog
+
+
+ X
+ X
+
+
+ YouTube
+ YouTube
+
+
+ Join the discussions at Angular Community Discord server.
+ Únete a las discusiones en el servidor de Discord de la comunidad Angular.
+
+
+ Discord
+ Discord
+
+
+ GitHub
+ GitHub
+
+
+ Contribute to Angular Example App
+ Contribuir a Angular Example App
+
+
+ Contribute
+ Contribuir
+
+
+ Post issues and suggestions on github.
+ Publica problemas y sugerencias en github.
+
+
+ Report Issues
+ Reportar problemas
+
+
+ Resources
+ Recursos
+
+
+ Stack Overflow: where the community answers your technical Angular questions.
+ Stack Overflow: donde la comunidad responde a tus preguntas técnicas sobre Angular.
+
+
+ Stack Overflow
+ Stack Overflow
+
+
+ Angular Google Developer Experts
+ Expertos en Google Developer de Angular
+
+
+ Angular Google Developer Experts
+ Expertos en Google Developer de Angular
+
+
+ Languages
+ Idiomas
+
+
+ English
+ Inglés
+
+
+ English (US)
+ Inglés (EE.UU.)
+
+
+ Español
+ Español
+
+
+ Español (España)
+ Español (España)
+
+
+ ©2016-2025. Code licensed under a MIT License
+ ©2016-2025. Código con licencia bajo Licencia MIT.
+
+
+ License text
+ Texto de licencia
+
+
+ angular logo
+ logo de angular
+
+
+ ES-ES
+ ES-ES
+
+
+ EN-US
+ EN-US
+
+
+ Page load progress
+ Progreso de carga de la página
+
+
+ Enter your email
+ Introduce tu correo electrónico
+
+
+ Email
+ Correo electrónico
+
+
+ Enter your password
+ Introduce tu contraseña
+
+
+ Don't have an account yet? Register
+ ¿Aún no tienes cuenta? Regístrate
+
+
+ My account
+ Mi cuenta
+
+
+ Enter your name
+ Introduce tu nombre
+
+
+ Name
+ Nombre
+
+
+ Language
+ Idioma
+
+
+ Español (España)
+ Español (España)
+
+
+ Your favourite pokemon is:
+ Tu Pokémon favorito es:
+
+
+ Save
+ Guardar
+
+
+ ash standing
+ ash de pie
+
+
+ ¡Register and complete your Pokédex!
+ ¡Regístrate y completa tu Pokédex!
+
+
+ Retype the password
+ Vuelve a escribir la contraseña
+
+
+ Confirm password
+ Confirmar contraseña
+
+
+ Type a pokemon
+ Escribe un Pokémon
+
+
+ I’ve caught 'em all (the terms and privacy policy) and I’m cool with them!
+ He atrapado todos (los términos y la política de privacidad) y estoy de acuerdo con ellos!
+
+
+ Create account
+ Crear cuenta
+
+
+ Do you have an account? Log in
+ ¿Tienes cuenta? Inicia sesión
+
+
+ Angular Example App
+ Angular Example App
+
+
+ This project is a modern, real-world application designed as a foundation for creating new Angular-based projects and also a practical resource for learning.
+ Este proyecto es una aplicación actualizada y real que está diseñada como base para crear nuevos proyectos basados en Angular y también como un recurso para aprender.
+
+
+ It comes with features like internationalization, standalone components, a more logical folder structure, etc, making it a great starting point for building scalable Angular apps.
+ Incluye características como internacionalización, standalone components, una estructura de carpetas más lógica, etc., lo que lo convierte en un excelente punto de partida para crear aplicaciones en Angular que escalen con facilidad y sean mantenibles.
+
+
+ Whether you’re looking for a boilerplate or a solid base project, this setup is designed to help you create clean, maintainable code with ease.
+ Ya sea que busques una plantilla o un proyecto base sólido, esta configuración está diseñada para ayudarte a crear código limpio y mantenible con facilidad.
+
+
+ This project leverages the PokeAPI to provide fun and practical examples, making it easier to understand key concepts in Angular development. By using data from the Pokémon universe, it offers a familiar and engaging way to showcase features like fetching data, handling API calls, and displaying dynamic content.
+ Este proyecto aprovecha la PokeAPI para proporcionar ejemplos divertidos y prácticos, facilitando la comprensión de conceptos clave en el desarrollo de Angular. Al usar datos del universo Pokémon, ofrece una forma familiar y atractiva de mostrar características como la obtención de datos, el manejo de llamadas API y la visualización de contenido dinámico.
+
+
+ Key features
+ Características clave
+
+
+ My Pokemon
+ Mis Pokémon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Uh-oh, it looks like you haven’t caught any Pokémon yet! Need help finding a pokemon? Try using the search bar to track them down. Gotta catch ‘em all!
+ ¡Vaya, parece que no has atrapado ningún Pokémon aún! ¿Necesitas ayuda para encontrar uno? Intenta usar la barra de búsqueda para rastrearlos. ¡Hay que atraparlos a todos!
+
+
+ N.º: Height: dm Weight: hg
+ N.º: Altura: dm Peso: hg
+
+
+ 🎯 Nice catch, ! You’re one step closer to being a Pokémon Master—keep it up! 🌟
+ 🎯 Bien atrapado, ! Estás un paso más cerca de ser un Maestro Pokémon—¡sigue así! 🌟
+
+
+ Already got this one, keep going!
+ ¡Este ya lo tienes, sigue adelante!
+
+
+ Still gotta catch 'em all, this one's missing from your Pokédex!
+ ¡Aún te falta atraparlos todos, este falta en tu Pokédex!
+
+
+ POKEBALL
+ POKÉBALL
+
+
+ Trainer frame 1
+ Marco del entrenador 1
+
+
+ Trainer frame 2
+ Marco del entrenador 2
+
+
+ Trainer frame 3
+ Marco del entrenador 3
+
+
+ Trainer frame 4
+ Marco del entrenador 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ N.º:
+ N.º:
+
+
+ Height: dm
+ Altura: dm
+
+
+ Weight: hg
+ Peso: hg
+
+
+ Pokeball
+ Pokeball
+
+
+ My pokemon
+ Mis Pokémon
+
+
+ Passwords do not match.
+ Las contraseñas no coinciden.
+
+
+ Field required. PokeAPI does not found that pokemon name.
+ Campo requerido. PokeAPI no encontró ese nombre de Pokémon.
+
+
+ Find more!
+ ¡Encuentra más!
+
+
+ Find a pokemon
+ Encuentra un Pokémon
+
+
+ Account settings saved. You're all set!
+ Configuración de la cuenta guardada. ¡Todo listo!
+
+
+ Oops! Something went wrong. Please try again later or leave an issue if it persists.
+ ¡Vaya! Algo salió mal. Intenta nuevamente más tarde o deja un problema si persiste.
+
+
+ Invalid credentials. Not very effective, try again!
+ Credenciales inválidas. ¡No muy efectivo, intenta de nuevo!
+
+
+ Register failed. This attempt wasn’t very effective, try again!
+ Registro fallido. ¡Este intento no fue muy efectivo, intenta de nuevo!
+
+
+ Pokémon not found. Double-check the name and try again!
+ Pokémon no encontrado. ¡Verifica el nombre y vuelve a intentarlo!
+
+
+ Angular Signals
+ Angular Signals
+
+
+ Unlock reactivity with Angular Signals.
+ Desbloquea la reactividad con Angular Signals.
+
+
+ Signals provide a declarative way to manage state and reactivity in your application, simplifying data flow and improving performance.
+ Signals ofrecen una forma declarativa de gestionar el estado y la reactividad en tu aplicación, simplificando el flujo de datos y mejorando el rendimiento.
+
+
+ Learn more about Signals
+ Aprende más sobre Signals
+
+
+ Internationalization
+ Internationalization
+
+
+ Build apps for a global audience.
+ Crea aplicaciones para una audiencia global.
+
+
+ Angular’s internationalization tools make it seamless to localize your app, handle translations, and format dates, numbers, and currencies for any locale.
+ Las herramientas de internacionalización de Angular facilitan la localización de tu aplicación, el manejo de traducciones y el formato de fechas, números y monedas para cualquier ubicación.
+
+
+ Explore Internationalization
+ Explora la Internacionalización
+
+
+ Reactive Forms
+ Reactive Forms
+
+
+ Effortless form handling and validation.
+ Gestión y validación de formularios sin esfuerzo.
+
+
+ Reactive Forms empower you to create robust, dynamic forms with a model-driven approach, making validation, dynamic updates, and testing a breeze.
+ Reactive Forms te permiten crear formularios robustos y dinámicos con un enfoque basado en modelos, facilitando la validación, las actualizaciones dinámicas y las pruebas.
+
+
+ Start with Reactive Forms
+ Comienza con Reactive Forms
+
+
+ Animations
+ Animations
+
+
+ Bring your UI to life with Angular Animations.
+ Da vida a tu interfaz de usuario con Angular Animations.
+
+
+ Create smooth transitions and engaging effects with Angular’s powerful animation API, making your application visually appealing and interactive.
+ Crea transiciones suaves y efectos atractivos con la potente API de animación de Angular, haciendo que tu aplicación sea visualmente atractiva e interactiva.
+
+
+ Discover Angular Animations
+ Descubre Angular Animations
+
+
+ Field required. No real email validation. Format: example@domain.com
+ Campo requerido. No hay validación real del correo. Formato: ejemplo@dominio.com
+
+
+ avatar image
+ avatar image
+
+
+ pokemon pikachu
+ pokemon pikachu
+
+
+ pokemon haunter
+ pokemon haunter
+
+
+ pokeball
+ pokeball
+
+
+ ash and pikachu
+ ash y pikachu
+
+
+ pokemon charizard
+ pokemon charizard
+
+
+ pokemon blastoise
+ pokemon blastoise
+
+
+ ash jumping with a pokeball
+ ash saltando con una pokeball
+
+
+ pokemon
+ pokemon
+
+
+ github logo
+ logo de github
+
+
+ Users seeing this page:
+ Usuarios viendo esta página:
+
+
+ An angular example app, so you can see best practices in action.
+ Una aplicación de ejemplo de Angular, para que puedas ver las mejores prácticas en acción.
+
+
+ No session. Please log in.
+ No tienes sesion. Por favor, haz login.
+
+
+ Loading...
+ Cargando...
+
+
+
+
\ No newline at end of file
diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf
new file mode 100755
index 00000000..f8a49280
--- /dev/null
+++ b/src/locale/messages.xlf
@@ -0,0 +1,402 @@
+
+
+
+
+
+ ¡Welcome back!
+
+
+ Password
+
+
+ Enter
+
+
+ Register
+
+
+ Field required.
+
+
+ Must contain at least one lowercase letter, one uppercase letter and one number. No special characters.
+
+
+ Angular Example App
+
+
+ Log in
+
+
+ Home
+
+
+ What's your favourite pokemon?
+
+
+ Log out
+
+
+ pokemon image
+
+
+ Still gotta catch 'em all, this one's missing from your Pokédex!
+
+
+ English (US)
+
+
+
+
+
+
+
+
+
+ Already got this one, keep going!
+
+
+ N.º: Height: dm Weight: hg
+
+
+ Español (España)
+
+
+ Your favourite pokemon is:
+
+
+ GitHub
+
+
+ Passwords do not match.
+
+
+ Weight: hg
+
+
+ Pokémon not found. Double-check the name and try again!
+
+
+ Trainer frame 2
+
+
+ Languages
+
+
+ Enter your email
+
+
+ ash standing
+
+
+ Contribute
+
+
+ Resources
+
+
+ Enter your password
+
+
+ EN-US
+
+
+ Language
+
+
+ X
+
+
+ Contribute to Angular Example App
+
+
+ Retype the password
+
+
+ Enter your name
+
+
+ Join the discussions at Angular Community Discord server.
+
+
+ Post issues and suggestions on github.
+
+
+ N.º:
+
+
+ Save
+
+
+ Confirm password
+
+
+ Invalid credentials. Not very effective, try again!
+
+
+ Skip to main content
+
+
+ Page load progress
+
+
+ Register failed. This attempt wasn’t very effective, try again!
+
+
+ Español (España)
+
+
+ Discord
+
+
+ Find more!
+
+
+ Account settings saved. You're all set!
+
+
+ Angular Google Developer Experts
+
+
+ Pokeball
+
+
+ Error 404: A Wild Error Appeared
+
+
+ Report Issues
+
+
+ This site uses Google Tag Manager and Google Analytics to make it work smoothly and to understand user behavior.
+
+
+ Email
+
+
+ Stack Overflow: where the community answers your technical Angular questions.
+
+
+ Key features
+
+
+ Height: dm
+
+
+ 🎯 Nice catch, ! You’re one step closer to being a Pokémon Master—keep it up! 🌟
+
+
+ Ok, got it!
+
+
+ angular logo
+
+
+ This project is a modern, real-world application designed as a foundation for creating new Angular-based projects and also a practical resource for learning.
+
+
+ English
+
+
+ Create account
+
+
+ ES-ES
+
+
+ Trainer frame 3
+
+
+ ash and pikachu sad
+
+
+ Do you have an account? Log in
+
+
+ Stack Overflow
+
+
+ ©2016-2025. Code licensed under a MIT License
+
+
+ ¡Register and complete your Pokédex!
+
+
+ Angular blog
+
+
+ Find a pokemon
+
+
+ It comes with features like internationalization, standalone components, a more logical folder structure, etc, making it a great starting point for building scalable Angular apps.
+
+
+ Español
+
+
+ Type a pokemon
+
+
+ Blog
+
+
+ License text
+
+
+ Don't have an account yet? Register
+
+
+ Field required. PokeAPI does not found that pokemon name.
+
+
+ Uh-oh, it looks like you haven’t caught any Pokémon yet! Need help finding a pokemon? Try using the search bar to track them down. Gotta catch ‘em all!
+
+
+ Oops! Something went wrong. Please try again later or leave an issue if it persists.
+
+
+ YouTube
+
+
+ Angular
+
+
+ My Pokemon
+
+
+ Angular Example App
+
+
+ Angular Google Developer Experts
+
+
+ This project leverages the PokeAPI to provide fun and practical examples, making it easier to understand key concepts in Angular development. By using data from the Pokémon universe, it offers a familiar and engaging way to showcase features like fetching data, handling API calls, and displaying dynamic content.
+
+
+ Trainer frame 1
+
+
+ My account
+
+
+ Name
+
+
+ Whether you’re looking for a boilerplate or a solid base project, this setup is designed to help you create clean, maintainable code with ease.
+
+
+ I’ve caught 'em all (the terms and privacy policy) and I’m cool with them!
+
+
+ POKEBALL
+
+
+
+
+
+
+
+
+
+
+
+
+ Trainer frame 4
+
+
+ My pokemon
+
+
+ Reactive Forms
+
+
+ Explore Internationalization
+
+
+ Animations
+
+
+ Create smooth transitions and engaging effects with Angular’s powerful animation API, making your application visually appealing and interactive.
+
+
+ Angular Signals
+
+
+ Internationalization
+
+
+ Angular’s internationalization tools make it seamless to localize your app, handle translations, and format dates, numbers, and currencies for any locale.
+
+
+ Start with Reactive Forms
+
+
+ Discover Angular Animations
+
+
+ Effortless form handling and validation.
+
+
+ Build apps for a global audience.
+
+
+ Signals provide a declarative way to manage state and reactivity in your application, simplifying data flow and improving performance.
+
+
+ Unlock reactivity with Angular Signals.
+
+
+ Learn more about Signals
+
+
+ Reactive Forms empower you to create robust, dynamic forms with a model-driven approach, making validation, dynamic updates, and testing a breeze.
+
+
+ Bring your UI to life with Angular Animations.
+
+
+ Field required. No real email validation. Format: example@domain.com
+
+
+ pokeball
+
+
+ avatar image
+
+
+ pokemon
+
+
+ ash jumping with a pokeball
+
+
+ ash and pikachu
+
+
+ pokemon haunter
+
+
+ pokemon pikachu
+
+
+ pokemon charizard
+
+
+ pokemon blastoise
+
+
+ github logo
+
+
+ Users seeing this page:
+
+
+ An angular example app, so you can see best practices in action.
+
+
+ No session. Please log in.
+
+
+ Loading...
+
+
+
+
diff --git a/src/locale/translations.ts b/src/locale/translations.ts
new file mode 100755
index 00000000..fbc6548d
--- /dev/null
+++ b/src/locale/translations.ts
@@ -0,0 +1,24 @@
+export const translations = {
+ seoTitle: $localize`Angular Example App`,
+ seoDescription: $localize`An angular example app, so you can see best practices in action.`,
+ home: $localize`Home`,
+ logIn: $localize`Log in`,
+ register: $localize`Register`,
+ myAccount: $localize`My account`,
+ myPokemon: $localize`My pokemon`,
+ logOut: $localize`Log out`,
+ fieldRequired: $localize`Field required.`,
+ emailHelpText: $localize`Field required. No real email validation. Format: example@domain.com`,
+ passwordHelpText: $localize`Must contain at least one lowercase letter, one uppercase letter and one number. No special characters.`,
+ confirmPasswordHelpText: $localize`Passwords do not match.`,
+ pokemonHelpText: $localize`Field required. PokeAPI does not found that pokemon name.`,
+ logout: $localize`Log out`,
+ findMore: $localize`Find more!`,
+ findPokemon: $localize`Find a pokemon`,
+ myAccountSuccessAlert: $localize`Account settings saved. You're all set!`,
+ genericErrorAlert: $localize`Oops! Something went wrong. Please try again later or leave an issue if it persists.`,
+ loginCredentialsError: $localize`Invalid credentials. Not very effective, try again!`,
+ genericRegisterError: $localize`Register failed. This attempt wasn’t very effective, try again!`,
+ pokemonNotFoundError: $localize`Pokémon not found. Double-check the name and try again!`,
+ sessionExpired: $localize`No session. Please log in.`,
+};
diff --git a/src/main.server.ts b/src/main.server.ts
new file mode 100644
index 00000000..cce54817
--- /dev/null
+++ b/src/main.server.ts
@@ -0,0 +1,9 @@
+import type { BootstrapContext } from '@angular/platform-browser';
+import { bootstrapApplication } from '@angular/platform-browser';
+import { AppComponent } from './app/app.component';
+import { config } from './app/app.config.server';
+
+const bootstrap = async (context: BootstrapContext) =>
+ bootstrapApplication(AppComponent, config, context);
+
+export default bootstrap;
diff --git a/src/main.ts b/src/main.ts
old mode 100644
new mode 100755
index d05547b9..b76e16d7
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,12 +1,12 @@
-import {enableProdMode} from '@angular/core';
-import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
+///
+import { bootstrapApplication } from '@angular/platform-browser';
+import { AppComponent } from './app/app.component';
+import { appConfig } from './app/app.config';
+import { setBasePath } from '@shoelace-style/shoelace/dist/utilities/base-path.js';
-import {AppModule} from './app/app.module';
-import {environment} from './environments/environment';
+setBasePath('https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.17.1/cdn/');
-if (environment.production) {
- enableProdMode();
-}
-
-platformBrowserDynamic().bootstrapModule(AppModule)
- .catch(err => console.log(err));
+bootstrapApplication(AppComponent, appConfig).catch((error) => {
+ // eslint-disable-next-line no-console
+ console.error(error);
+});
diff --git a/src/polyfills.ts b/src/polyfills.ts
deleted file mode 100644
index 3aad818e..00000000
--- a/src/polyfills.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
- * file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
- *
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
- */
-
-/***************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/** IE9, IE10 and IE11 requires all of the following polyfills. **/
-import 'core-js/es6/symbol';
-import 'core-js/es6/object';
-import 'core-js/es6/function';
-import 'core-js/es6/parse-int';
-import 'core-js/es6/parse-float';
-import 'core-js/es6/number';
-import 'core-js/es6/math';
-import 'core-js/es6/string';
-import 'core-js/es6/date';
-import 'core-js/es6/array';
-import 'core-js/es6/regexp';
-import 'core-js/es6/map';
-import 'core-js/es6/weak-map';
-import 'core-js/es6/set';
-
-/** IE10 and IE11 requires the following for NgClass support on SVG elements */
-import 'classlist.js'; // Run `npm install --save classlist.js`.
-
-/** IE10 and IE11 requires the following for the Reflect API. */
-import 'core-js/es6/reflect';
-
-
-/** Evergreen browsers require these. **/
-// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
-import 'core-js/es7/reflect';
-
-
-/**
- * Required to support Web Animations `@angular/platform-browser/animations`.
- * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
- **/
-// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
-
-
-
-/***************************************************************************************************
- * Zone JS is required by Angular itself.
- */
-import 'zone.js/dist/zone'; // Included with Angular CLI.
-
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */
-
-/**
- * Date, currency, decimal and percent pipes.
- * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
- */
-// import 'intl'; // Run `npm install --save intl`.
-/**
- * Need to import at least one locale-data with intl.
- */
-// import 'intl/locale-data/jsonp/en';
-
-/***************************************************************************************************
- * CUSTOM IMPORTS
- */
-import 'rxjs/add/observable/throw';
-import 'rxjs/add/observable/forkJoin';
-import 'rxjs/add/operator/filter';
-import 'rxjs/add/operator/catch';
-import 'rxjs/add/operator/startWith';
-import 'rxjs/add/operator/do';
-import 'rxjs/add/operator/map';
-
-
-/**
- * Need to import hammer for Angular Material support.
- */
-import 'hammerjs';
diff --git a/src/sitemap.xml b/src/sitemap.xml
deleted file mode 100644
index 3fb2a3c6..00000000
--- a/src/sitemap.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- http://angularexampleapp.com/
- 2017-08-05T13:44:43+00:00
- always
-
-
\ No newline at end of file
diff --git a/src/styles/base/_border-radius.scss b/src/styles/base/_border-radius.scss
new file mode 100644
index 00000000..65bef950
--- /dev/null
+++ b/src/styles/base/_border-radius.scss
@@ -0,0 +1,9 @@
+:root {
+ --border-radius-xs: 0.125rem;
+ --border-radius-sm: 0.25rem;
+ --border-radius-md: 0.375rem;
+ --border-radius-lg: 0.5rem;
+ --border-radius-xl: 0.625rem;
+ --border-radius-xxl: 0.75rem;
+ --border-radius-max: 2.75rem;
+}
diff --git a/src/styles/base/_color-definitions.scss b/src/styles/base/_color-definitions.scss
new file mode 100644
index 00000000..21cac229
--- /dev/null
+++ b/src/styles/base/_color-definitions.scss
@@ -0,0 +1,185 @@
+@use 'primitive-colors';
+
+/*
+ ============================================================
+ ⚠️ Themes File ⚠️
+ ============================================================
+ This file contains the variables for the application's color themes.
+ These variables are intended to be used all across the app. Developers
+ must use this ones, not the primitive ones.
+
+ Keeping the theme variables scoped to their intended purpose ensures consistency
+ and maintainability of the application's design system.
+ ============================================================
+*/
+@mixin dark-definitions() {
+ // Contrasts
+ --full-contrast: var(--primitive-full-white);
+ --primary-contrast: var(--primitive-gray-50);
+ --secondary-contrast: var(--primitive-gray-300);
+ --tertiary-contrast: var(--primitive-gray-300);
+ --quaternary-contrast: var(--primitive-gray-400);
+ --quinary-contrast: var(--primitive-gray-500);
+ --senary-contrast: var(--primitive-gray-700);
+ --septenary-contrast: var(--primitive-gray-800);
+ --octonary-contrast: var(--primitive-gray-900);
+
+ // DO NOT use grays anymore, use contrast variables
+
+ // Brand
+ --brand-color-primary: var(--primitive-hot-red-mixed);
+ --brand-color-secondary: var(--primitive-bright-blue-mixed);
+ --brand-color-tertiary: var(--primitive-vivid-pink-mixed);
+
+ // General
+ --page-color: var(--full-contrast);
+ --page-background: var(--primitive-gray-1000);
+
+ // Texts
+ --text-color-primary: var(--primary-contrast);
+ --text-color-primary-hover: var(--primary-contrast);
+ --text-color-secondary: var(--quaternary-contrast);
+ --text-color-secondary-hover: var(--primary-contrast);
+
+ // Status
+ --status-color-success: var(--primitive-vitalize-green);
+ --status-color-error: var(--primitive-hot-red);
+
+ // Links
+ --links-color: var(--brand-color-secondary);
+ --links-color-hover: var(--brand-color-tertiary);
+ --links-color-active: var(--brand-color-primary);
+
+ // Buttons
+ --buttons-background: color-mix(in srgb, var(--brand-color-primary) 10%, white 2%);
+ --buttons-background-hover: color-mix(in srgb, var(--brand-color-primary) 20%, white 10%);
+ --buttons-color: color-mix(in srgb, var(--brand-color-primary) 60%, white 70%);
+
+ // Icons
+ --icons-color: var(--quaternary-contrast);
+ --icons-color-hover: var(--full-contrast);
+
+ // Inputs
+ --inputs-background-color: var(--page-background);
+ --inputs-background-color-hover: var(--page-background);
+ --inputs-background-color-focus: var(--page-background);
+ --inputs-border-color: var(--senary-contrast);
+ --inputs-border-color-hover: var(--primary-contrast);
+ --inputs-border-color-focus: var(--brand-color-tertiary);
+ --inputs-color: var(--tertiary-contrast);
+ --inputs-color-hover: var(--primary-contrast);
+ --inputs-color-focus: var(--primary-contrast);
+ --inputs-placeholder-color: var(--quaternary-contrast);
+ --inputs-help-text-color: var(--quinary-contrast);
+ --inputs-focus-ring-color: none;
+
+ // Checkboxes
+ --checkboxes-color: var(--tertiary-contrast);
+ --checkboxes-control-background: var(--pink-to-purple-horizontal-gradient);
+ --checkboxes-checked-icon-color: var(--octonary-contrast);
+
+ // Panels
+ --panels-background: var(--octonary-contrast);
+ --panels-color: var(--full-contrast);
+
+ // Options
+ --options-background: color-mix(in srgb, var(--brand-color-primary) 10%, white 2%);
+ --options-background-hover: color-mix(in srgb, var(--brand-color-primary) 20%, white 10%);
+ --options-color: color-mix(in srgb, var(--brand-color-primary) 60%, white 70%);
+
+ // Dropdowns
+ --dropdowns-background: var(--octonary-contrast);
+ --dropdown-items-background-hover: color-mix(in srgb, var(--brand-color-primary) 20%, white 10%);
+ --dropdown-items-color: color-mix(in srgb, var(--brand-color-primary) 60%, white 70%);
+
+ // Cards
+ --card-background-hover: var(--primitive-subtle-purple);
+ --card-link-background-hover: var(
+ --pink-to-highlight-to-purple-to-blue-horizontal-mixed-gradient
+ );
+}
+
+@mixin light-definitions() {
+ // Contrast
+ --full-contrast: var(--primitive-full-black);
+ --primary-contrast: var(--primitive-gray-900);
+ --secondary-contrast: var(--primitive-gray-800);
+ --tertiary-contrast: var(--primitive-gray-700);
+ --quaternary-contrast: var(--primitive-gray-500);
+ --quinary-contrast: var(--primitive-gray-300);
+ --senary-contrast: var(--primitive-gray-200);
+ --septenary-contrast: var(--primitive-gray-100);
+ --octonary-contrast: var(--primitive-gray-50);
+
+ // DO NOT use grays anymore, use contrast variables
+
+ // Brand
+ --brand-color-primary: var(--primitive-bright-blue);
+ --brand-color-secondary: var(--primitive-hot-red);
+ --brand-color-tertiary: var(--primitive-vivid-pink);
+
+ // General
+ --page-color: var(--primary-contrast);
+ --page-background: var(--primitive-full-white);
+
+ // Texts
+ --text-color-primary: var(--primary-contrast);
+ --text-color-primary-hover: var(--primary-contrast);
+ --text-color-secondary: var(--quaternary-contrast);
+ --text-color-secondary-hover: var(--primary-contrast);
+
+ // Status
+ --status-color-success: var(--primitive-vitalize-green);
+ --status-color-error: var(--primitive-hot-red);
+
+ // Links
+ --links-color: var(--brand-color-primary);
+ --links-color-hover: var(--brand-color-tertiary);
+ --links-color-active: var(--brand-color-secondary);
+
+ // Buttons
+ --buttons-background: color-mix(in srgb, var(--primitive-indigo-blue) 10%, white 2%);
+ --buttons-background-hover: color-mix(in srgb, var(--primitive-indigo-blue) 20%, white 10%);
+ --buttons-color: var(--primitive-indigo-blue);
+
+ // Icons
+ --icons-color: var(--quaternary-contrast);
+ --icons-color-hover: var(--full-contrast);
+
+ // Inputs
+ --inputs-background-color: var(--page-background);
+ --inputs-background-color-hover: var(--page-background);
+ --inputs-background-color-focus: var(--page-background);
+ --inputs-border-color: var(--senary-contrast);
+ --inputs-border-color-hover: var(--primary-contrast);
+ --inputs-border-color-focus: var(--brand-color-tertiary);
+ --inputs-color: var(--tertiary-contrast);
+ --inputs-color-hover: var(--primary-contrast);
+ --inputs-color-focus: var(--primary-contrast);
+ --inputs-placeholder-color: var(--tertiary-contrast);
+ --inputs-help-text-color: var(--quinary-contrast);
+ --inputs-focus-ring-color: none;
+
+ // Checkboxes
+ --checkboxes-color: var(--tertiary-contrast);
+ --checkboxes-control-background: var(--pink-to-purple-horizontal-gradient);
+ --checkboxes-checked-icon-color: var(--primary-contrast);
+
+ // Panels
+ --panels-background: var(--octonary-contrast);
+ --panels-color: var(--full-contrast);
+
+ // Options
+ --options-background: color-mix(in srgb, var(--brand-color-primary) 10%, white 2%);
+ --options-background-hover: color-mix(in srgb, var(--brand-color-primary) 20%, white 10%);
+ --options-color: color-mix(in srgb, var(--brand-color-primary) 90%, white 70%);
+
+ // Dropdowns
+ --dropdowns-background: var(--octonary-contrast);
+ --dropdown-items-background-hover: color-mix(in srgb, var(--brand-color-primary) 20%, white 10%);
+ --dropdown-items-color: color-mix(in srgb, var(--brand-color-primary) 60%, white 70%);
+
+ // Cards
+ --card-background-hover: var(--primitive-cotton-ball);
+ --card-link-background-hover: var(--pink-to-highlight-to-purple-to-blue-horizontal-gradient);
+}
diff --git a/src/styles/base/_media-queries.scss b/src/styles/base/_media-queries.scss
new file mode 100644
index 00000000..1c9523bf
--- /dev/null
+++ b/src/styles/base/_media-queries.scss
@@ -0,0 +1,65 @@
+$screen-xs: 700px;
+$screen-sm: 775px;
+$screen-md: 900px;
+$screen-lg: 1200px;
+$screen-xl: 1800px;
+
+@mixin for-phone-only {
+ @media (max-width: $screen-sm) {
+ @content;
+ }
+}
+
+@mixin for-tablet-portrait-up {
+ @media (min-width: $screen-xs) {
+ @content;
+ }
+}
+
+@mixin for-tablet {
+ @media (min-width: $screen-xs) and (max-width: $screen-md) {
+ @content;
+ }
+}
+
+@mixin for-tablet-up {
+ @media (min-width: $screen-sm) {
+ @content;
+ }
+}
+
+@mixin for-tablet-landscape-up {
+ @media (min-width: $screen-md) {
+ @content;
+ }
+}
+
+@mixin for-desktop-up {
+ @media (min-width: $screen-lg) {
+ @content;
+ }
+}
+
+@mixin for-big-desktop-up {
+ @media (min-width: $screen-xl) {
+ @content;
+ }
+}
+
+@mixin for-desktop-down {
+ @media (max-width: $screen-lg) {
+ @content;
+ }
+}
+
+@mixin for-tablet-landscape-down {
+ @media (max-width: $screen-md) {
+ @content;
+ }
+}
+
+@mixin for-tablet-down {
+ @media (max-width: $screen-sm) {
+ @content;
+ }
+}
diff --git a/src/styles/base/_primitive-colors.scss b/src/styles/base/_primitive-colors.scss
new file mode 100644
index 00000000..b6604c4b
--- /dev/null
+++ b/src/styles/base/_primitive-colors.scss
@@ -0,0 +1,115 @@
+/*
+ ============================================================
+ ⚠️ Primitive Colors ⚠️
+ ============================================================
+ STRICTLY FORBIDDEN: DO NOT use these color variables anywhere else in the application.
+ These are **ONLY** for the color themes (_themes.scss). Any other usage will cause inconsistency
+ and break the design system.
+ ============================================================
+*/
+
+// Using OKLCH color space for better color reproduction on P3 displays, as well as better human-readability
+// https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch
+@mixin primitive-colors() {
+ // Base
+ --primitive-bright-blue: oklch(51.01% 0.274 263.83deg); // #0546ff
+ --primitive-subtle-purple: oklch(33.72% 0.0108 271.08deg); // #35373D
+ --primitive-cotton-ball: oklch(97.54% 0.0115 264.51deg); // #f3f7ff
+ --primitive-indigo-blue: oklch(51.64% 0.229 281.65deg); // #5c44e4
+ --primitive-vivid-pink: oklch(69.02% 0.277 332.77deg); // #f637e3
+ --primitive-electric-violet: oklch(53.18% 0.28 296.97deg); // #8514f5
+ --primitive-hot-red: oklch(61.42% 0.238 15.34deg); // #f11653
+ --primitive-orange-red: oklch(63.32% 0.24 31.68deg); // #fa2c04
+ --primitive-vitalize-green: oklch(64.01% 0.1751 146.74deg); // #28a745
+ --primitive-peach-echo: oklch(12.16% 0.079 270.91deg); // #020024
+ --primitive-kissed-mist: oklch(88.15% 0.0908 328.72deg); // #fac3f6
+ --primitive-pink-illusion: oklch(83.64% 0.0968 307.17deg); // #dab9fb
+
+ // Mixed
+ --primitive-bright-blue-mixed: color-mix(
+ in srgb,
+ oklch(51.01% 0.274 263.83deg),
+ var(--full-contrast) 60%
+ );
+ --primitive-vivid-pink-mixed: color-mix(
+ in srgb,
+ oklch(69.02% 0.277 332.77deg),
+ var(--full-contrast) 70%
+ );
+ --primitive-hot-red-mixed: color-mix(
+ in srgb,
+ oklch(61.42% 0.238 15.34deg),
+ var(--full-contrast) 70%
+ );
+ --primitive-orange-red-mixed: color-mix(
+ in srgb,
+ oklch(63.32% 0.24 31.68deg),
+ var(--full-contrast) 60%
+ );
+ --primitive-electric-violet-mixed: color-mix(
+ in srgb,
+ oklch(53.18% 0.28 296.97deg),
+ var(--full-contrast) 70%
+ );
+
+ // Full
+ --primitive-full-white: white;
+ --primitive-full-black: black;
+
+ // Grays
+ --primitive-gray-1000: oklch(16.93% 0.004 285.95deg); // #0f0f11
+ --primitive-gray-900: oklch(19.37% 0.006 300.98deg); // #151417
+ --primitive-gray-800: oklch(25.16% 0.008 308.11deg); // #232125
+ --primitive-gray-700: oklch(36.98% 0.014 302.71deg); // #413e46
+ --primitive-gray-600: oklch(44% 0.019 306.08deg); // #55505b
+ --primitive-gray-500: oklch(54.84% 0.023 304.99deg); // #746e7c
+ --primitive-gray-400: oklch(70.9% 0.015 304.04deg); // #a39fa9
+ --primitive-gray-300: oklch(84.01% 0.009 308.34deg); // #ccc9cf
+ --primitive-gray-200: oklch(91.75% 0.004 301.42deg); // #e4e3e6
+ --primitive-gray-100: oklch(97.12% 0.002 325.59deg); // #f6f5f6
+ --primitive-gray-50: oklch(98.81% 0 0deg); // #fbfbfb
+
+ // Gradients
+ --pink-to-highlight-to-purple-to-blue-horizontal-gradient: linear-gradient(
+ 140deg,
+ var(--primitive-vivid-pink) 0%,
+ var(--primitive-vivid-pink) 15%,
+ color-mix(in srgb, var(--primitive-vivid-pink), var(--primitive-electric-violet) 50%) 25%,
+ color-mix(in srgb, var(--primitive-vivid-pink), var(--primitive-electric-violet) 10%) 35%,
+ color-mix(in srgb, var(--primitive-vivid-pink), var(--primitive-orange-red) 50%) 42%,
+ color-mix(in srgb, var(--primitive-vivid-pink), var(--primitive-orange-red) 50%) 44%,
+ color-mix(in srgb, var(--primitive-vivid-pink), var(--page-background) 70%) 47%,
+ var(--primitive-electric-violet) 48%,
+ var(--primitive-bright-blue) 60%
+ );
+ --pink-to-purple-horizontal-gradient: linear-gradient(
+ 90deg,
+ var(--primitive-peach-echo) 0%,
+ var(--primitive-kissed-mist) 0%,
+ var(--primitive-pink-illusion) 100%
+ );
+
+ // Mixed gradients
+ --pink-to-highlight-to-purple-to-blue-horizontal-mixed-gradient: linear-gradient(
+ 140deg,
+ var(--primitive-vivid-pink-mixed) 0%,
+ var(--primitive-vivid-pink-mixed) 15%,
+ color-mix(
+ in srgb,
+ var(--primitive-vivid-pink-mixed),
+ var(--primitive-electric-violet-mixed) 50%
+ )
+ 25%,
+ color-mix(
+ in srgb,
+ var(--primitive-vivid-pink-mixed),
+ var(--primitive-electric-violet-mixed) 10%
+ )
+ 35%,
+ color-mix(in srgb, var(--primitive-vivid-pink-mixed), var(--primitive-orange-red-mixed) 50%) 42%,
+ color-mix(in srgb, var(--primitive-vivid-pink-mixed), var(--primitive-orange-red-mixed) 50%) 44%,
+ color-mix(in srgb, var(--primitive-vivid-pink-mixed), var(--page-background) 70%) 47%,
+ var(--primitive-electric-violet-mixed) 48%,
+ var(--primitive-bright-blue-mixed) 60%
+ );
+}
diff --git a/src/styles/base/_reset.scss b/src/styles/base/_reset.scss
new file mode 100644
index 00000000..d636c9b0
--- /dev/null
+++ b/src/styles/base/_reset.scss
@@ -0,0 +1,73 @@
+@use 'media-queries' as mq;
+
+@mixin reset() {
+ :root {
+ --page-width: 80ch;
+ --layout-padding: var(--spacing-r-xl);
+
+ @include mq.for-tablet-up {
+ --layout-padding: var(--spacing-r-4xl);
+ }
+ }
+
+ html {
+ font-family: var(--inter-font), serif;
+ font-size: var(--font-size-md);
+ color: var(--page-color);
+ background-color: var(--page-background);
+ transition:
+ color 0.3s ease,
+ background-color 0.3s ease;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ scroll-behavior: smooth;
+ }
+
+ @media (prefers-reduced-motion) {
+ html {
+ scroll-behavior: auto;
+ }
+ }
+
+ body {
+ margin: 0;
+ overflow: hidden auto;
+ }
+
+ html,
+ body {
+ height: 100vh;
+ min-height: 100vh;
+
+ @supports (height: 100svh) {
+ height: 100svh;
+ }
+ }
+
+ button {
+ cursor: pointer;
+ }
+
+ img {
+ width: 100%;
+ margin: 0;
+ overflow: hidden;
+ border-radius: var(--border-radius-sm);
+ }
+
+ abbr[title] {
+ text-decoration: none;
+ }
+
+ h1 {
+ margin: 0;
+ }
+
+ ul {
+ padding-inline-start: 0;
+
+ li {
+ list-style: none;
+ }
+ }
+}
diff --git a/src/styles/base/_spacing.scss b/src/styles/base/_spacing.scss
new file mode 100644
index 00000000..e38ce10f
--- /dev/null
+++ b/src/styles/base/_spacing.scss
@@ -0,0 +1,28 @@
+:root {
+ --spacing-xs: 2px;
+ --spacing-sm: 4px;
+ --spacing-md: 8px;
+ --spacing-lg: 12px;
+ --spacing-xl: 16px;
+ --spacing-xxl: 20px;
+ --spacing-3xl: 24px;
+ --spacing-4xl: 32px;
+ --spacing-5xl: 40px;
+ --spacing-6xl: 48px;
+ --spacing-r-xs: 0.125rem;
+ --spacing-r-sm: 0.375rem;
+ --spacing-r-md: 0.5rem;
+ --spacing-r-lg: 0.75rem;
+ --spacing-r-xl: 1rem;
+ --spacing-r-xxl: 1.25rem;
+ --spacing-r-3xl: 1.5rem;
+ --spacing-r-4xl: 2rem;
+ --spacing-r-5xl: 2.5rem;
+ --spacing-r-6xl: 3rem;
+ --spacing-r-7xl: 3.5rem;
+ --spacing-r-8xl: 4rem;
+ --spacing-r-9xl: 4.5rem;
+ --spacing-r-10xl: 5rem;
+ --spacing-r-11xl: 5.5rem;
+ --spacing-r-12xl: 6rem;
+}
diff --git a/src/styles/base/_themes.scss b/src/styles/base/_themes.scss
new file mode 100644
index 00000000..217eaa45
--- /dev/null
+++ b/src/styles/base/_themes.scss
@@ -0,0 +1,18 @@
+@use 'primitive-colors';
+@use 'color-definitions';
+
+@mixin themes() {
+ .theme-dark--mode {
+ @include primitive-colors.primitive-colors;
+ @include color-definitions.dark-definitions;
+
+ background-color: var(--page-background);
+ }
+
+ .theme-light--mode {
+ @include primitive-colors.primitive-colors;
+ @include color-definitions.light-definitions;
+
+ background-color: var(--page-background);
+ }
+}
diff --git a/src/styles/base/_typography.scss b/src/styles/base/_typography.scss
new file mode 100644
index 00000000..fce461e0
--- /dev/null
+++ b/src/styles/base/_typography.scss
@@ -0,0 +1,103 @@
+@mixin typography() {
+ :root {
+ --fallback-font-stack:
+ ui-sans-serif, system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
+ 'Helvetica Neue', arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+ 'Segoe UI Symbol', 'Noto Color Emoji';
+ --code-font: 'DM Mono', monospace;
+ --inter-font: 'Inter', var(--fallback-font-stack);
+ --inter-tight-font: 'Inter Tight', var(--fallback-font-stack);
+
+ // Font weight
+ --font-weight-light: 300;
+ --font-weight-regular: 400;
+ --font-weight-xregular: 500;
+ --font-weight-bold: 700;
+
+ // Font style
+ --font-style-normal: normal;
+
+ // Font size
+ --font-size-xs: 0.8125rem;
+ --font-size-sm: 0.875rem;
+ --font-size-md: 1rem;
+ --font-size-lg: 1.5rem;
+ --font-size-xl: 2rem;
+ --font-size-xxl: 2.25rem;
+
+ // Line height
+ --line-height-xs: 0.9rem;
+ --line-height-sm: 1rem;
+ --line-height-md: 1.25rem;
+ --line-height-lg: 1.5rem;
+ --line-height-xl: 2rem;
+ --line-height-xxl: 2.5rem;
+ --line-height-max: 3.5rem;
+
+ // Letter spacing
+ --letter-spacing-sm: -0.0088rem;
+ --letter-spacing-md: -0.01rem;
+ --letter-spacing-lg: -0.025rem;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ margin: 0;
+ font-family: var(--inter-tight-font), serif;
+ font-weight: var(--font-weight-xregular);
+ text-wrap: balance;
+ }
+
+ h1 {
+ font-size: var(--font-size-xxl);
+ }
+
+ h2 {
+ margin-block: var(--spacing-r-3xl) var(--spacing-r-md);
+ font-size: var(--font-size-xl);
+ }
+
+ p {
+ margin-block: 0 var(--spacing-r-xl);
+ font-size: var(--font-size-sm);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-lg);
+ letter-spacing: var(--letter-spacing-sm);
+ }
+
+ p ~ ul,
+ p ~ ol {
+ margin-block-start: 0;
+ }
+
+ ul,
+ ol {
+ font-size: var(--font-size-sm);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-lg);
+ letter-spacing: var(--letter-spacing-md);
+ }
+
+ a {
+ font-weight: var(--font-weight-xregular);
+ text-decoration: none;
+ }
+
+ hr {
+ width: 100%;
+ margin-block: var(--spacing-r-xl);
+ border: 0;
+ border-color: var(--senary-contrast);
+ border-style: solid;
+ border-block-start-width: 1px;
+ transition: border-color 0.3s ease;
+ }
+
+ .text--medium {
+ font-size: larger;
+ }
+}
diff --git a/src/styles/base/_z-index.scss b/src/styles/base/_z-index.scss
new file mode 100644
index 00000000..fa1da89a
--- /dev/null
+++ b/src/styles/base/_z-index.scss
@@ -0,0 +1,4 @@
+:root {
+ --z-index-skip-button: 1000;
+ --z-index-cookie-consent: 60;
+}
diff --git a/src/styles/components/_alerts.scss b/src/styles/components/_alerts.scss
new file mode 100644
index 00000000..e4851378
--- /dev/null
+++ b/src/styles/components/_alerts.scss
@@ -0,0 +1,31 @@
+@mixin alerts() {
+ sl-alert {
+ &::part(base) {
+ font-size: var(--font-size-sm);
+ background-color: var(--page-background);
+ border-radius: var(--border-radius-sm);
+ box-shadow: 0 0 10px 0 rgb(0 0 0 / 10%);
+ transition:
+ background-color 0.3s ease,
+ border-color 0.3s ease,
+ color 0.3s ease;
+ }
+
+ &::part(message),
+ &::part(close-button) {
+ color: var(--primary-contrast);
+ }
+
+ &.alert--success {
+ &::part(base) {
+ border: 1px solid var(--status-color-success);
+ }
+ }
+
+ &.alert--error {
+ &::part(base) {
+ border: 1px solid var(--status-color-error);
+ }
+ }
+ }
+}
diff --git a/src/styles/components/_buttons.scss b/src/styles/components/_buttons.scss
new file mode 100644
index 00000000..eef7ba40
--- /dev/null
+++ b/src/styles/components/_buttons.scss
@@ -0,0 +1,135 @@
+$pokedex-background-color: #f8f8f8;
+$pokedex-text-color: #4e4e4e;
+$pokedex-button-border-color: #7d7897;
+
+@mixin buttons() {
+ sl-button {
+ &::part(base) {
+ display: flex;
+ align-items: center;
+ border: 0;
+ border-radius: var(--border-radius-max);
+ transition: background 0.3s ease;
+ }
+
+ &::part(label) {
+ padding: 0;
+ }
+
+ &.button--primary::part(base),
+ &.dropdown-button--primary::part(base) {
+ padding-block: var(--spacing-r-sm);
+ padding-inline: var(--spacing-r-xl);
+ font-family: var(--inter-font), serif;
+ font-size: var(--font-size-sm);
+ font-weight: var(--font-weight-xregular);
+ line-height: var(--line-height-lg);
+ color: var(--buttons-color);
+ letter-spacing: -0.0088rem;
+ background: var(--buttons-background);
+
+ &:hover {
+ background: var(--buttons-background-hover);
+ }
+ }
+
+ &.dropdown-button--primary::part(label) {
+ margin-right: var(--spacing-r-sm);
+ font-weight: var(--font-weight-bold);
+ }
+
+ &.button--icon::part(base) {
+ padding-inline: 0;
+ font-size: var(--font-size-lg);
+ color: var(--icons-color);
+ background: transparent;
+
+ &:hover {
+ color: var(--icons-color-hover);
+ background: transparent;
+ transition: color 0.3s ease;
+ }
+ }
+
+ &.button__as-link--primary {
+ &::part(base) {
+ color: var(--text-color-secondary);
+ background: transparent;
+ border: 0;
+
+ &:hover {
+ color: var(--text-color-secondary-hover);
+ }
+
+ &:active {
+ color: var(--text-color-secondary-hover);
+ }
+ }
+
+ &::part(label) {
+ font-size: var(--font-size-md);
+ }
+ }
+
+ &.button--pokemon-style::part(base) {
+ position: relative;
+ min-height: 0;
+ padding: var(--spacing-sm) var(--spacing-xl);
+ color: $pokedex-text-color;
+ background: $pokedex-background-color;
+ border: 3px solid $pokedex-button-border-color;
+ border-radius: var(--border-radius-sm);
+
+ &::before {
+ position: absolute;
+ top: 50%;
+ left: var(--spacing-xs);
+ content: '▶';
+ opacity: 0;
+ transform: translateY(-50%);
+ transition: opacity 0.1s;
+ }
+
+ &:hover {
+ color: $pokedex-text-color;
+
+ &::before {
+ opacity: 1;
+ }
+ }
+
+ &:active {
+ color: $pokedex-text-color;
+ }
+ }
+
+ &.button--pokemon-style::part(label) {
+ font-size: var(--font-size-xs);
+ font-weight: var(--font-weight-bold);
+ line-height: var(--line-height-md);
+ opacity: 0.8;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+
+ &.button--image::part(base) {
+ background: transparent;
+ border: 0;
+ }
+
+ &.dropdown-button--avatar::part(base) {
+ box-shadow: 0 0 0 1px var(--text-color-secondary);
+ transition: box-shadow 0.5s ease;
+
+ &:hover {
+ box-shadow: 0 0 0 1px var(--text-color-secondary-hover);
+ }
+ }
+
+ &.dropdown-button--avatar::part(label) {
+ display: flex;
+ }
+ }
+}
diff --git a/src/styles/components/_checkboxes.scss b/src/styles/components/_checkboxes.scss
new file mode 100644
index 00000000..531d6e6f
--- /dev/null
+++ b/src/styles/components/_checkboxes.scss
@@ -0,0 +1,42 @@
+@mixin checkboxes() {
+ sl-checkbox.checkbox--primary {
+ --sl-input-required-content: '';
+ --sl-input-required-content-offset: 0;
+
+ &::part(base) {
+ font-size: var(--font-size-sm);
+ color: var(--checkboxes-color);
+ text-align: start;
+ transition:
+ color 0.3s ease,
+ background-color 0.3s ease,
+ border-color 0.3s ease;
+ }
+
+ &::part(form-control-help-text) {
+ text-align: start;
+ }
+
+ &::part(checked-icon) {
+ color: var(--checkboxes-checked-icon-color);
+ }
+
+ &::part(control) {
+ background: var(--checkboxes-control-background);
+ border-radius: 1px;
+ }
+
+ &:hover {
+ sl-icon {
+ color: var(--icons-color-hover);
+ }
+ }
+ }
+
+ sl-checkbox.ng-invalid.ng-touched:not(form) {
+ &::part(form-control-help-text),
+ &::part(label) {
+ color: var(--status-color-error);
+ }
+ }
+}
diff --git a/src/styles/components/_dropdowns.scss b/src/styles/components/_dropdowns.scss
new file mode 100644
index 00000000..f610bde3
--- /dev/null
+++ b/src/styles/components/_dropdowns.scss
@@ -0,0 +1,42 @@
+@use 'base/media-queries' as mq;
+
+@mixin dropdowns() {
+ .dropdown__content-container {
+ margin-block-start: var(--spacing-r-xl);
+ background: var(--dropdowns-background);
+ border: 1px solid var(--senary-contrast);
+ border-radius: var(--border-radius-sm);
+ box-shadow: none;
+
+ .dropdown__item-container {
+ &:hover {
+ color: var(--dropdown-items-color);
+ background: var(--dropdown-items-background-hover);
+ transition: background 0.3s ease;
+ }
+
+ a {
+ display: block;
+ width: 100%;
+ height: 100%;
+ padding: var(--spacing-r-xl);
+ font-size: var(--font-size-md);
+ color: var(--text-color-secondary);
+ text-decoration: none;
+
+ &:hover {
+ color: var(--text-color-secondary-hover);
+ }
+ }
+
+ sl-button.button__as-link--primary {
+ &::part(base) {
+ display: block;
+ width: 100%;
+ height: 100%;
+ padding: var(--spacing-r-md) var(--spacing-r-xl);
+ }
+ }
+ }
+ }
+}
diff --git a/src/styles/components/_forms.scss b/src/styles/components/_forms.scss
new file mode 100644
index 00000000..59f215b5
--- /dev/null
+++ b/src/styles/components/_forms.scss
@@ -0,0 +1,37 @@
+@use 'base/media-queries' as mq;
+
+@mixin forms() {
+ .form__container {
+ padding: var(--spacing-r-5xl) var(--spacing-r-xl);
+ margin: 0 auto;
+ border: 1px solid var(--senary-contrast);
+
+ @include mq.for-tablet-up {
+ padding: var(--spacing-r-6xl) var(--spacing-r-xl);
+ }
+
+ .form-control__container {
+ margin-block: var(--spacing-r-3xl);
+
+ .button--primary {
+ margin-block-start: var(--spacing-r-md);
+ }
+
+ &:first-of-type {
+ margin-block-start: 0;
+ }
+
+ @include mq.for-tablet-up {
+ margin-block: var(--spacing-r-3xl);
+ }
+ }
+
+ .form-footer__paragraph {
+ margin: 0;
+
+ .form-footer__link {
+ font-size: var(--font-size-sm);
+ }
+ }
+ }
+}
diff --git a/src/styles/components/_headings.scss b/src/styles/components/_headings.scss
new file mode 100644
index 00000000..e1e88462
--- /dev/null
+++ b/src/styles/components/_headings.scss
@@ -0,0 +1,7 @@
+@use 'base/media-queries' as mq;
+
+@mixin headings() {
+ .first-heading__title {
+ margin-block-end: var(--spacing-r-3xl);
+ }
+}
diff --git a/src/styles/components/_inputs.scss b/src/styles/components/_inputs.scss
new file mode 100644
index 00000000..8a60c36e
--- /dev/null
+++ b/src/styles/components/_inputs.scss
@@ -0,0 +1,82 @@
+$loading-icon-suffix-width: 30px;
+
+@mixin inputs() {
+ sl-input.input--primary {
+ --sl-input-background-color: var(--inputs-background-color);
+ --sl-input-background-color-hover: var(--inputs-background-color-hover);
+ --sl-input-background-color-focus: var(--inputs-background-color-focus);
+ --sl-input-border-color: var(--inputs-border-color);
+ --sl-input-border-color-hover: var(--inputs-border-color-hover);
+ --sl-input-border-color-focus: var(--inputs-border-color-focus);
+ --sl-input-font-family: var(--inter-font);
+ --sl-input-font-size-medium: var(--font-size-md);
+ --sl-input-color: var(--inputs-color);
+ --sl-input-color-hover: var(--inputs-color-hover);
+ --sl-input-color-focus: var(--inputs-color-focus);
+ --sl-input-placeholder-color: var(--inputs-placeholder-color);
+ --sl-input-focus-ring-color: var(--inputs-focus-ring-color);
+ --sl-input-focus-ring-offset: 0;
+ --sl-input-required-content: '';
+ --sl-input-required-content-offset: 0;
+
+ &::part(base) {
+ transition:
+ color 0.3s ease,
+ background-color 0.3s ease,
+ border-color 0.3s ease;
+ }
+
+ &::part(input)::placeholder {
+ font-size: var(--font-size-sm);
+ }
+
+ &::part(form-control) {
+ text-align: start;
+ }
+
+ &::part(form-control-label) {
+ margin-block-end: var(--spacing-r-sm);
+ }
+
+ &::part(form-control-help-text) {
+ margin-top: var(--spacing-r-sm);
+ font-size: var(--font-size-xs);
+ color: var(--inputs-placeholder-color);
+ }
+
+ .loading__image {
+ width: $loading-icon-suffix-width;
+ height: auto;
+ margin-inline-end: var(--spacing-r-sm);
+ }
+
+ sl-icon {
+ transition: color 0.3s ease;
+ }
+ }
+
+ sl-input:not([disabled]):hover sl-icon {
+ color: var(--icons-color-hover);
+ }
+
+ sl-input.ng-invalid.ng-touched:not(form) {
+ &::part(form-control-input) {
+ --sl-input-border-color: var(--status-color-error);
+ --sl-input-border-color-hover: var(--status-color-error);
+ --sl-input-border-color-focus: var(--status-color-error);
+ --sl-input-placeholder-color: var(--status-color-error);
+ }
+
+ &::part(form-control-help-text) {
+ color: var(--status-color-error);
+ }
+ }
+
+ sl-input.ng-valid.ng-touched:not(form) {
+ &::part(form-control-input) {
+ --sl-input-border-color: var(--status-color-success);
+ --sl-input-border-color-hover: var(--status-color-success);
+ --sl-input-border-color-focus: var(--status-color-success);
+ }
+ }
+}
diff --git a/src/styles/components/_kbd.scss b/src/styles/components/_kbd.scss
new file mode 100644
index 00000000..be385e39
--- /dev/null
+++ b/src/styles/components/_kbd.scss
@@ -0,0 +1,21 @@
+@mixin kbd() {
+ // We only target non-nested kbd elements
+ kbd:not(:has(kbd)) {
+ position: relative;
+ display: inline-block;
+ min-width: var(--spacing-xl);
+ min-height: var(--spacing-xxl);
+ padding: 0 var(--spacing-r-lg);
+ font-family: sans-serif;
+ line-height: var(--line-height-xxl);
+ vertical-align: middle;
+ color: var(--text-color-secondary);
+ text-align: center;
+ text-shadow: 0 1px 0 var(--octonary-contrast);
+ border: 1px solid var(--quinary-contrast);
+ border-radius: var(--border-radius-sm);
+ box-shadow:
+ 0 1px 0 rgb(0 0 0 / 20%),
+ 0 0 0 2px var(--octonary-contrast) inset;
+ }
+}
diff --git a/src/styles/components/_links.scss b/src/styles/components/_links.scss
new file mode 100644
index 00000000..8d0dff1b
--- /dev/null
+++ b/src/styles/components/_links.scss
@@ -0,0 +1,25 @@
+@mixin links() {
+ a {
+ transition: color 0.3s ease;
+ }
+
+ p a {
+ text-decoration: underline;
+ }
+
+ p > a,
+ td > a,
+ div > a,
+ code > a,
+ li a {
+ color: var(--links-color);
+
+ &:hover {
+ color: var(--links-color-hover);
+ }
+
+ &:active {
+ color: var(--links-color-active);
+ }
+ }
+}
diff --git a/src/styles/components/_loaders.scss b/src/styles/components/_loaders.scss
new file mode 100644
index 00000000..06b6164b
--- /dev/null
+++ b/src/styles/components/_loaders.scss
@@ -0,0 +1,11 @@
+@mixin loaders() {
+ .loading__image {
+ animation: spin 1s linear infinite;
+ }
+}
+
+@keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
diff --git a/src/styles/components/_options.scss b/src/styles/components/_options.scss
new file mode 100644
index 00000000..b7d69732
--- /dev/null
+++ b/src/styles/components/_options.scss
@@ -0,0 +1,20 @@
+@mixin options() {
+ sl-option {
+ &.sl-option--primary {
+ &::part(base) {
+ padding: var(--spacing-r-sm);
+ color: var(--options-color);
+ background: var(--options-background);
+
+ &:hover {
+ background: var(--options-background-hover);
+ transition: background 0.3s ease;
+ }
+ }
+
+ &::part(label) {
+ font-size: var(--font-size-sm);
+ }
+ }
+ }
+}
diff --git a/src/styles/components/_pages.scss b/src/styles/components/_pages.scss
new file mode 100644
index 00000000..c18e2fa2
--- /dev/null
+++ b/src/styles/components/_pages.scss
@@ -0,0 +1,9 @@
+@mixin read-page() {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ justify-self: center;
+ width: 100%;
+ max-width: var(--page-width);
+ padding: var(--layout-padding);
+}
diff --git a/src/styles/components/_selects.scss b/src/styles/components/_selects.scss
new file mode 100644
index 00000000..2453ba42
--- /dev/null
+++ b/src/styles/components/_selects.scss
@@ -0,0 +1,83 @@
+$loading-icon-suffix-width: 30px;
+
+@mixin selects() {
+ sl-select.select--primary {
+ --sl-input-background-color: var(--inputs-background-color);
+ --sl-input-background-color-hover: var(--inputs-background-color-hover);
+ --sl-input-background-color-focus: var(--inputs-background-color-focus);
+ --sl-input-border-color: var(--inputs-border-color);
+ --sl-input-border-color-hover: var(--inputs-border-color-hover);
+ --sl-input-border-color-focus: var(--inputs-border-color-focus);
+ --sl-input-font-family: var(--inter-font);
+ --sl-input-font-size-medium: var(--font-size-md);
+ --sl-input-color: var(--inputs-color);
+ --sl-input-color-hover: var(--inputs-color-hover);
+ --sl-input-color-focus: var(--inputs-color-focus);
+ --sl-input-placeholder-color: var(--inputs-placeholder-color);
+ --sl-input-focus-ring-color: var(--inputs-focus-ring-color);
+ --sl-input-focus-ring-offset: 0;
+ --sl-input-required-content: '';
+ --sl-input-required-content-offset: 0;
+ --sl-panel-background-color: var(--panels-background);
+
+ &::part(base) {
+ transition:
+ color 0.3s ease,
+ background-color 0.3s ease,
+ border-color 0.3s ease;
+ }
+
+ &::part(input)::placeholder {
+ font-size: var(--font-size-sm);
+ }
+
+ &::part(form-control) {
+ text-align: start;
+ }
+
+ &::part(form-control-label) {
+ margin-block-end: var(--spacing-r-sm);
+ }
+
+ &::part(form-control-help-text) {
+ margin-top: var(--spacing-r-sm);
+ font-size: var(--font-size-xs);
+ color: var(--inputs-placeholder-color);
+ }
+
+ .loading__image {
+ width: $loading-icon-suffix-width;
+ height: auto;
+ margin-inline-end: var(--spacing-r-sm);
+ }
+
+ sl-icon {
+ transition: color 0.3s ease;
+ }
+ }
+
+ sl-input:not([disabled]):hover sl-icon {
+ color: var(--icons-color-hover);
+ }
+
+ sl-input.ng-invalid.ng-touched:not(form) {
+ &::part(form-control-input) {
+ --sl-input-border-color: var(--status-color-error);
+ --sl-input-border-color-hover: var(--status-color-error);
+ --sl-input-border-color-focus: var(--status-color-error);
+ --sl-input-placeholder-color: var(--status-color-error);
+ }
+
+ &::part(form-control-help-text) {
+ color: var(--status-color-error);
+ }
+ }
+
+ sl-input.ng-valid.ng-touched:not(form) {
+ &::part(form-control-input) {
+ --sl-input-border-color: var(--status-color-success);
+ --sl-input-border-color-hover: var(--status-color-success);
+ --sl-input-border-color-focus: var(--status-color-success);
+ }
+ }
+}
diff --git a/src/styles/global.scss b/src/styles/global.scss
new file mode 100644
index 00000000..26cb64b3
--- /dev/null
+++ b/src/styles/global.scss
@@ -0,0 +1,37 @@
+@use 'base/reset';
+@use 'base/z-index';
+@use 'base/border-radius';
+@use 'base/spacing';
+@use 'base/typography';
+@use 'base/themes';
+@use 'components/headings';
+@use 'components/alerts';
+@use 'components/links';
+@use 'components/dropdowns';
+@use 'components/buttons';
+@use 'components/forms';
+@use 'components/inputs';
+@use 'components/selects';
+@use 'components/options';
+@use 'components/checkboxes';
+@use 'components/kbd';
+@use 'components/loaders';
+
+// Base
+@include reset.reset;
+@include typography.typography;
+@include themes.themes;
+
+// Components
+@include headings.headings;
+@include alerts.alerts;
+@include links.links;
+@include buttons.buttons;
+@include dropdowns.dropdowns;
+@include forms.forms;
+@include inputs.inputs;
+@include selects.selects;
+@include options.options;
+@include checkboxes.checkboxes;
+@include kbd.kbd;
+@include loaders.loaders;
diff --git a/src/test.ts b/src/test.ts
deleted file mode 100644
index cd612eeb..00000000
--- a/src/test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
-
-import 'zone.js/dist/long-stack-trace-zone';
-import 'zone.js/dist/proxy.js';
-import 'zone.js/dist/sync-test';
-import 'zone.js/dist/jasmine-patch';
-import 'zone.js/dist/async-test';
-import 'zone.js/dist/fake-async-test';
-import { getTestBed } from '@angular/core/testing';
-import {
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
-declare const __karma__: any;
-declare const require: any;
-
-// Prevent Karma from running prematurely.
-__karma__.loaded = function () {};
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting()
-);
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
-// Finally, start Karma to run the tests.
-__karma__.start();
diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json
deleted file mode 100644
index 39ba8dba..00000000
--- a/src/tsconfig.app.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/app",
- "baseUrl": "./",
- "module": "es2015",
- "types": []
- },
- "exclude": [
- "test.ts",
- "**/*.spec.ts"
- ]
-}
diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json
deleted file mode 100644
index 63d89ff2..00000000
--- a/src/tsconfig.spec.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/spec",
- "baseUrl": "./",
- "module": "commonjs",
- "target": "es5",
- "types": [
- "jasmine",
- "node"
- ]
- },
- "files": [
- "test.ts"
- ],
- "include": [
- "**/*.spec.ts",
- "**/*.d.ts"
- ]
-}
diff --git a/tsconfig.app.json b/tsconfig.app.json
new file mode 100755
index 00000000..332e7f3f
--- /dev/null
+++ b/tsconfig.app.json
@@ -0,0 +1,10 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/app",
+ "types": ["@angular/localize", "node"]
+ },
+ "files": ["src/main.ts", "src/main.server.ts"],
+ "include": ["src/**/*.d.ts"]
+}
diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json
new file mode 100644
index 00000000..02ecc6f5
--- /dev/null
+++ b/tsconfig.eslint.json
@@ -0,0 +1,4 @@
+{
+ "extends": "./tsconfig.json",
+ "include": ["src/**/*.*", "e2e/**/*.*"]
+}
diff --git a/tsconfig.json b/tsconfig.json
old mode 100644
new mode 100755
index fcf1a1f9..114e8c87
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,22 +1,39 @@
+/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
+/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
{
"compileOnSave": false,
"compilerOptions": {
+ "baseUrl": "./",
"outDir": "./dist/out-tsc",
+ "strict": true,
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "skipLibCheck": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
"sourceMap": true,
"declaration": false,
- "moduleResolution": "node",
- "emitDecoratorMetadata": true,
"experimentalDecorators": true,
- "target": "es5",
- "typeRoots": [
- "node_modules/@types"
- ],
- "lib": [
- "es2017",
- "dom"
- ]
+ "moduleResolution": "bundler",
+ "importHelpers": true,
+ "target": "ES2023",
+ "module": "ES2022",
+ "lib": ["ES2023", "dom"],
+ "paths": {
+ "~environments/*": ["src/environments/*"],
+ "~core/*": ["src/app/core/*"],
+ "~shared/*": ["src/app/shared/*"],
+ "~features/*": ["src/app/features/*"]
+ }
},
"angularCompilerOptions": {
- "preserveWhitespaces": false
+ "enableI18nLegacyMessageIdFormat": false,
+ "strictInjectionParameters": true,
+ "strictInputAccessModifiers": true,
+ "strictTemplates": true,
+ "typeCheckHostBindings": true,
+ "strictStandalone": true
}
}
diff --git a/tsconfig.spec.json b/tsconfig.spec.json
new file mode 100755
index 00000000..95420be2
--- /dev/null
+++ b/tsconfig.spec.json
@@ -0,0 +1,10 @@
+/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
+/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/spec",
+ "types": ["@angular/localize"]
+ },
+ "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
+}
diff --git a/tslint.json b/tslint.json
deleted file mode 100644
index f5264394..00000000
--- a/tslint.json
+++ /dev/null
@@ -1,140 +0,0 @@
-{
- "rulesDirectory": [
- "node_modules/codelyzer"
- ],
- "rules": {
- "arrow-return-shorthand": true,
- "callable-types": true,
- "class-name": true,
- "comment-format": [
- true,
- "check-space"
- ],
- "curly": true,
- "eofline": true,
- "forin": true,
- "import-blacklist": [
- true,
- "rxjs",
- "rxjs/Rx"
- ],
- "import-spacing": true,
- "indent": [
- true,
- "spaces"
- ],
- "interface-over-type-literal": true,
- "label-position": true,
- "max-line-length": [
- true,
- 140
- ],
- "member-access": false,
- "member-ordering": [
- true,
- {
- "order": [
- "static-field",
- "instance-field",
- "static-method",
- "instance-method"
- ]
- }
- ],
- "no-arg": true,
- "no-bitwise": true,
- "no-console": [
- true,
- "debug",
- "info",
- "time",
- "timeEnd",
- "trace"
- ],
- "no-construct": true,
- "no-debugger": true,
- "no-duplicate-super": true,
- "no-empty": false,
- "no-empty-interface": true,
- "no-eval": true,
- "no-inferrable-types": [
- true,
- "ignore-params"
- ],
- "no-misused-new": true,
- "no-non-null-assertion": true,
- "no-shadowed-variable": true,
- "no-string-literal": false,
- "no-string-throw": true,
- "no-switch-case-fall-through": true,
- "no-trailing-whitespace": true,
- "no-unnecessary-initializer": true,
- "no-unused-expression": true,
- "no-use-before-declare": true,
- "no-var-keyword": true,
- "object-literal-sort-keys": false,
- "one-line": [
- true,
- "check-open-brace",
- "check-catch",
- "check-else",
- "check-whitespace"
- ],
- "prefer-const": true,
- "quotemark": [
- true,
- "single"
- ],
- "radix": true,
- "semicolon": [
- true,
- "always"
- ],
- "triple-equals": [
- true,
- "allow-null-check"
- ],
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- }
- ],
- "typeof-compare": true,
- "unified-signatures": true,
- "variable-name": false,
- "whitespace": [
- true,
- "check-branch",
- "check-decl",
- "check-operator",
- "check-separator",
- "check-type"
- ],
- "directive-selector": [
- true,
- "attribute",
- "app",
- "camelCase"
- ],
- "component-selector": [
- true,
- "element",
- "app",
- "kebab-case"
- ],
- "use-input-property-decorator": true,
- "use-output-property-decorator": true,
- "use-host-property-decorator": true,
- "no-input-rename": true,
- "no-output-rename": true,
- "use-life-cycle-interface": true,
- "use-pipe-transform-interface": true,
- "component-class-suffix": true,
- "directive-class-suffix": true
- }
-}