diff --git a/.circleci/config.yml b/.circleci/config.yml
index 8a756b3de..fb239ceb3 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -10,7 +10,7 @@ orbs:
jobs:
build:
docker:
- - image: cimg/node:20.8.0
+ - image: cimg/node:20.18.0
- image: mongo:4.4
working_directory: ~/homebrewery
@@ -27,7 +27,7 @@ jobs:
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- - run: sudo npm install -g npm@10.2.0
+ - run: sudo npm install -g npm@10.8.2
- node/install-packages:
app-dir: ~/homebrewery
cache-path: node_modules
@@ -45,7 +45,7 @@ jobs:
test:
docker:
- - image: cimg/node:20.8.0
+ - image: cimg/node:20.17.0
working_directory: ~/homebrewery
parallelism: 1
@@ -65,17 +65,29 @@ jobs:
name: Test - Mustache Spans
command: npm run test:mustache-syntax
- run:
- name: Test - Definition Lists
- command: npm run test:definition-lists
+ name: Test - Hard Breaks
+ command: npm run test:hard-breaks
+ - run:
+ name: Test - Non-Breaking Spaces
+ command: npm run test:non-breaking-spaces
- run:
name: Test - Variables
command: npm run test:variables
+ - run:
+ name: Test - Emojis
+ command: npm run test:emojis
- run:
name: Test - Routes
command: npm run test:route
+ - run:
+ name: Test - HTML sanitization
+ command: npm run test:safehtml
- run:
name: Test - Coverage
command: npm run test:coverage
+ - run:
+ name: Test - Content Negotiation
+ command: npm run test:content-negotiation
workflows:
build_and_test:
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 74e7bb660..000000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,79 +0,0 @@
-module.exports = {
- root : true,
- parserOptions : {
- ecmaVersion : 2021,
- sourceType : 'module',
- ecmaFeatures : {
- jsx : true
- }
- },
- env : {
- browser : true,
- node : true
- },
- plugins : ['react', 'jest'],
- rules : {
- /** Errors **/
- 'camelcase' : ['error', { properties: 'never' }],
- //'func-style' : ['error', 'expression', { allowArrowFunctions: true }],
- 'no-array-constructor' : 'error',
- 'no-iterator' : 'error',
- 'no-nested-ternary' : 'error',
- 'no-new-object' : 'error',
- 'no-proto' : 'error',
- 'react/jsx-no-bind' : ['error', { allowArrowFunctions: true }],
- 'react/jsx-uses-react' : 'error',
- 'react/prefer-es6-class' : ['error', 'never'],
- 'jest/valid-expect' : ['error', { maxArgs: 3 }],
-
- /** Warnings **/
- 'max-lines' : ['warn', {
- max : 200,
- skipComments : true,
- skipBlankLines : true,
- }],
- 'max-depth' : ['warn', { max: 4 }],
- 'max-params' : ['warn', { max: 5 }],
- 'no-restricted-syntax' : ['warn', 'ClassDeclaration', 'SwitchStatement'],
- 'no-unused-vars' : ['warn', {
- vars : 'all',
- args : 'none',
- varsIgnorePattern : 'config|_|cx|createClass'
- }],
- 'react/jsx-uses-vars' : 'warn',
-
- /** Fixable **/
- 'arrow-parens' : ['warn', 'always'],
- 'brace-style' : ['warn', '1tbs', { allowSingleLine: true }],
- 'jsx-quotes' : ['warn', 'prefer-single'],
- 'no-var' : 'warn',
- 'prefer-const' : 'warn',
- 'prefer-template' : 'warn',
- 'quotes' : ['warn', 'single', { 'allowTemplateLiterals': true }],
- 'semi' : ['warn', 'always'],
-
- /** Whitespace **/
- 'array-bracket-spacing' : ['warn', 'never'],
- 'arrow-spacing' : ['warn', { before: false, after: false }],
- 'comma-spacing' : ['warn', { before: false, after: true }],
- 'indent' : ['warn', 'tab', { 'MemberExpression': 'off' }],
- 'keyword-spacing' : ['warn', {
- before : true,
- after : true,
- overrides : {
- if : { 'before': false, 'after': false }
- }
- }],
- 'key-spacing' : ['warn', {
- multiLine : { beforeColon: true, afterColon: true, align: 'colon' },
- singleLine : { beforeColon: false, afterColon: true }
- }],
- 'linebreak-style' : 'off',
- 'no-trailing-spaces' : 'warn',
- 'no-whitespace-before-property' : 'warn',
- 'object-curly-spacing' : ['warn', 'always'],
- 'react/jsx-indent-props' : ['warn', 'tab'],
- 'space-in-parens' : ['warn', 'never'],
- 'template-curly-spacing' : ['warn', 'never'],
- }
-};
diff --git a/.gitattributes b/.gitattributes
index 20eac6017..2f90f4172 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,3 @@
-package-lock.json binary
\ No newline at end of file
+package-lock.json binary
+
+*.json text eol=lf
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 208b0275b..2204679a6 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,6 +5,15 @@ updates:
schedule:
interval: daily
open-pull-requests-limit: 99
+ groups:
+ dev-dependencies:
+ dependency-type: "development"
+ patterns: ["*"]
+ update-types: ["patch", "minor"]
+ prod-dependencies:
+ dependency-type: "production"
+ patterns: ["*"]
+ update-types: ["patch", "minor"]
ignore:
- dependency-name: eslint
versions:
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 000000000..020653272
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,37 @@
+> [!TIP]
+> Before submitting a Pull Request, please consider the following to speed up reviews:
+> - 👷♀️ Create small PRs. Large PRs can usually be broken down into incremental PRs.
+> - 🚩 Do you already have several open PRs? Consider finishing or asking for help with existing PRs first.
+> - 🔧 Does your PR reference a discussed and approved issue, especially for personal or edge-case requests?
+> - 💡 Is the solution agreed upon? Save rework time by discussing strategy before coding.
+
+## Description
+
+_Describe what your PR accomplishes. Consider walking through the main changes to aid reviewers in following your code, especially if it covers multiple files._
+
+## Related Issues or Discussions
+
+> [!CAUTION]
+> If no issue exists yet, create it, and get agreement on the approach (or paste in a previous agreement from chat, etc.) before moving forward. (Experimental PRs are OK without prior discussion, but do not expect to get merged.)
+
+- Closes #
+
+## QA Instructions, Screenshots, Recordings
+
+_Replace this line with instructions on how to test or view your changes, as well as any before/after
+screenshots or recordings for UI changes._
+
+### Reviewer Checklist
+
+_Replace the list below with specific features you want reviewers to look at._
+
+*Reviewers, refer to this list when testing features, or suggest new items *
+- [ ] Verify new features are functional
+ - [ ] Feature A does X
+ - [ ] Feature B does Y
+- [ ] Verify old features have not broken
+ - [ ] Feature Z can still be used
+- [ ] Test for edge cases / try to break things
+ - [ ] Feature A handles negative numbers
+- [ ] Identify opportunities for simplification and refactoring
+- [ ] Check for code legibility and appropriate comments
diff --git a/.stylelintrc.json b/.stylelintrc.json
index 207dfda62..b5f2e7712 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -1,48 +1,48 @@
{
- "extends": [
- "stylelint-config-recess-order",
- "stylelint-config-recommended"],
- "plugins": [
- "stylelint-stylistic",
- "./stylelint_plugins/declaration-colon-align.js",
- "./stylelint_plugins/declaration-colon-min-space-before",
- "./stylelint_plugins/declaration-block-multi-line-min-declarations"
- ],
- "customSyntax": "postcss-less",
- "rules": {
- "no-descending-specificity" : null,
- "at-rule-no-unknown" : null,
- "function-no-unknown" : null,
- "font-family-no-missing-generic-family-keyword" : null,
- "font-weight-notation" : "named-where-possible",
- "font-family-name-quotes" : "always-unless-keyword",
- "stylistic/indentation" : "tab",
- "no-duplicate-selectors" : true,
- "stylistic/color-hex-case" : "upper",
- "color-hex-length" : "long",
- "stylistic/selector-combinator-space-after" : "always",
- "stylistic/selector-combinator-space-before" : "always",
- "stylistic/selector-attribute-operator-space-before" : "never",
- "stylistic/selector-attribute-operator-space-after" : "never",
- "stylistic/selector-attribute-brackets-space-inside" : "never",
- "selector-attribute-quotes" : "always",
- "selector-pseudo-element-colon-notation" : "double",
- "stylistic/selector-pseudo-class-parentheses-space-inside" : "never",
- "stylistic/block-opening-brace-space-before" : "always",
- "naturalcrit/declaration-colon-min-space-before" : 1,
- "stylistic/declaration-block-trailing-semicolon" : "always",
- "stylistic/declaration-colon-space-after" : "always",
- "stylistic/number-leading-zero" : "always",
- "function-url-quotes" : ["always", { "except": ["empty"] }],
- "function-url-scheme-disallowed-list" : ["data","http"],
- "comment-whitespace-inside" : "always",
- "stylistic/string-quotes" : "single",
- "stylistic/media-feature-range-operator-space-before" : "always",
- "stylistic/media-feature-range-operator-space-after" : "always",
- "stylistic/media-feature-parentheses-space-inside" : "never",
- "stylistic/media-feature-colon-space-before" : "always",
- "stylistic/media-feature-colon-space-after" : "always",
- "naturalcrit/declaration-colon-align" : true,
- "naturalcrit/declaration-block-multi-line-min-declarations": 1
- }
+ "extends": [
+ "stylelint-config-recess-order",
+ "stylelint-config-recommended"],
+ "plugins": [
+ "@stylistic/stylelint-plugin",
+ "./stylelint_plugins/declaration-colon-align.js",
+ "./stylelint_plugins/declaration-colon-min-space-before",
+ "./stylelint_plugins/declaration-block-multi-line-min-declarations"
+ ],
+ "customSyntax": "postcss-less",
+ "rules": {
+ "no-descending-specificity" : null,
+ "at-rule-no-unknown" : null,
+ "function-no-unknown" : null,
+ "font-family-no-missing-generic-family-keyword" : null,
+ "font-weight-notation" : "named-where-possible",
+ "font-family-name-quotes" : "always-unless-keyword",
+ "@stylistic/indentation" : "tab",
+ "no-duplicate-selectors" : true,
+ "@stylistic/color-hex-case" : "upper",
+ "color-hex-length" : "long",
+ "@stylistic/selector-combinator-space-after" : "always",
+ "@stylistic/selector-combinator-space-before" : "always",
+ "@stylistic/selector-attribute-operator-space-before" : "never",
+ "@stylistic/selector-attribute-operator-space-after" : "never",
+ "@stylistic/selector-attribute-brackets-space-inside" : "never",
+ "selector-attribute-quotes" : "always",
+ "selector-pseudo-element-colon-notation" : "double",
+ "@stylistic/selector-pseudo-class-parentheses-space-inside" : "never",
+ "@stylistic/block-opening-brace-space-before" : "always",
+ "naturalcrit/declaration-colon-min-space-before" : 1,
+ "@stylistic/declaration-block-trailing-semicolon" : "always",
+ "@stylistic/declaration-colon-space-after" : "always",
+ "@stylistic/number-leading-zero" : "always",
+ "function-url-quotes" : ["always", { "except": ["empty"] }],
+ "function-url-scheme-disallowed-list" : ["data","http"],
+ "comment-whitespace-inside" : "always",
+ "@stylistic/string-quotes" : "single",
+ "@stylistic/media-feature-range-operator-space-before" : "always",
+ "@stylistic/media-feature-range-operator-space-after" : "always",
+ "@stylistic/media-feature-parentheses-space-inside" : "never",
+ "@stylistic/media-feature-colon-space-before" : "always",
+ "@stylistic/media-feature-colon-space-after" : "always",
+ "naturalcrit/declaration-colon-align" : true,
+ "naturalcrit/declaration-block-multi-line-min-declarations" : 1
+ }
}
diff --git a/Dockerfile b/Dockerfile
index 82b13ac86..17d02b01f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:18-alpine
+FROM node:22-alpine
RUN apk --no-cache add git
ENV NODE_ENV=docker
@@ -9,7 +9,10 @@ WORKDIR /usr/src/app
# Copy package.json into the image, then run yarn install
# This improves caching so we don't have to download the dependencies every time the code changes
COPY package.json ./
+COPY config/docker.json usr/src/app/config
# --ignore-scripts tells yarn not to run postbuild. We run it explicitly later
+RUN node --version
+RUN npm --version
RUN npm install --ignore-scripts
# Bundle app source and build application
diff --git a/README.DOCKER.md b/README.DOCKER.md
index 356ac398a..4dfbef045 100644
--- a/README.DOCKER.md
+++ b/README.DOCKER.md
@@ -1,12 +1,119 @@
-# Running Homebrewery via Docker
+# Offline Install Instructions: Docker
-The repo includes a Dockerfile and a docker-compose.yml file.
+These instructions are for setting up a persistent instance of the Homebrewery application locally using Docker.
-To run the application via docker-compose.yml:
-`docker-compose up -d`
+If you intend to develop with Homebrewery, following the Homebrewery application section of this guide is not recommended. Using docker to deploy MongoDB locally for development is not a bad idea at all, however.
-To stop the application:
-`docker-compose down`
+# Install Docker
+
+## Docker Desktop (MacOS/Windows)
+
+Windows and Mac installs use Docker Desktop. Current install instructions are below.
+
+* [Mac](https://docs.docker.com/desktop/mac/install/)
+* [Windows](https://docs.docker.com/desktop/windows/install/)
+
+You can set up the docker engine to start on boot via the Docker desktop UI.
+
+## Docker Engine
+
+Linux installs use Docker Engine. Docker provides installers and instructions for several of the most common distrubutions. If you do not see yours listed, it is very likely supported indirectly by your distribution.
+
+* [Arch](https://docs.docker.com/desktop/setup/install/linux/archlinux/)
+* [CentOS](https://docs.docker.com/engine/install/centos/)
+* [Debian](https://docs.docker.com/engine/install/debian/)
+* [Fedora](https://docs.docker.com/engine/install/fedora/)
+* [RHEL](https://docs.docker.com/engine/install/rhel/)
+* [Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
+
+### Post installation steps
+[Manage Docker as a non-root user (highly recommended)](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)
+[Enable Docker to start on boot (highly recommended)](https://docs.docker.com/engine/install/linux-postinstall/#configure-docker-to-start-on-boot)
+
+# Build Homebrewery Image
+
+Next we build the homebrewery docker image. Start by cloning the repository.
+
+```shell
+git clone https://github.com/naturalcrit/homebrewery.git
+cd homebrewery
+```
+
+Make an changes you need to `config/docker.json` then build the image. If it does not exist,the below as a template.
+
+```
+{
+"host" : "localhost:8000",
+"naturalcrit_url" : "local.naturalcrit.com:8010",
+"secret" : "secret",
+"web_port" : 8000,
+"enable_v3" : true,
+"mongodb_uri": "mongodb://172.17.0.2/homebrewery",
+"enable_themes" : true,
+}
+```
+
+```shell
+docker-compose build homebrewery
+```
+
+# Add Mongo container
+
+Once docker is installed and running, it is time to set up the containers. First up, Mongo.
+
+```shell
+docker run --name homebrewery-mongodb -d --restart unless-stopped -v mongodata:/data/db -p 27017:27017 mongo:latest
+```
+
+Older CPUs may run into an issue with AVX support.
+```
+WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!
+ see https://jira.mongodb.org/browse/SERVER-54407
+ see also https://www.mongodb.com/community/forums/t/mongodb-5-0-cpu-intel-g4650-compatibility/116610/2
+ see also https://github.com/docker-library/mongo/issues/485#issuecomment-891991814
+```
+If you see a message similar to this, try using the bitnami mongo instead.
+
+```shell
+docker run --name homebrewery-mongodb -d --restart unless-stopped -v mongodata:/data/db -p 27017:27017 bitnami/mongo:latest
+```
+
+If your distribution is running on an arm device such as a Raspberry Pi, you will need to run the arm-built MongoDB v4.4.
+
+```shell
+docker run --name homebrewery-mongodb -d --restart unless-stopped -v mongodata:/data/db -p 27017:27017 arm64v8/mongo:4.4
+```
+
+## Run the Homebrewery Image
+```shell
+# Make sure you run this in the homebrewery directory
+docker run --name homebrewery-app -d --restart unless-stopped -e NODE_ENV=docker -v $(pwd)/config/docker.json:/usr/src/app/config/docker.json -p 8000:8000 docker.io/library/homebrewery:latest
+```
+
+## Updating the Image
+
+When Homebrewery code updates, your docker container will not automatically follow the changes. To do so you will need to rebuild your homebrewery image.
+
+First, return to your homebrewery clone (from Build Homebrewery Image above) or recreate the clone if you deleted your copy of the code.
+
+First, delete the existing image.
+
+```shell
+docker rm -f homebrewery-app
+```
+
+Next, update the clone's code to the latest version.
+
+```shell
+cd homebrewery
+git checkout master
+git pull upstream master
+```
+
+Finally, rebuild and restart the homebrewery image.
+
+```shell
+docker-compose build homebrewery
+docker run --name homebrewery-app -d --restart unless-stopped -e NODE_ENV=docker -v $(pwd)/config/docker.json:/usr/src/app/config/docker.json -p 8000:8000 docker.io/library/homebrewery:latest
+```
-To stop the application and remove all data:
-`docker-compose down -v`
diff --git a/README.md b/README.md
index df7f41503..5206f4cbf 100644
--- a/README.md
+++ b/README.md
@@ -144,3 +144,4 @@ your contribution to the project, please join our [gitter chat][gitter-url].
[github-mark-duplicate-url]: https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/about-duplicate-issues-and-pull-requests
[github-pr-docs-url]: https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request
[gitter-url]: https://gitter.im/naturalcrit/Lobby
+
diff --git a/babel.config.json b/babel.config.json
new file mode 100644
index 000000000..5e768ec31
--- /dev/null
+++ b/babel.config.json
@@ -0,0 +1,10 @@
+{
+ "presets": [
+ "@babel/preset-env",
+ "@babel/preset-react"
+ ],
+ "plugins": [
+ "@babel/plugin-transform-runtime",
+ "babel-plugin-transform-import-meta"
+ ]
+}
diff --git a/changelog.md b/changelog.md
index b331fc4f0..0a108b9f2 100644
--- a/changelog.md
+++ b/changelog.md
@@ -77,13 +77,535 @@ pre {
}
.varSyntaxTable th:first-of-type {
- width:6cm;
+ width:6cm;
+}
+
+.page .exampleTable td,th {
+ border:1px dashed #00000030;
}
```
## changelog
For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery).
+### Wednesday 7/09/2025 - v3.19.3
+
+{{taskList
+##### calculuschild
+* [x] Restoring original saving behavior; will continue investigating why save was failing for some users in background
+}}
+
+
+### Wednesday 7/09/2025 - v3.19.2
+
+{{taskList
+##### calculuschild
+* [x] Hotfix for saving issues - Please refresh your browser and report if problems continue
+}}
+
+### Wednesday 7/09/2025 - v3.19.1
+
+{{taskList
+##### calculuschild
+* [x] Send diffs instead of full file on save - should help with timeout/disconnect errors
+}}
+
+\column
+
+### Thursday 05/22/2025 - v3.19.0
+
+{{taskList
+##### abquintic
+* [x] Fix crash due to colons after `\page`
+
+Fixes issue [#4105](https://github.com/naturalcrit/homebrewery/issues/4105)
+
+* [x] Fix images with spaces in alt text not rendering
+
+Fixes issue [#3659](https://github.com/naturalcrit/homebrewery/issues/3659)
+
+* [x] Custom snippets! Open the new {{openSans **:fas_table_list: SNIPPETS**}} tab (next to the {{openSans **:fas_paintbrush: STYLE**}} tab). Custom snippets will appear in a new snippet dropdown, and will be included when imported as a custom theme.
+
+* [x] Move several generic styles/snippets from PHB to the Blank theme; generic snippets like image masks no longer require the PHB theme.
+
+* [x] Extract several Markdown+ syntax extensions into their own NPM packages, for use by the wider community.
+
+* [x] Allow `\pagebreak` and `\columnbreak` as alternatives to `\page` and `\column`
+
+Partially fixes issue [#4035](https://github.com/naturalcrit/homebrewery/issues/4035)
+
+* [x] Fix misbehaving column breaks on old Chrome
+
+Fixes issue [#4192](https://github.com/naturalcrit/homebrewery/issues/4192)
+
+* [x] Self-host font-awesome icons; fix missing icons on local installs
+
+Fixes issue [#1965](https://github.com/naturalcrit/homebrewery/issues/1965)
+Fixes issue [#1548](https://github.com/naturalcrit/homebrewery/issues/1548)
+
+##### G-Ambatte
+* [x] Fix CORS issue on local installs
+
+* [x] Fix print size issues when using the Facing and Flow view options.
+
+Fixes issue [#4146](https://github.com/naturalcrit/homebrewery/issues/4146)
+
+* [x] New built-in `$[HB_pageNumber]` variable. Works with math operations or can be reassigned like any other variable for more customization over the old `{{pageNumber,auto}}` snippet.\
+New snippet found at {{openSans **:fas_pencil: TEXT EDITOR :fas_arrow_right: :fas_bookmark: PAGE NUMBERING :fas_arrow_right: :fas_arrow_down_1_9: VARIABLE AUTO PAGE NUMBER**}}
+
+##### 5e-Cleric
+* [x] Fix search bar covering up snippet bar (3 times)
+
+Fixes issue [#4098](https://github.com/naturalcrit/homebrewery/issues/4098)
+
+* [x] Save view toolbar settings across sessions
+
+Fixes issue [#3835](https://github.com/naturalcrit/homebrewery/issues/3835)
+
+* [x] Fix styling issues on the view toolbar
+
+* [x] Update the Darkbrewery editor theme
+
+Fixes issue [#3312](https://github.com/naturalcrit/homebrewery/issues/3312)
+
+}}
+
+\page
+
+### Monday 03/10/2025 - v3.18.0
+
+{{taskList
+##### abquintic
+* [x] Add ability to paste in any Share ID/URL into a brew's {{openSans :fas_circle_info: **Properties** :fas_arrow_right: **THEMES**}} selection, as long as that brew has been tagged as `meta:theme`. You can now share your custom brew themes without needing to make a personal copy.
+* [x] Begin migration of custom Markdown extensions into their own NPM packages, for easier adoption by other users or projects
+* [x] Fix external HTML appearing in open codeblocks
+
+Fixes issue [#3206](https://github.com/naturalcrit/homebrewery/issues/3206)
+
+* [x] Fix tables not rendering when directly after text
+
+
+##### G-Ambatte
+* [x] Cleanup of "cover pages" in the {{openSans :fas_rectangle_list: **NAVIGATION**}} list
+* [x] Fix autosave triggering when no changes are present
+
+Fixes issue [#4051](https://github.com/naturalcrit/homebrewery/issues/4051)
+
+* [x] Remove empty table rows resulting from rowspan
+
+Fixes issue [#1729](https://github.com/naturalcrit/homebrewery/issues/1729)
+
+##### 5e-Cleric
+* [x] Style fixes for covers art and logos on A4 size pages
+* [x] Fix crash when trying to open brews that don't exist
+* [x] Tweaks and style update styling on {{openSans **VAULT** :fas_dungeon:}} page.
+
+Fixes issue [#4079](https://github.com/naturalcrit/homebrewery/issues/4079)
+
+##### Calculuschild
+* [x] `꞉꞉꞉꞉` now produces ` ` instead of a `
`
+* [x] Fix typos in tables freezing the editor
+
+Fixes issue [#4059](https://github.com/naturalcrit/homebrewery/issues/4059)
+
+
+##### MollyMaclachlan (New Contributor!)
+* [x] Fixed typos in the Monster Stat Block snippet
+
+Fixes issue [#4073](https://github.com/naturalcrit/homebrewery/issues/4073)
+
+
+##### All
+* [x] Update dependencies and scripts
+* [x] Refactor components and backend tools
+}}
+
+\column
+
+### Thursday 01/30/2025 - v3.17.0
+
+{{taskList
+##### 5e-Cleric
+
+* [x] Update FAQ
+
+* [x] Fix styling for Vault buttons and checkboxes
+
+* [x] Improve navigation bar styling
+
+* [x] Add feature to change username at https://www.naturalcrit.com/account
+
+* [x] Fix Reddit link crash when title has non-latin chars
+
+##### abquintic
+
+* [x] Fix page shadows toolbar option
+
+Fixes issue [#3919](https://github.com/naturalcrit/homebrewery/issues/3919)
+
+* [x] Add `:>>>` syntax for horizontal :>>>>> spaces
+
+* [x] Update Docker install instructions
+
+Fixes issue [#1930](https://github.com/naturalcrit/homebrewery/issues/1930)
+
+* [x] Allow styling pages via `\page{myStyles}` (with calculuschild)
+
+Fixes issue [#3901](https://github.com/naturalcrit/homebrewery/issues/3901)
+
+* [x] Update Ubuntu install instructions
+
+Fixes issue [#1952](https://github.com/naturalcrit/homebrewery/issues/1952)
+
+* [x] Add `:-:` `:-` `-:` syntax for paragraph alignment, similar to table column alignment; for example:
+
+-: -: Right-aligned
+
+:-: :-: Centered
+
+* [x] Add `:-- 50% --:` syntax to allow setting table column widths by percentage; for example:
+```
+| Narrow | Wide |
+|:- 10% -:|:-90%--:|
+| Cell | Cell |
+```
+
+
+| Narrow | Wide |
+|:- 10% -:|:-90%--:|
+|Cell | Cell |
+{exampleTable}
+
+##### G-Ambatte
+
+* [x] Fix crash when opening brew Properties tab
+
+Fixes issue [#3927](https://github.com/naturalcrit/homebrewery/issues/3927)
+
+* [x] Update error pages with steps to refresh credentials
+
+Fixes issue [#3955](https://github.com/naturalcrit/homebrewery/issues/3955)
+
+* [x] Add {{openSans :fas_rectangle_list: **NAVIGATION**}} menu to the viewer toolbar
+
+##### calculuschild
+
+* [x] Reduce display lag on large brews
+
+##### Gazook89
+
+* [x] Smarter detection of current page number
+
+Fixes issue [#3824](https://github.com/naturalcrit/homebrewery/issues/3824)
+
+##### All
+* [x] Update dependencies and scripts
+* [x] Refactor components and fix various errors
+}}
+
+\page
+
+### Wednesday 11/27/2024 - v3.16.1
+
+{{taskList
+##### 5e-Cleric
+
+* [x] Allow linking to specific HTML IDs via `#ID` at the end of the URL, e.g.: `homebrewery.naturalcrit.com/share/share/a6RCXwaDS58i#p4` to link to Page 4 directly
+
+Fixes issues [#2820](https://github.com/naturalcrit/homebrewery/issues/2820), [#3505](https://github.com/naturalcrit/homebrewery/issues/3505)
+
+* [x] Fix generation of link to certain Google Drive brews
+
+Fixes issue [#3776](https://github.com/naturalcrit/homebrewery/issues/3776)
+
+##### abquintic
+
+* [x] Fix blank pages appearing when pasting text
+
+Fixes issue [#3718](https://github.com/naturalcrit/homebrewery/issues/3718)
+
+##### Gazook89
+
+* [x] Add new brew viewing options to the view toolbar
+- {{fac,single-spread}} {{openSans **SINGLE PAGE**}}
+- {{fac,facing-spread}} {{openSans **TWO PAGE**}}
+- {{fac,flow-spread}} {{openSans **GRID**}}
+
+Fixes issue [#1379](https://github.com/naturalcrit/homebrewery/issues/1379)
+
+* [x] Updates to tag input boxes
+
+##### G-Ambatte
+
+* [x] Admin tools to fix certain corrupted documents
+
+Fixes issue [#3801](https://github.com/naturalcrit/homebrewery/issues/3801)
+
+* [x] Fix print window being affected by document zoom
+
+Fixes issue [#3744](https://github.com/naturalcrit/homebrewery/issues/3744)
+
+
+##### calculuschild, 5e-Cleric, G-Ambatte, Gazook89, abquintic
+
+* [x] Multiple code refactors, cleanups, and security fixes
+}}
+
+### Saturday 10/12/2024 - v3.16.0
+
+{{taskList
+##### 5e-Cleric
+
+* [x] Added a new API endpoint `/metadata/:shareId` to fetch metadata about individual brews
+
+Fixes issue [#2638](https://github.com/naturalcrit/homebrewery/issues/2638)
+
+* [x] Added A3, A5, and Card page size snippets under {{openSans **:fas_paintbrush: STYLE TAB :fas_arrow_right: :fas_print: PRINT**}}
+
+* [x] Adjust navbar styling for very long titles
+
+Fixes issue [#2071](https://github.com/naturalcrit/homebrewery/issues/2071)
+
+* [x] Added some sorting options to the {{openSans **VAULT** {{fas,fa-dungeon}}}} page
+
+* [x] Fix `language` property not working in share page
+
+Fixes issue [#3776](https://github.com/naturalcrit/homebrewery/issues/3776)
+
+##### abquintic
+
+* [x] New {{openSans **:fas_pencil: TEXT EDITOR :fas_arrow_right: :fas_bookmark: PAGE NUMBER :fas_arrow_right:**}}
+{{openSans **:fas_xmark: SKIP PAGE NUMBER**}} and {{openSans **:fas_arrow_rotate_left: RESTART PAGE NUMBER**}} snippets for more control over automatic page numbering.
+
+Fixes issue [#513](https://github.com/naturalcrit/homebrewery/issues/513)
+
+* [x] New Table of Contents control options via {{openSans **:fas_pencil: TEXT EDITOR :fas_arrow_right: :fas_book: TABLE OF CONTENTS**}} submenus. By default, H1-H3 is included in the ToC generation, but the new options allow marking `{{blocks}}` to include or exclude specific or ranges of contained headers. Also, a global option to increase the default range of H1-H3 to H1-H4/5/6. After applying these markers, you must regenerate the Table of Contents to see the changes.
+
+* [x] Added a ":fas_lock: SYNC VIEWS" button onto the divider bar. When locked, scrolling on either panel will sync the other panel to the same page.
+
+Fixes issue [#241](https://github.com/naturalcrit/homebrewery/issues/241)
+
+##### Gazook89
+
+* [x] Added a :fas_glasses: HIDE button to the page navigation bar
+
+##### G-Ambatte
+
+* [x] Automatic local backups of your files, in case of accidental data loss. Stores up to 5 snapshots of each brew edited in your browser, incrementing from a few minutes old to a maximum of several days. Restore a backup by clicking an entry in the new {{openSans **:fas_clock_rotate_left: HISTORY**}} button in the snippet bar.
+
+Fixes issue [#3070](https://github.com/naturalcrit/homebrewery/issues/3070)
+
+* [x] Fix issue with legacy brews breaking on Share page
+
+Fixes issue [#3764](https://github.com/naturalcrit/homebrewery/issues/3764)
+
+* [x] Fix print size when printing a zoomed document
+
+Fixes issue [#3744](https://github.com/naturalcrit/homebrewery/issues/3744)
+
+##### All
+
+* [x] Background code cleanup, security fixes, dev tool improvements, dependency updates, prep for upcoming features, etc.
+}}
+
+### Wednesday 9/25/2024 - v3.15.1
+
+{{taskList
+##### calculuschild
+
+* [x] Background fixes to handle Google Drive issues
+
+* [x] Remove duplicate error logging
+
+##### calculuschild, 5e-Cleric
+
+* [x] Fix links in {{openSans **RECENT BREWS :fas_clock_rotate_left:**}} and user {{openSans **BREWS :fas_beer_mug_empty:**}} pointing to trashed Google Drive files after transferring from Google to Homebrewery storage
+
+Fixes issue [#3776](https://github.com/naturalcrit/homebrewery/issues/3776)
+}}
+
+\page
+
+### Wednesday 9/04/2024 - v3.15.0
+
+{{taskList
+##### 5e-Cleric, abquintic, calculuschild, Gazook89, G-Ambatte, Ericsheid, Kaiburr
+
+* [x] New {{openSans **VAULT** {{fas,fa-dungeon}}}} page 🎉🎉🎉
+:
+All **PUBLISHED** brews ({{openSans :fas_circle_info: **Properties**}} menu) will be searchable, by title or author, and filtered by renderer. More features and adjustments will be coming.
+:
+Note: If any of your own brews are not showing up in search (particularly if stored on Google Drive), please edit and re-save to ensure our database has the data needed from document to be searchable.
+
+Fixes issue [#697](https://github.com/naturalcrit/homebrewery/issues/697)
+
+##### Gazook89
+
+* [x] Auto-focus on text editor when switching editor tabs
+}}
+
+### Wednesday 8/28/2024 - v3.14.3
+
+{{taskList
+##### calculuschild, G-Ambatte
+
+* [x] New {{openSans **IMAGES → {{fac,image-wrap-left}} IMAGE WRAP LEFT/RIGHT**}} snippets
+
+Fixes issue [#380](https://github.com/naturalcrit/homebrewery/issues/380)
+
+* [x] Fix v3.14.2 bug with `꞉꞉꞉꞉` failing after tables
+
+##### 5e-Cleric
+
+* [x] Fix Account page crash when not logged in
+
+Fixes issue [#3605](https://github.com/naturalcrit/homebrewery/issues/3605)
+
+##### abquintic
+
+* [x] Fix jump hotkeys conflicting with `CTRL + SHIFT`. Preview and Source movement shortcuts now use `CTRL + SHIFT + META + LEFT\RIGHTARROW`
+
+##### G-Ambatte
+
+* [x] Fix display issue with image wrap icons
+}}
+
+
+### Tuesday 8/27/2024 - v3.14.2
+
+{{taskList
+##### calculuschild
+
+* [x] Reroute invalid urls to homepage
+
+Fixes issues [#3269](https://github.com/naturalcrit/homebrewery/issues/3629)
+
+* [x] Background dependency updates
+
+##### G-Ambatte
+
+* [x] Add route to get brew styling via `/css/shareId`
+
+Fixes issues [#1097](https://github.com/naturalcrit/homebrewery/issues/1097)
+
+* [x] Fix `:emojis:` preventing code folding
+
+Fixes issues [#3604](https://github.com/naturalcrit/homebrewery/issues/3604)
+
+* [x] Fix mask image warping when rotated and stretched
+
+Fixes issues [#3636](https://github.com/naturalcrit/homebrewery/issues/3636)
+
+* [x] Fix Table of Contents uppercasing
+
+Fixes issues [#3572](https://github.com/naturalcrit/homebrewery/issues/3572)
+
+##### abquintic
+
+* [x] Create globally unique Header IDs across pages
+
+Fixes issues [#1430](https://github.com/naturalcrit/homebrewery/issues/1430)
+
+* [x] Fix colon `꞉꞉꞉꞉` being parsed in codeblocks
+
+* [x] Prevent crashes when loading undefined renderer or theme bundle
+
+* [x] Add Jump-To hotkeys
+
+ * Use `CTRL/META + SHIFT + LEFTARROW` to brewJump
+ * Use `CTRL/META + SHIFT + RIGHTARROW` to sourceJump
+
+* [x] Prevent reload from clobbering modified fresh clones
+
+##### 5e-Cleric, Gazook89
+
+* [x] Viewer tools for zoom/page navigation
+}}
+
+### Tuesday 8/13/2024 - v3.14.1
+
+{{taskList
+##### abquintic
+
+* [x] Allow Table of Contents to flow across columns
+
+Fixes issues [#2563](https://github.com/naturalcrit/homebrewery/issues/2563)
+
+* [x] Fix unusual margin spacing for adjacent `.descriptive` and `.wide` blocks
+
+Fixes issues [#2688](https://github.com/naturalcrit/homebrewery/issues/2688)
+
+* [x] Add code folding to :fas_paintbrush: {{openSans **STYLE**}} tab
+
+##### G-Ambatte
+
+* [x] Fix edge case where Table of Contents generator changed capitalization of headings
+
+Fixes issues [#3572](https://github.com/naturalcrit/homebrewery/issues/3572)
+
+* [x] Fix **Ink Friendly** snippet causing unselectable PDF text
+
+Fixes issues [#3563](https://github.com/naturalcrit/homebrewery/issues/3563)
+
+* [x] Prevent brews selecting themselves as a theme
+
+Fixes issues [#3614](https://github.com/naturalcrit/homebrewery/issues/3614)
+
+* [x] Fix info pages (`/faq`, `/migrate`, etc.) showing blank authorship info
+
+Fixes issues [#3568](https://github.com/naturalcrit/homebrewery/issues/3568)
+
+* [x] Add `abs()`, `sign()` and `signed()` functions to variable syntax math handler
+
+Fixes issues [#3537](https://github.com/naturalcrit/homebrewery/issues/3537)
+
+* [x] Fix variable math handler not processing commas (i.e., in `$[max(varA,varB)]`
+
+Fixes issues [#3613](https://github.com/naturalcrit/homebrewery/issues/3613)
+
+* [x] Fix variable math handler scrambling variables with names that are subsets of other variables
+
+Fixes issues [#3622](https://github.com/naturalcrit/homebrewery/issues/3622)
+
+##### calculuschild
+
+* [x] Fix `/migrate` page using an editor context instead of share context
+
+##### 5e-Cleric
+
+* [x] Fix Monster Stat Blocks losing color in Safari
+}}
+
+\page
+
+### Monday 7/29/2024 - v3.14.0
+{{taskList
+
+##### abquintic, calculuschild
+
+* [x] Alternative Brew Themes, including importing other brews as a base theme.
+
+- In the :fas_circle_info: **Properties** menu, find the new {{openSans **THEME**}} dropdown. It lists Brew Themes, including a new **Blank** theme as a simpler basis for custom styling.
+- Brews tagged with `meta:theme` will appear in the Brew Themes list. Selecting one loads its :fas_paintbrush: **Style** tab contents as the CSS basis for the current brew, allowing one brew to style multiple documents.
+- Brews with `meta:theme` can also select their own Theme, i.e. layering Themes on top of each other.
+- The next goal is to make **Published** Themes shareable between users.
+
+
+Fixes issues [#1899](https://github.com/naturalcrit/homebrewery/issues/1899), [#3085](https://github.com/naturalcrit/homebrewery/issues/3085)
+
+##### G-Ambatte
+
+* [x] Fix Drop-cap font becoming corrupted when Bold
+
+Fixes issues [#3551](https://github.com/naturalcrit/homebrewery/issues/3551)
+
+* [x] Fixes to UI styling
+
+Fixes issues [#3568](https://github.com/naturalcrit/homebrewery/issues/3568)
+
+}}
+
+
### Saturday 6/7/2024 - v3.13.1
{{taskList
@@ -131,8 +653,6 @@ Fixes issue [#3298](https://github.com/naturalcrit/homebrewery/issues/3298)
Fixes issue [#3397](https://github.com/naturalcrit/homebrewery/issues/3397)
}}
-\column
-
### Monday 18/3/2024 - v3.12.0
{{taskList
@@ -424,7 +944,7 @@ Fixes issue [#2729](https://github.com/naturalcrit/homebrewery/issues/2729),
### Thursday 17/08/2023 - v3.9.2
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Fix links to certain old Google Drive files
@@ -482,7 +1002,7 @@ Fixes issue [#1924](https://github.com/naturalcrit/homebrewery/issues/1924)
### Friday 02/06/2023 - v3.9.0
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Fix some files not showing up on userpage when user has a large number of brews in Google Drive
@@ -579,7 +1099,7 @@ Fixes issues [#2731](https://github.com/naturalcrit/homebrewery/issues/2731)
### Monday 13/03/2023 - v3.7.2
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Fix wide Monster Stat Blocks not spanning columns on Legacy
}}
@@ -602,7 +1122,7 @@ Fixes issues [#1569](https://github.com/naturalcrit/homebrewery/issues/1569)
* [x] Updated the Google Drive icon
* [x] Backend fix to unit tests failing intermittently
-##### Calculuschild
+##### calculuschild
* [x] Fix PDF pixelation on CoverPage text outlines
}}
@@ -614,7 +1134,7 @@ Fixes issues [#1569](https://github.com/naturalcrit/homebrewery/issues/1569)
**NOTE:** Some new snippets will now show a {{beta BETA}} tag. Feel free to use them, but be aware we may change how they work depending on your feedback.
}}
-##### Calculuschild
+##### calculuschild
* [x] New {{openSans **IMAGES → WATERCOLOR EDGE** {{fac,mask-edge}} }} and {{openSans **WATERCOLOR CORNER** {{fac,mask-corner}} }} snippets for V3, which adds a stylish watercolor texture to the edge of your images! (Thanks to /u/flamableconcrete on Reddit for providing these image masks!)
@@ -758,7 +1278,7 @@ Fixes issues [#1670](https://github.com/naturalcrit/homebrewery/issues/1670)
### Thursday 28/10/2022 - v3.3.1
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Fixes to several broken CSS styles from v3.3.0
@@ -773,7 +1293,7 @@ Fixes issues [#2468](https://github.com/naturalcrit/homebrewery/issues/2468)
### Friday 19/10/2022 - v3.3.0
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Fix for tables broken by Chrome v106
@@ -856,7 +1376,7 @@ Fixes issues [#2317](https://github.com/naturalcrit/homebrewery/issues/2317), [
### Wednesday 31/08/2022 - v3.2.1
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] Reference Links should now work inside tables
@@ -882,7 +1402,7 @@ Fixes issues [#2317](https://github.com/naturalcrit/homebrewery/issues/2317), [
### Saturday 27/08/2022 - v3.2.0
{{taskList
-##### Calculuschild
+##### calculuschild
* [x] The V3 renderer is now the default for new brews.
@@ -909,7 +1429,7 @@ Fixes issues [#2317](https://github.com/naturalcrit/homebrewery/issues/2317), [
### Thursday 09/06/2022 - v3.1.1
{{taskList
-##### Calculuschild:
+##### calculuschild:
* [x] Fixed class table decorations appearing on top of the table in PDF output.
diff --git a/client/admin/admin.jsx b/client/admin/admin.jsx
index 92e0b2aee..29973d221 100644
--- a/client/admin/admin.jsx
+++ b/client/admin/admin.jsx
@@ -1,38 +1,50 @@
-require('./admin.less');
-const React = require('react');
-const createClass = require('create-react-class');
+import './admin.less';
+import React, { useEffect, useState } from 'react';
+const BrewUtils = require('./brewUtils/brewUtils.jsx');
+const NotificationUtils = require('./notificationUtils/notificationUtils.jsx');
+import AuthorUtils from './authorUtils/authorUtils.jsx';
+import LockTools from './lockTools/lockTools.jsx';
+const tabGroups = ['brew', 'notifications', 'authors', 'locks'];
-const BrewCleanup = require('./brewCleanup/brewCleanup.jsx');
-const BrewLookup = require('./brewLookup/brewLookup.jsx');
-const BrewCompress = require ('./brewCompress/brewCompress.jsx');
-const Stats = require('./stats/stats.jsx');
+const Admin = ()=>{
+ const [currentTab, setCurrentTab] = useState('');
-const Admin = createClass({
- getDefaultProps : function() {
- return {};
- },
+ useEffect(()=>{
+ setCurrentTab(localStorage.getItem('hbAdminTab') || 'brew');
+ }, []);
- render : function(){
- return
+ useEffect(()=>{
+ localStorage.setItem('hbAdminTab', currentTab);
+ }, [currentTab]);
+ return (
+
;
- }
-});
+
+
+ {tabGroups.map((tab, idx)=>(
+ setCurrentTab(tab)}>
+ {tab.toUpperCase()}
+
+ ))}
+
+ {currentTab === 'brew' && }
+ {currentTab === 'notifications' && }
+ {currentTab === 'authors' && }
+ {currentTab === 'locks' && }
+
+
+ );
+};
module.exports = Admin;
diff --git a/client/admin/admin.less b/client/admin/admin.less
index a61335835..0fc353194 100644
--- a/client/admin/admin.less
+++ b/client/admin/admin.less
@@ -3,42 +3,136 @@
@import 'naturalcrit/styles/animations.less';
@import 'naturalcrit/styles/colors.less';
@import 'naturalcrit/styles/tooltip.less';
+@import './themes/fonts/iconFonts/fontAwesome.less';
@import 'font-awesome/css/font-awesome.css';
-html,body, #reactContainer, .naturalCrit{
- min-height : 100%;
-}
+html,body, #reactContainer, .naturalCrit { min-height : 100%; }
@sidebarWidth : 250px;
-body{
- background-color : #eee;
- font-family : 'Open Sans', sans-serif;
- color : #4b5055;
- font-weight : 100;
- text-rendering : optimizeLegibility;
- margin : 0;
+body {
+ height : 100%;
padding : 0;
- height : 100%;
+ margin : 0;
+ font-family : 'Open Sans', sans-serif;
+ font-weight : 100;
+ color : #4B5055;
+ background-color : #EEEEEE;
+ text-rendering : optimizeLegibility;
}
-.admin{
-
- header{
+:where(.admin) {
+ padding-bottom : 50px;
+ header {
+ padding : 20px 0px;
+ margin-bottom : 30px;
+ font-size : 2em;
+ color : white;
background-color : @red;
- font-size: 2em;
- padding : 20px 0px;
- color : white;
- margin-bottom: 30px;
- i{
- margin-right: 30px;
+ i { margin-right : 30px; }
+ a { float : right; }
+ }
+
+ hr { margin : 30px 0px; }
+
+ :where(.container) {
+ input {
+ height : 33px;
+ padding : 0px 10px;
+ margin-bottom : 20px;
+ font-family : monospace;
+ }
+
+ button {
+ height : 37px;
+ vertical-align : middle;
+ }
+
+ dl {
+ display : grid;
+ grid-template-columns : 120px 1fr;
+ row-gap : 10px;
+ align-items : center;
+ justify-items : start;
+ padding-top : 0.5em;
+ dt {
+ float : left;
+ clear : left;
+ height : fit-content;
+ font-weight : 900;
+ text-align : right;
+ &::after { content : ' : '; }
+ }
+ dd { height : fit-content; }
+ }
+
+ .tabs button {
+ margin-right : 3px;
+ margin-left : 3px;
+ color : black;
+ background-color : #EEEEEE;
+ border : 1px solid #444444;
+ border-radius : 5px;
+ &:hover {
+ color : #EEEEEE;
+ background-color : #444444;
+ }
+ &.active {
+ margin-right : 2px;
+ margin-left : 2px;
+ text-decoration : underline;
+ background-color : #CCCCCC;
+ border : 2px solid #444444;
+ }
+ }
+
+ .notificationUtils {
+ display : flex;
+ gap : 50px;
+ justify-content : space-between;
}
}
- hr{
- margin : 30px 0px;
+ table {
+ padding : 10px;
+
+ tr {
+ border-bottom : 1px solid;
+ &:last-of-type { border : none; }
+ &:nth-child(even) { background : #DDDDDD; }
+ }
+
+ thead {
+ background : rgb(193,236,230);
+ border-bottom : 2px solid;
+ }
+
+ th, td {
+ padding : 5px 10px;
+ vertical-align : middle;
+ text-align : center;
+ border-right : 1px solid;
+
+ &:last-child { border-right : none; }
+ }
+
+ th { font-weight : 900; }
+
+ td {
+ &:first-child {
+ font-weight : 900;
+ text-align : left;
+ }
+ }
}
-
+ .error {
+ float : right;
+ padding : 10px;
+ margin-block : 10px;
+ font-weight : 900;
+ color : white;
+ background : rgb(178, 54, 54);
+ }
}
diff --git a/client/admin/authorUtils/authorLookup/authorLookup.jsx b/client/admin/authorUtils/authorLookup/authorLookup.jsx
new file mode 100644
index 000000000..abdece6f7
--- /dev/null
+++ b/client/admin/authorUtils/authorLookup/authorLookup.jsx
@@ -0,0 +1,87 @@
+import './authorLookup.less';
+
+import React from 'react';
+import request from 'superagent';
+
+const authorLookup = ()=>{
+ const [author, setAuthor] = React.useState('');
+ const [searching, setSearching] = React.useState(false);
+ const [results, setResults] = React.useState([]);
+
+ const lookup = async ()=>{
+ if(!author) return;
+
+ setSearching(true);
+ setResults([]);
+
+ const brews = await request.get(`/admin/user/list/${author}`);
+ setResults(brews.body);
+ setSearching(false);
+ };
+
+ const renderResults = ()=>{
+ if(results.length == 0) return <>
+
Results
+
None found.
+ >;
+
+ return <>
+
{`Results - ${results.length} brews` }
+
+
+
+ Title
+ Share
+ Edit
+ Last Update
+ Storage
+
+
+
+ {results
+ .sort((a, b)=>{ // Sort brews from most recently updated
+ if(a.updatedAt > b.updatedAt) return -1;
+ return 1;
+ })
+ .map((brew, idx)=>{
+ return
+ {brew.title}
+ {brew.shareId}
+ {brew.editId}
+ {brew.updatedAt}
+ {brew.googleId ? 'Google' : 'Homebrewery'}
+ ;
+ })}
+
+
+ >;
+ };
+
+ const handleKeyPress = (evt)=>{
+ if(evt.key === 'Enter') return lookup();
+ };
+
+ const handleChange = (evt)=>{
+ setAuthor(evt.target.value);
+ };
+
+ return (
+
+
+
Author Lookup
+
+ Author Name:
+
+
+
+
+
+
+
+ {renderResults()}
+
+
+ );
+};
+
+module.exports = authorLookup;
diff --git a/client/admin/authorUtils/authorLookup/authorLookup.less b/client/admin/authorUtils/authorLookup/authorLookup.less
new file mode 100644
index 000000000..8c37e80d1
--- /dev/null
+++ b/client/admin/authorUtils/authorLookup/authorLookup.less
@@ -0,0 +1,29 @@
+.authorLookup {
+ position : relative;
+ display : flex;
+ flex-direction : column;
+
+ .field {
+ display : flex;
+ gap : 5px;
+ align-items : center;
+ justify-items : stretch;
+ width : 100%;
+ margin-bottom : 20px;
+
+
+ input {
+ height : 33px;
+ padding : 0px 10px;
+ margin-bottom : unset;
+ font-family : monospace;
+ }
+
+ button {
+ width : 50px;
+
+ i { margin-right : 10px; }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/client/admin/authorUtils/authorUtils.jsx b/client/admin/authorUtils/authorUtils.jsx
new file mode 100644
index 000000000..a96eea528
--- /dev/null
+++ b/client/admin/authorUtils/authorUtils.jsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+import AuthorLookup from './authorLookup/authorLookup.jsx';
+
+const authorUtils = ()=>{
+ return (
+
+ );
+};
+
+module.exports = authorUtils;
\ No newline at end of file
diff --git a/client/admin/brewCleanup/brewCleanup.less b/client/admin/brewCleanup/brewCleanup.less
deleted file mode 100644
index ec7582855..000000000
--- a/client/admin/brewCleanup/brewCleanup.less
+++ /dev/null
@@ -1,10 +0,0 @@
-.BrewCleanup{
- .removeBox{
- margin-top: 20px;
- button{
- background-color: @red;
- margin-right: 10px;
- }
- }
-
-}
\ No newline at end of file
diff --git a/client/admin/brewCompress/brewCompress.less b/client/admin/brewCompress/brewCompress.less
deleted file mode 100644
index 2a2bf42ea..000000000
--- a/client/admin/brewCompress/brewCompress.less
+++ /dev/null
@@ -1,10 +0,0 @@
-.BrewCompress{
- .removeBox{
- margin-top: 20px;
- button{
- background-color: @red;
- margin-right: 10px;
- }
- }
-
-}
\ No newline at end of file
diff --git a/client/admin/brewLookup/brewLookup.less b/client/admin/brewLookup/brewLookup.less
deleted file mode 100644
index 61eeec424..000000000
--- a/client/admin/brewLookup/brewLookup.less
+++ /dev/null
@@ -1,30 +0,0 @@
-
-.brewLookup{
- input{
- height : 33px;
- margin-bottom : 20px;
- padding : 0px 10px;
- font-family : monospace;
- }
- button{
- vertical-align : middle;
- height : 37px;
- }
- dl{
- @maxItemWidth : 132px;
- dt{
- float : left;
- clear : left;
- width : @maxItemWidth;
- text-align : right;
- &::after {
- content: " : ";
- }
- }
- dd{
- height : 1em;
- margin-left : @maxItemWidth + 6px;
- padding : 0 0 0.5em 0;
- }
- }
-}
\ No newline at end of file
diff --git a/client/admin/brewCleanup/brewCleanup.jsx b/client/admin/brewUtils/brewCleanup/brewCleanup.jsx
similarity index 86%
rename from client/admin/brewCleanup/brewCleanup.jsx
rename to client/admin/brewUtils/brewCleanup/brewCleanup.jsx
index a166ae112..d4b17c570 100644
--- a/client/admin/brewCleanup/brewCleanup.jsx
+++ b/client/admin/brewUtils/brewCleanup/brewCleanup.jsx
@@ -1,10 +1,8 @@
-require('./brewCleanup.less');
const React = require('react');
const createClass = require('create-react-class');
const request = require('superagent');
-
const BrewCleanup = createClass({
displayName : 'BrewCleanup',
getDefaultProps(){
@@ -39,9 +37,9 @@ const BrewCleanup = createClass({
if(!this.state.primed) return;
if(!this.state.count){
- return
No Matching Brews found.
;
+ return
No Matching Brews found.
;
}
- return
+ return
{this.state.pending
?
@@ -52,7 +50,7 @@ const BrewCleanup = createClass({
;
},
render(){
- return
+ return
Brew Cleanup
Removes very short brews to tidy up the database
@@ -65,7 +63,7 @@ const BrewCleanup = createClass({
{this.renderPrimed()}
{this.state.error
- &&
{this.state.error.toString()}
+ &&
{this.state.error.toString()}
}
;
}
diff --git a/client/admin/brewCompress/brewCompress.jsx b/client/admin/brewUtils/brewCompress/brewCompress.jsx
similarity index 92%
rename from client/admin/brewCompress/brewCompress.jsx
rename to client/admin/brewUtils/brewCompress/brewCompress.jsx
index 2c8e5b023..ccb59e027 100644
--- a/client/admin/brewCompress/brewCompress.jsx
+++ b/client/admin/brewUtils/brewCompress/brewCompress.jsx
@@ -1,10 +1,7 @@
-require('./brewCompress.less');
const React = require('react');
const createClass = require('create-react-class');
-
const request = require('superagent');
-
const BrewCompress = createClass({
displayName : 'BrewCompress',
getDefaultProps(){
@@ -53,9 +50,9 @@ const BrewCompress = createClass({
if(!this.state.primed) return;
if(!this.state.count){
- return
No Matching Brews found.
;
+ return
No Matching Brews found.
;
}
- return
+ return
{this.state.pending
?
@@ -69,7 +66,7 @@ const BrewCompress = createClass({
;
},
render(){
- return
+ return
Brew Compression
Compresses the text in brews to binary
diff --git a/client/admin/brewLookup/brewLookup.jsx b/client/admin/brewUtils/brewLookup/brewLookup.jsx
similarity index 57%
rename from client/admin/brewLookup/brewLookup.jsx
rename to client/admin/brewUtils/brewLookup/brewLookup.jsx
index c9212d990..fb780f29e 100644
--- a/client/admin/brewLookup/brewLookup.jsx
+++ b/client/admin/brewUtils/brewLookup/brewLookup.jsx
@@ -1,4 +1,3 @@
-require('./brewLookup.less');
const React = require('react');
const createClass = require('create-react-class');
const cx = require('classnames');
@@ -13,27 +12,48 @@ const BrewLookup = createClass({
},
getInitialState() {
return {
- query : '',
- foundBrew : null,
- searching : false,
- error : null
+ query : '',
+ foundBrew : null,
+ searching : false,
+ error : null,
+ scriptCount : 0
};
},
handleChange(e){
this.setState({ query: e.target.value });
},
lookup(){
- this.setState({ searching: true, error: null });
+ this.setState({ searching: true, error: null, scriptCount: 0 });
request.get(`/admin/lookup/${this.state.query}`)
- .then((res)=>this.setState({ foundBrew: res.body }))
+ .then((res)=>{
+ const foundBrew = res.body;
+ const scriptCheck = foundBrew?.text.match(/(<\/?s)cript/g);
+ this.setState({
+ foundBrew : foundBrew,
+ scriptCount : scriptCheck?.length || 0,
+ });
+ })
.catch((err)=>this.setState({ error: err }))
- .finally(()=>this.setState({ searching: false }));
+ .finally(()=>{
+ this.setState({
+ searching : false
+ });
+ });
+ },
+
+ async cleanScript(){
+ if(!this.state.foundBrew?.shareId) return;
+
+ await request.put(`/admin/clean/script/${this.state.foundBrew.shareId}`)
+ .catch((err)=>{ this.setState({ error: err }); return; });
+
+ this.lookup();
},
renderFoundBrew(){
const brew = this.state.foundBrew;
- return
+ return
Title
{brew.title}
@@ -47,17 +67,28 @@ const BrewLookup = createClass({
Share Link
/share/{brew.shareId}
+ Created Time
+ {brew.createdAt ? Moment(brew.createdAt).toLocaleString() : 'No creation date'}
+
Last Updated
{Moment(brew.updatedAt).fromNow()}
Num of Views
{brew.views}
+
+ SCRIPT tags detected
+ {this.state.scriptCount}
+ {this.state.scriptCount > 0 &&
+
+ CLEAN BREW
+
+ }
;
},
render(){
- return
+ return
;
}
diff --git a/client/admin/brewUtils/brewUtils.jsx b/client/admin/brewUtils/brewUtils.jsx
new file mode 100644
index 000000000..bab2cb82f
--- /dev/null
+++ b/client/admin/brewUtils/brewUtils.jsx
@@ -0,0 +1,24 @@
+const React = require('react');
+const createClass = require('create-react-class');
+require('./brewUtils.less');
+
+const BrewCleanup = require('./brewCleanup/brewCleanup.jsx');
+const BrewLookup = require('./brewLookup/brewLookup.jsx');
+const BrewCompress = require ('./brewCompress/brewCompress.jsx');
+const Stats = require('./stats/stats.jsx');
+
+const BrewUtils = createClass({
+ render : function(){
+ return <>
+
+
+
+
+
+
+
+ >;
+ }
+});
+
+module.exports = BrewUtils;
diff --git a/client/admin/brewUtils/brewUtils.less b/client/admin/brewUtils/brewUtils.less
new file mode 100644
index 000000000..5bbbc3f69
--- /dev/null
+++ b/client/admin/brewUtils/brewUtils.less
@@ -0,0 +1,29 @@
+.brewUtil {
+ .result {
+ margin-top : 20px;
+ button {
+ margin-right : 10px;
+ background-color : @red;
+ }
+ }
+ .cleanButton {
+ display : inline-block;
+ width : 100%;
+ }
+}
+
+.stats {
+ position : relative;
+
+ .pending {
+ position : absolute;
+ top : 0.5em;
+ left : 100px;
+ width : 100%;
+ height : 100%;
+ }
+
+ &:has(.pending) { opacity : 0.5; }
+
+ dl { grid-template-columns : 200px 250px; }
+}
\ No newline at end of file
diff --git a/client/admin/stats/stats.jsx b/client/admin/brewUtils/stats/stats.jsx
similarity index 81%
rename from client/admin/stats/stats.jsx
rename to client/admin/brewUtils/stats/stats.jsx
index 85ce10610..7f96618f9 100644
--- a/client/admin/stats/stats.jsx
+++ b/client/admin/brewUtils/stats/stats.jsx
@@ -1,11 +1,8 @@
-require('./stats.less');
const React = require('react');
const createClass = require('create-react-class');
-const cx = require('classnames');
const request = require('superagent');
-
const Stats = createClass({
displayName : 'Stats',
getDefaultProps(){
@@ -14,7 +11,8 @@ const Stats = createClass({
getInitialState(){
return {
stats : {
- totalBrews : 0
+ totalBrews : 0,
+ totalPublishedBrews : 0
},
fetching : false
};
@@ -29,11 +27,13 @@ const Stats = createClass({
.finally(()=>this.setState({ fetching: false }));
},
render(){
- return
+ return
Stats
Total Brew Count
{this.state.stats.totalBrews}
+ Total Brews Published
+ {this.state.stats.totalPublishedBrews}
{this.state.fetching
diff --git a/client/admin/lockTools/lockTools.jsx b/client/admin/lockTools/lockTools.jsx
new file mode 100644
index 000000000..9a28d330f
--- /dev/null
+++ b/client/admin/lockTools/lockTools.jsx
@@ -0,0 +1,342 @@
+/*eslint max-lines: ["warn", {"max": 500, "skipBlankLines": true, "skipComments": true}]*/
+require('./lockTools.less');
+const React = require('react');
+const createClass = require('create-react-class');
+
+import request from '../../homebrew/utils/request-middleware.js';
+
+const LockTools = createClass({
+ displayName : 'LockTools',
+ getInitialState : function() {
+ return {
+ fetching : false,
+ reviewCount : 0
+ };
+ },
+
+ componentDidMount : function() {
+ this.updateReviewCount();
+ },
+
+ updateReviewCount : async function() {
+ const newCount = await request.get('/api/lock/count')
+ .then((res)=>{return res.body?.count || 'Unknown';});
+ if(newCount != this.state.reviewCount){
+ this.setState({
+ reviewCount : newCount
+ });
+ }
+ },
+
+ updateLockData : function(lock){
+ this.setState({
+ lock : lock
+ });
+ },
+
+ render : function() {
+ return
+
Lock Count
+
Number of brews currently locked: {this.state.reviewCount}
+
REFRESH
+
+
+
+
+
+
+
+
+
+
+
+
+
;
+ }
+});
+
+const LockBrew = createClass({
+ displayName : 'LockBrew',
+ getInitialState : function() {
+ // Default values
+ return {
+ brewId : this.props.lock?.shareId || '',
+ code : this.props.lock?.code || 455,
+ editMessage : this.props.lock?.editMessage || '',
+ shareMessage : this.props.lock?.shareMessage || 'This Brew has been locked.',
+ result : {},
+ overwrite : false,
+ };
+ },
+
+ handleChange : function(e, varName) {
+ const output = {};
+ output[varName] = e.target.value;
+ this.setState(output);
+ },
+
+ submit : function(e){
+ e.preventDefault();
+ if(!this.state.editMessage) return;
+ const newLock = {
+ overwrite : this.state.overwrite,
+ code : parseInt(this.state.code) || 100,
+ editMessage : this.state.editMessage,
+ shareMessage : this.state.shareMessage,
+ applied : new Date
+ };
+
+ request.post(`/api/lock/${this.state.brewId}`)
+ .send(newLock)
+ .set('Content-Type', 'application/json')
+ .then((response)=>{
+ this.setState({ result: response.body });
+ })
+ .catch((err)=>{
+ this.setState({ result: err.response.body });
+ });
+ },
+
+ renderInput : function (name) {
+ return
this.handleChange(e, name)} autoComplete='off' required/>;
+ },
+
+ renderResult : function(){
+ return <>
+
Result:
+
+
+ {Object.keys(this.state.result).map((key, idx)=>{
+ return
+ {key}
+ {this.state.result[key].toString()}
+
+ ;
+ })}
+
+
+ >;
+ },
+
+ render : function() {
+ return
+
+
Lock Brew
+
+ {this.state.result && this.renderResult()}
+
+
+
Suggestions
+
+
Codes
+
+ 455 - Generic Lock
+ 456 - Copyright issues
+ 457 - Confidential Information Leakage
+ 458 - Sensitive Personal Information
+ 459 - Defamation or Libel
+ 460 - Hate Speech or Discrimination
+ 461 - Illegal Activities
+ 462 - Malware or Phishing
+ 463 - Plagiarism
+ 465 - Misrepresentation
+ 466 - Inappropriate Content
+
+
+
+
Messages
+
+ Private Message: This is the private message that is ONLY displayed to the authors of the locked brew. This message MUST specify exactly what actions must be taken in order to have the brew unlocked.
+ Public Message: This is the public message that is displayed to the EVERYONE that attempts to view the locked brew.
+
+
+
+
;
+ }
+});
+
+const LockTable = createClass({
+ displayName : 'LockTable',
+ getDefaultProps : function() {
+ return {
+ title : '',
+ text : '',
+ fetchURL : '/api/locks',
+ resultName : '',
+ propertyNames : ['shareId'],
+ loadBrew : ()=>{}
+ };
+ },
+
+ getInitialState : function() {
+ return {
+ result : '',
+ error : '',
+ searching : false
+ };
+ },
+
+ lockKey : React.createRef(0),
+
+ clickFn : function (){
+ this.setState({ searching: true, error: null });
+
+ request.get(this.props.fetchURL)
+ .then((res)=>this.setState({ result: res.body }))
+ .catch((err)=>this.setState({ result: err.response.body }))
+ .finally(()=>{
+ this.setState({ searching: false });
+ });
+ },
+
+ updateBrewLockData : function (lockData){
+ this.lockKey.current++;
+ const brewData = {
+ key : this.lockKey.current,
+ shareId : lockData.shareId,
+ code : lockData.lock.code,
+ editMessage : lockData.lock.editMessage,
+ shareMessage : lockData.lock.shareMessage
+ };
+ this.props.loadBrew(brewData);
+ },
+
+ render : function () {
+ return <>
+
+
+
{this.props.title}
+
+ REFRESH
+
+
+
+ {this.state.result[this.props.resultName] &&
+ <>
+
{this.props.text}: {this.state.result[this.props.resultName].length}
+
+
+
+ {this.props.propertyNames.map((name, idx)=>{
+ return {name} ;
+ })}
+ clip
+ load
+
+
+
+ {this.state.result[this.props.resultName].map((result, resultIdx)=>{
+ return
+ {this.props.propertyNames.map((name, nameIdx)=>{
+ return
+ {result[name].toString()}
+ ;
+ })}
+ {navigator.clipboard.writeText(result.shareId.toString());}}>
+ {this.updateBrewLockData(result);}}>
+ ;
+ })}
+
+
+ >
+ }
+
+ >;
+ }
+});
+
+const LockLookup = createClass({
+ displayName : 'LockLookup',
+ getDefaultProps : function() {
+ return {
+ fetchURL : '/api/lookup'
+ };
+ },
+
+ getInitialState : function() {
+ return {
+ query : '',
+ result : '',
+ error : '',
+ searching : false
+ };
+ },
+
+ handleChange(e){
+ this.setState({ query: e.target.value });
+ },
+
+ clickFn(){
+ this.setState({ searching: true, error: null });
+
+ request.put(`${this.props.fetchURL}/${this.state.query}`)
+ .then((res)=>this.setState({ result: res.body }))
+ .catch((err)=>this.setState({ result: err.response.body }))
+ .finally(()=>{
+ this.setState({ searching: false });
+ });
+ },
+
+ renderResult : function(){
+ return
+
Result:
+
+
+ {Object.keys(this.state.result).map((key, idx)=>{
+ return
+ {key}
+ {this.state.result[key].toString()}
+
+ ;
+ })}
+
+
+
;
+ },
+
+ render : function() {
+ return
+
{this.props.title}
+
+
+
+
+
+ {this.state.error
+ &&
{this.state.error.toString()}
+ }
+
+ {this.state.result && this.renderResult()}
+
;
+ }
+});
+
+module.exports = LockTools;
\ No newline at end of file
diff --git a/client/admin/lockTools/lockTools.less b/client/admin/lockTools/lockTools.less
new file mode 100644
index 000000000..1ec9c524a
--- /dev/null
+++ b/client/admin/lockTools/lockTools.less
@@ -0,0 +1,66 @@
+.lockTools {
+ .lockBrew {
+ columns : 2;
+
+ .lockForm {
+ break-inside : avoid;
+
+ label {
+ display : inline-block;
+ width : 100%;
+ line-height : 2.25em;
+ text-align : right;
+ input {
+ float : right;
+ width : 65%;
+ margin-left : 10px;
+ }
+ &.checkbox {
+ line-height: 1.5em;
+ input {
+ width : 1.5em;
+ height : 1.5em;
+ }
+ }
+ }
+ }
+
+ .lockSuggestions {
+ line-height : 1.2em;
+ break-inside : avoid;
+ columns : 2;
+ h2 { column-span : all; }
+ h3 { margin-top : 0px; }
+ b { font-weight : 600; }
+
+ .lockCodes { break-inside : avoid; }
+ }
+ }
+
+ .lockTable {
+ cursor : default;
+ break-inside : avoid;
+ .row:hover {
+ color : #000000;
+ background-color : #CCCCCC;
+ }
+ .icon {
+ cursor : pointer;
+ &:hover { text-shadow : 0px 0px 6px black; }
+ }
+ }
+
+ th, td {
+ padding : 4px 10px;
+ text-align : center;
+ }
+ table, td { border : 1px solid #333333; }
+
+ .brewLookup {
+ min-height : 175px;
+ break-inside : avoid;
+ h2 { margin-top : 0px; }
+ }
+
+ button i { padding-left : 5px; }
+}
\ No newline at end of file
diff --git a/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx b/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx
new file mode 100644
index 000000000..0cca1047e
--- /dev/null
+++ b/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx
@@ -0,0 +1,109 @@
+require('./notificationAdd.less');
+const React = require('react');
+const { useState, useRef } = require('react');
+const request = require('superagent');
+
+const NotificationAdd = ()=>{
+ const [notificationResult, setNotificationResult] = useState(null);
+ const [searching, setSearching] = useState(false);
+ const [error, setError] = useState(null);
+
+ const dismissKeyRef = useRef(null);
+ const titleRef = useRef(null);
+ const textRef = useRef(null);
+ const startAtRef = useRef(null);
+ const stopAtRef = useRef(null);
+
+ const saveNotification = async ()=>{
+ const dismissKey = dismissKeyRef.current.value;
+ const title = titleRef.current.value;
+ const text = textRef.current.value;
+ const startAt = new Date(startAtRef.current.value);
+ const stopAt = new Date(stopAtRef.current.value);
+
+ // Basic validation
+ if(!dismissKey || !title || !text || isNaN(startAt.getTime()) || isNaN(stopAt.getTime())) {
+ setError('All fields are required');
+ return;
+ }
+ if(startAt >= stopAt) {
+ setError('End date must be after the start date!');
+ return;
+ }
+
+ const data = {
+ dismissKey,
+ title,
+ text,
+ startAt : startAt?.toISOString() ?? '',
+ stopAt : stopAt?.toISOString() ?? '',
+ };
+
+ try {
+ setSearching(true);
+ setError(null);
+ const response = await request.post('/admin/notification/add').send(data);
+ console.log(response.body);
+
+ // Reset form fields
+ dismissKeyRef.current.value = '';
+ titleRef.current.value = '';
+ textRef.current.value = '';
+
+ setNotificationResult('Notification successfully created.');
+ setSearching(false);
+ } catch (err) {
+ console.log(err.response.body.message);
+ setError(`Error saving notification: ${err.response.body.message}`);
+ setSearching(false);
+ }
+ };
+
+ return (
+
+
Add Notification
+
+
+ Dismiss Key:
+
+
+
+
+ Title:
+
+
+
+
+ Text:
+
+
+
+
+ Start Date:
+
+
+
+
+ End Date:
+
+
+
+
{notificationResult}
+
+
+
+ Save Notification
+
+ {error &&
{error}
}
+
+ );
+};
+
+module.exports = NotificationAdd;
diff --git a/client/admin/notificationUtils/notificationAdd/notificationAdd.less b/client/admin/notificationUtils/notificationAdd/notificationAdd.less
new file mode 100644
index 000000000..14bdabd03
--- /dev/null
+++ b/client/admin/notificationUtils/notificationAdd/notificationAdd.less
@@ -0,0 +1,38 @@
+.notificationAdd {
+ position : relative;
+ display : flex;
+ flex-direction : column;
+ width : 500px;
+
+ .field {
+ display : grid;
+ grid-template-columns : 120px 200px;
+ align-items : center;
+ justify-items : stretch;
+ width : 100%;
+ margin-bottom : 20px;
+
+ input {
+ height : 33px;
+ padding : 0px 10px;
+ margin-bottom : unset;
+ font-family : monospace;
+
+ &[type='date'] { width : 14ch; }
+ }
+
+ textarea {
+ width : 50ch;
+ min-height : 7em;
+ max-height : 20em;
+ padding : 10px;
+ resize : vertical;
+ }
+ }
+
+ button {
+ width : 200px;
+
+ i { margin-right : 10px; }
+ }
+}
\ No newline at end of file
diff --git a/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx b/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx
new file mode 100644
index 000000000..05f81b776
--- /dev/null
+++ b/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx
@@ -0,0 +1,105 @@
+require('./notificationLookup.less');
+
+const React = require('react');
+const { useState } = require('react');
+const request = require('superagent');
+const Moment = require('moment');
+
+const NotificationDetail = ({ notification, onDelete })=>(
+ <>
+
+ Key
+ {notification.dismissKey}
+
+ Title
+ {notification.title || 'No Title'}
+
+ Created
+ {Moment(notification.createdAt).format('LLLL')}
+
+ Start
+ {Moment(notification.startAt).format('LLLL') || 'No Start Time'}
+
+ Stop
+ {Moment(notification.stopAt).format('LLLL') || 'No End Time'}
+
+ Text
+ {notification.text || 'No Text'}
+
+
onDelete(notification.dismissKey)}>DELETE
+ >
+);
+
+const NotificationLookup = ()=>{
+ const [searching, setSearching] = useState(false);
+ const [error, setError] = useState(null);
+ const [notifications, setNotifications] = useState([]);
+
+ const lookupAll = async ()=>{
+ setSearching(true);
+ setError(null);
+
+ try {
+ const res = await request.get('/admin/notification/all');
+ setNotifications(res.body || []);
+ } catch (err) {
+ console.log(err);
+ setError(`Error looking up notifications: ${err.response.body.message}`);
+ } finally {
+ setSearching(false);
+ }
+ };
+
+ const deleteNotification = async (dismissKey)=>{
+ if(!dismissKey) return;
+
+ const confirmed = window.confirm(
+ `Really delete notification ${dismissKey}?`
+ );
+ if(!confirmed) {
+ console.log('Delete notification cancelled');
+ return;
+ }
+ console.log('Delete notification confirm');
+ try {
+ await request.delete(`/admin/notification/delete/${dismissKey}`);
+ lookupAll();
+ } catch (err) {
+ console.log(err);
+ setError(`Error deleting notification: ${err.response.body.message}`);
+ };
+ };
+
+ const renderNotificationsList = ()=>{
+ if(error)
+ return
{error}
;
+
+ if(notifications.length === 0)
+ return
No notifications available.
;
+
+ return (
+
+ {notifications.map((notification)=>(
+
+
+ {notification.title || 'No Title'}
+
+
+
+ ))}
+
+ );
+ };
+
+ return (
+
+
Check all Notifications
+
+
+
+ {renderNotificationsList()}
+
+ );
+};
+
+module.exports = NotificationLookup;
diff --git a/client/admin/notificationUtils/notificationLookup/notificationLookup.less b/client/admin/notificationUtils/notificationLookup/notificationLookup.less
new file mode 100644
index 000000000..65903213c
--- /dev/null
+++ b/client/admin/notificationUtils/notificationLookup/notificationLookup.less
@@ -0,0 +1,35 @@
+.notificationLookup {
+ width : 450px;
+ height : fit-content;
+
+ .noNotification { margin-block : 20px; }
+ .notificationList {
+ display : flex;
+ flex-direction : column;
+ max-height : 500px;
+ margin-block : 20px;
+ overflow : auto;
+ border : 1px solid;
+ border-radius : 5px;
+
+ li {
+ padding : 10px;
+ background : #CCCCCC;
+
+ &:nth-child(even) { background : #DDDDDD; }
+ &:first-child {
+ border-top-left-radius : 5px;
+ border-top-right-radius : 5px;
+ }
+ &:last-child {
+ border-bottom-right-radius : 5px;
+ border-bottom-left-radius : 5px;
+ }
+
+ summary {
+ font-size : 20px;
+ font-weight : 900;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/admin/notificationUtils/notificationUtils.jsx b/client/admin/notificationUtils/notificationUtils.jsx
new file mode 100644
index 000000000..22ea21328
--- /dev/null
+++ b/client/admin/notificationUtils/notificationUtils.jsx
@@ -0,0 +1,15 @@
+const React = require('react');
+
+const NotificationLookup = require('./notificationLookup/notificationLookup.jsx');
+const NotificationAdd = require('./notificationAdd/notificationAdd.jsx');
+
+const NotificationUtils = ()=>{
+ return (
+
+ );
+};
+
+module.exports = NotificationUtils;
diff --git a/client/admin/stats/stats.less b/client/admin/stats/stats.less
deleted file mode 100644
index 5337bf671..000000000
--- a/client/admin/stats/stats.less
+++ /dev/null
@@ -1,28 +0,0 @@
-
-.Stats{
- position : relative;
- .pending{
- position : absolute;
- top : 0px;
- left : 0px;
- height : 100%;
- width : 100%;
- background-color : rgba(238,238,238, 0.5);
- }
- dl{
- @maxItemWidth : 132px;
- dt{
- float : left;
- clear : left;
- width : @maxItemWidth;
- text-align : right;
- &::after {
- content: " : ";
- }
- }
- dd{
- margin : 0 0 0 @maxItemWidth + 10px;
- padding : 0 0 0.5em 0;
- }
- }
-}
\ No newline at end of file
diff --git a/client/components/Anchored.jsx b/client/components/Anchored.jsx
new file mode 100644
index 000000000..87af5a6e1
--- /dev/null
+++ b/client/components/Anchored.jsx
@@ -0,0 +1,96 @@
+import React, { useState, useRef, forwardRef, useEffect, cloneElement, Children } from 'react';
+import './Anchored.less';
+
+// Anchored is a wrapper component that must have as children an
and a component.
+// AnchoredTrigger must have a unique `id` prop, which is passed up to Anchored, saved in state on mount, and
+// then passed down through props into AnchoredBox. The `id` is used for the CSS Anchor Positioning properties.
+// **The Anchor Positioning API is not available in Firefox yet**
+// So in Firefox the positioning isn't perfect but is likely sufficient, and FF team seems to be working on the API quickly.
+
+// When Anchor Positioning is added to Firefox, this can also be rewritten using the Popover API-- add the `popover` attribute
+// to the container div, which will render the container in the *top level* and give it better interactions like
+// click outside to dismiss. **Do not** add without Anchor, though, because positioning is very limited with the `popover`
+// attribute.
+
+
+const Anchored = ({ children })=>{
+ const [visible, setVisible] = useState(false);
+ const [anchorId, setAnchorId] = useState(null);
+ const boxRef = useRef(null);
+ const triggerRef = useRef(null);
+
+ // promote trigger id to Anchored id (to pass it back down to the box as "anchorId")
+ useEffect(()=>{
+ if(triggerRef.current){
+ setAnchorId(triggerRef.current.id);
+ }
+ }, []);
+
+ // close box on outside click or Escape key
+ useEffect(()=>{
+ const handleClickOutside = (evt)=>{
+ if(
+ boxRef.current &&
+ !boxRef.current.contains(evt.target) &&
+ triggerRef.current &&
+ !triggerRef.current.contains(evt.target)
+ ) {
+ setVisible(false);
+ }
+ };
+
+ const handleEscapeKey = (evt)=>{
+ if(evt.key === 'Escape') setVisible(false);
+ };
+
+ window.addEventListener('click', handleClickOutside);
+ window.addEventListener('keydown', handleEscapeKey);
+
+ return ()=>{
+ window.removeEventListener('click', handleClickOutside);
+ window.removeEventListener('keydown', handleEscapeKey);
+ };
+ }, []);
+
+ const toggleVisibility = ()=>setVisible((prev)=>!prev);
+
+ // Map children to inject necessary props
+ const mappedChildren = Children.map(children, (child)=>{
+ if(child.type === AnchoredTrigger) {
+ return cloneElement(child, { ref: triggerRef, toggleVisibility, visible });
+ }
+ if(child.type === AnchoredBox) {
+ return cloneElement(child, { ref: boxRef, visible, anchorId });
+ }
+ return child;
+ });
+
+ return <>{mappedChildren}>;
+};
+
+// forward ref for AnchoredTrigger
+const AnchoredTrigger = forwardRef(({ toggleVisibility, visible, children, className, ...props }, ref)=>(
+
+ {children}
+
+));
+
+// forward ref for AnchoredBox
+const AnchoredBox = forwardRef(({ visible, children, className, anchorId, ...props }, ref)=>(
+
+ {children}
+
+));
+
+export { Anchored, AnchoredTrigger, AnchoredBox };
diff --git a/client/components/Anchored.less b/client/components/Anchored.less
new file mode 100644
index 000000000..aeb9f1d5f
--- /dev/null
+++ b/client/components/Anchored.less
@@ -0,0 +1,11 @@
+
+
+.anchored-box {
+ position : absolute;
+ visibility : hidden;
+ justify-self : anchor-center;
+ @supports (inset-block-start: anchor(bottom)) {
+ inset-block-start : anchor(bottom);
+ }
+ &.active { visibility : visible; }
+}
\ No newline at end of file
diff --git a/client/components/combobox.jsx b/client/components/combobox.jsx
index 5fcc154bc..ae9f1d7f8 100644
--- a/client/components/combobox.jsx
+++ b/client/components/combobox.jsx
@@ -45,6 +45,7 @@ const Combobox = createClass({
},
handleDropdown : function(show){
this.setState({
+ value : show ? '' : this.props.default,
showDropdown : show,
inputFocused : this.props.autoSuggest.clearAutoSuggestOnClick ? show : false
});
@@ -58,10 +59,10 @@ const Combobox = createClass({
this.props.onEntry(e);
});
},
- handleSelect : function(e){
+ handleSelect : function(value, data=value){
this.setState({
- value : e.currentTarget.getAttribute('data-value')
- }, ()=>{this.props.onSelect(this.state.value);});
+ value : value
+ }, ()=>{this.props.onSelect(data);});
;
},
renderTextInput : function(){
@@ -78,10 +79,11 @@ const Combobox = createClass({
if(!e.target.checkValidity()){
this.setState({
value : this.props.default
- }, ()=>this.props.onEntry(e));
+ });
}
}}
/>
+
);
},
@@ -92,11 +94,10 @@ const Combobox = createClass({
const filterOn = _.isString(this.props.autoSuggest.filterOn) ? [this.props.autoSuggest.filterOn] : this.props.autoSuggest.filterOn;
const filteredArrays = filterOn.map((attr)=>{
const children = dropdownChildren.filter((item)=>{
- if(suggestMethod === 'includes'){
+ if(suggestMethod === 'includes')
return item.props[attr]?.toLowerCase().includes(this.state.value.toLowerCase());
- } else if(suggestMethod === 'startsWith'){
+ if(suggestMethod === 'startsWith')
return item.props[attr]?.toLowerCase().startsWith(this.state.value.toLowerCase());
- }
});
return children;
});
@@ -111,7 +112,7 @@ const Combobox = createClass({
},
render : function () {
const dropdownChildren = this.state.options.map((child, i)=>{
- const clone = React.cloneElement(child, { onClick: (e)=>this.handleSelect(e) });
+ const clone = React.cloneElement(child, { onClick: ()=>this.handleSelect(child.props.value, child.props.data) });
return clone;
});
return (
diff --git a/client/components/combobox.less b/client/components/combobox.less
index 3810a874e..27f78356b 100644
--- a/client/components/combobox.less
+++ b/client/components/combobox.less
@@ -1,50 +1,46 @@
.dropdown-container {
- position:relative;
- input {
- width: 100%;
- }
- .dropdown-options {
- position:absolute;
- background-color: white;
- z-index: 100;
- width: 100%;
- border: 1px solid gray;
- overflow-y: auto;
- max-height: 200px;
+ position : relative;
+ input { width : 100%; }
+ .item i {
+ position : absolute;
+ right : 10px;
+ color : black;
+ }
+ .dropdown-options {
+ position : absolute;
+ z-index : 100;
+ width : 100%;
+ max-height : 200px;
+ overflow-y : auto;
+ background-color : white;
+ border : 1px solid gray;
- &::-webkit-scrollbar {
- width: 14px;
- }
- &::-webkit-scrollbar-track {
- background: #ffffff;
- }
- &::-webkit-scrollbar-thumb {
- background-color: #949494;
- border-radius: 10px;
- border: 3px solid #ffffff;
- }
-
- .item {
- position:relative;
- font-size: 11px;
- font-family: Open Sans;
- padding: 5px;
- cursor: default;
- margin: 0 3px;
- //border-bottom: 1px solid darkgray;
- &:hover {
- filter: brightness(120%);
- background-color: rgb(163, 163, 163);
- }
- .detail {
- width:100%;
- text-align: left;
- color: rgb(124, 124, 124);
- font-style:italic;
- font-size: 9px;
- }
- }
-
- }
+ &::-webkit-scrollbar { width : 14px; }
+ &::-webkit-scrollbar-track { background : #FFFFFF; }
+ &::-webkit-scrollbar-thumb {
+ background-color : #949494;
+ border : 3px solid #FFFFFF;
+ border-radius : 10px;
+ }
+ .item {
+ position : relative;
+ padding : 5px;
+ margin : 0 3px;
+ font-family : 'Open Sans';
+ font-size : 11px;
+ cursor : default;
+ &:hover {
+ background-color : rgb(163, 163, 163);
+ filter : brightness(120%);
+ }
+ .detail {
+ width : 100%;
+ font-size : 9px;
+ font-style : italic;
+ color : rgb(124, 124, 124);
+ text-align : left;
+ }
+ }
+ }
}
diff --git a/client/components/dialog.jsx b/client/components/dialog.jsx
index 2057ecb87..e88d06c99 100644
--- a/client/components/dialog.jsx
+++ b/client/components/dialog.jsx
@@ -1,22 +1,24 @@
// Dialog box, for popups and modal blocking messages
-const React = require('react');
+import React from 'react';
const { useRef, useEffect } = React;
-function Dialog({ dismissKey, closeText = 'Close', blocking = false, ...rest }) {
+function Dialog({ dismisskeys = [], closeText = 'Close', blocking = false, ...rest }) {
const dialogRef = useRef(null);
useEffect(()=>{
- if(!dismissKey || !localStorage.getItem(dismissKey)) {
- blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
- }
+ blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
}, []);
const dismiss = ()=>{
- dismissKey && localStorage.setItem(dismissKey, true);
+ dismisskeys.forEach((key)=>{
+ if(key) {
+ localStorage.setItem(key, 'true');
+ }
+ });
dialogRef.current?.close();
};
- return (
+ return (
{rest.children}
diff --git a/client/components/splitPane/splitPane.jsx b/client/components/splitPane/splitPane.jsx
new file mode 100644
index 000000000..4c77d81a5
--- /dev/null
+++ b/client/components/splitPane/splitPane.jsx
@@ -0,0 +1,110 @@
+require('./splitPane.less');
+const React = require('react');
+const { useState, useEffect } = React;
+
+const storageKey = 'naturalcrit-pane-split';
+
+const SplitPane = (props)=>{
+ const {
+ onDragFinish = ()=>{},
+ showDividerButtons = true
+ } = props;
+
+ const [isDragging, setIsDragging] = useState(false);
+ const [dividerPos, setDividerPos] = useState(null);
+ const [moveSource, setMoveSource] = useState(false);
+ const [moveBrew, setMoveBrew] = useState(false);
+ const [showMoveArrows, setShowMoveArrows] = useState(true);
+ const [liveScroll, setLiveScroll] = useState(false);
+
+ useEffect(()=>{
+ const savedPos = window.localStorage.getItem(storageKey);
+ setDividerPos(savedPos ? limitPosition(savedPos, 0.1 * (window.innerWidth - 13), 0.9 * (window.innerWidth - 13)) : window.innerWidth / 2);
+ setLiveScroll(window.localStorage.getItem('liveScroll') === 'true');
+
+ window.addEventListener('resize', handleResize);
+ return ()=>window.removeEventListener('resize', handleResize);
+ }, []);
+
+ const limitPosition = (x, min = 1, max = window.innerWidth - 13)=>Math.round(Math.min(max, Math.max(min, x)));
+
+ //when resizing, the divider should grow smaller if less space is given, then grow back if the space is restored, to the original position
+ const handleResize = ()=>setDividerPos(limitPosition(window.localStorage.getItem(storageKey), 0.1 * (window.innerWidth - 13), 0.9 * (window.innerWidth - 13)));
+
+ const handleUp =(e)=>{
+ e.preventDefault();
+ if(isDragging) {
+ onDragFinish(dividerPos);
+ window.localStorage.setItem(storageKey, dividerPos);
+ }
+ setIsDragging(false);
+ };
+
+ const handleDown = (e)=>{
+ e.preventDefault();
+ setIsDragging(true);
+ };
+
+ const handleMove = (e)=>{
+ if(!isDragging) return;
+ e.preventDefault();
+ setDividerPos(limitPosition(e.pageX));
+ };
+
+ const liveScrollToggle = ()=>{
+ window.localStorage.setItem('liveScroll', String(!liveScroll));
+ setLiveScroll(!liveScroll);
+ };
+
+ const renderMoveArrows = (showMoveArrows &&
+ <>
+ setMoveSource(!moveSource)} >
+
+
+ setMoveBrew(!moveBrew)} >
+
+
+
+
+
+ >
+ );
+
+ const renderDivider = (
+
+ {showDividerButtons && renderMoveArrows}
+
+
+
+
+
+
+ );
+
+ return (
+
+
+ {props.children[0]}
+
+ {renderDivider}
+
{props.children[1]}
+
+ );
+};
+
+const Pane = ({ width, children, isDragging, moveBrew, moveSource, liveScroll, setMoveArrows })=>{
+ const styles = width
+ ? { flex: 'none', width: `${width}px` }
+ : { pointerEvents: isDragging ? 'none' : 'auto' }; //Disable mouse capture in the right pane; else dragging into the iframe drops the divider
+
+ return (
+
+ {React.cloneElement(children, { moveBrew, moveSource, liveScroll, setMoveArrows })}
+
+ );
+};
+
+module.exports = SplitPane;
diff --git a/shared/naturalcrit/splitPane/splitPane.less b/client/components/splitPane/splitPane.less
similarity index 56%
rename from shared/naturalcrit/splitPane/splitPane.less
rename to client/components/splitPane/splitPane.less
index 831b5ce47..80a8695af 100644
--- a/shared/naturalcrit/splitPane/splitPane.less
+++ b/client/components/splitPane/splitPane.less
@@ -1,60 +1,68 @@
-.splitPane{
+.splitPane {
position : relative;
display : flex;
+ flex-direction : row;
height : 100%;
outline : none;
- flex-direction : row;
- .pane{
+ .pane {
+ flex : 1;
overflow-x : hidden;
overflow-y : hidden;
- flex : 1;
}
- .divider{
- touch-action : none;
+ .divider {
+ position : relative;
display : table;
- height : 100%;
width : 15px;
- cursor : ew-resize;
- background-color : #bbb;
+ height : 100%;
text-align : center;
- .dots{
+ touch-action : none;
+ cursor : ew-resize;
+ background-color : #BBBBBB;
+ .dots {
display : table-cell;
vertical-align : middle;
text-align : center;
- i{
+ i {
display : block !important;
margin : 10px 0px;
font-size : 6px;
- color : #666;
+ color : #666666;
}
}
- &:hover{
- background-color: #999;
- }
+ &:hover,&.dragging { background-color : #999999; }
}
- .arrow{
+ .arrow {
position : absolute;
+ left : 50%;
+ z-index : 999;
width : 25px;
height : 25px;
- border : 2px solid #bbb;
- border-radius : 15px;
- text-align : center;
font-size : 1.2em;
+ text-align : center;
cursor : pointer;
- background-color : #ddd;
- z-index : 999;
- box-shadow : 0 4px 5px #0000007f;
- &.left{
+ background-color : #DDDDDD;
+ border : 2px solid #BBBBBB;
+ border-radius : 15px;
+ box-shadow : 0 4px 5px #0000007F;
+ translate : -50%;
+ &.left {
.tooltipLeft('Jump to location in Editor');
top : 30px;
}
- &.right{
+ &.right {
.tooltipRight('Jump to location in Preview');
top : 60px;
}
- &:hover{
- background-color: #666;
+ &.lock {
+ .tooltipRight('De-sync Editor and Preview locations.');
+ top : 90px;
+ background : #666666;
}
+ &.unlock {
+ .tooltipRight('Sync Editor and Preview locations');
+ top : 90px;
+ }
+ &:hover { background-color : #666666; }
}
}
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 3c36244c1..6bcfc87ec 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -1,12 +1,13 @@
/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
require('./brewRenderer.less');
const React = require('react');
-const { useState, useRef, useEffect } = React;
+const { useState, useRef, useMemo, useEffect } = React;
const _ = require('lodash');
const MarkdownLegacy = require('naturalcrit/markdownLegacy.js');
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
const ErrorBar = require('./errorBar/errorBar.jsx');
+const ToolBar = require('./toolBar/toolBar.jsx');
//TODO: move to the brew renderer
const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx');
@@ -15,21 +16,22 @@ const Frame = require('react-frame-component').default;
const dedent = require('dedent-tabs').default;
const { printCurrentBrew } = require('../../../shared/helpers.js');
-const DOMPurify = require('dompurify');
-const purifyConfig = { FORCE_BODY: true, SANITIZE_DOM: false };
-
-const Themes = require('themes/themes.json');
+import HeaderNav from './headerNav/headerNav.jsx';
+import { safeHTML } from './safeHTML.js';
+const PAGEBREAK_REGEX_V3 = /^(?=\\page(?:break)?(?: *{[^\n{}]*})?$)/m;
+const PAGEBREAK_REGEX_LEGACY = /\\page(?:break)?/m;
+const COLUMNBREAK_REGEX_LEGACY = /\\column(:?break)?/m;
const PAGE_HEIGHT = 1056;
const INITIAL_CONTENT = dedent`
-
`;
+
//v=====----------------------< Brew Page Component >---------------------=====v//
const BrewPage = (props)=>{
props = {
@@ -37,87 +39,134 @@ const BrewPage = (props)=>{
index : 0,
...props
};
- const cleanText = props.contents; //DOMPurify.sanitize(props.contents, purifyConfig);
- return
+ const pageRef = useRef(null);
+ const cleanText = safeHTML(`${props.contents}\n
\n`);
+
+ useEffect(()=>{
+ if(!pageRef.current) return;
+
+ // Observer for tracking pages within the `.pages` div
+ const visibleObserver = new IntersectionObserver(
+ (entries)=>{
+ entries.forEach((entry)=>{
+ if(entry.isIntersecting)
+ props.onVisibilityChange(props.index + 1, true, false); // add page to array of visible pages.
+ else
+ props.onVisibilityChange(props.index + 1, false, false);
+ });
+ },
+ { threshold: .3, rootMargin: '0px 0px 0px 0px' } // detect when >30% of page is within bounds.
+ );
+
+ // Observer for tracking the page at the center of the iframe.
+ const centerObserver = new IntersectionObserver(
+ (entries)=>{
+ entries.forEach((entry)=>{
+ if(entry.isIntersecting)
+ props.onVisibilityChange(props.index + 1, true, true); // Set this page as the center page
+ });
+ },
+ { threshold: 0, rootMargin: '-50% 0px -50% 0px' } // Detect when the page is at the center
+ );
+
+ // attach observers to each `.page`
+ visibleObserver.observe(pageRef.current);
+ centerObserver.observe(pageRef.current);
+ return ()=>{
+ visibleObserver.disconnect();
+ centerObserver.disconnect();
+ };
+ }, []);
+
+ return
;
};
//v=====--------------------< Brew Renderer Component >-------------------=====v//
-const renderedPages = [];
+let renderedPages = [];
let rawPages = [];
const BrewRenderer = (props)=>{
props = {
- text : '',
- style : '',
- renderer : 'legacy',
- theme : '5ePHB',
- lang : '',
- errors : [],
- currentEditorPage : 0,
+ text : '',
+ style : '',
+ renderer : 'legacy',
+ theme : '5ePHB',
+ lang : '',
+ errors : [],
+ currentEditorCursorPageNum : 1,
+ currentEditorViewPageNum : 1,
+ currentBrewRendererPageNum : 1,
+ themeBundle : {},
+ onPageChange : ()=>{},
...props
};
const [state, setState] = useState({
- viewablePageNumber : 0,
- height : PAGE_HEIGHT,
- isMounted : false,
- visibility : 'hidden',
+ isMounted : false,
+ visibility : 'hidden',
+ visiblePages : [],
+ centerPage : 1
});
- const mainRef = useRef(null);
+ const [displayOptions, setDisplayOptions] = useState({
+ zoomLevel : 100,
+ spread : 'single',
+ startOnRight : true,
+ pageShadows : true,
+ rowGap : 5,
+ columnGap : 10,
+ });
- if(props.renderer == 'legacy') {
- rawPages = props.text.split('\\page');
- } else {
- rawPages = props.text.split(/^\\page$/gm);
- }
-
- useEffect(()=>{ // Unmounting steps
- return ()=>{window.removeEventListener('resize', updateSize);};
+ //useEffect to store or gather toolbar state from storage
+ useEffect(()=>{
+ const toolbarState = JSON.parse(window.localStorage.getItem('hb_toolbarState'));
+ toolbarState && setDisplayOptions(toolbarState);
}, []);
- const updateSize = ()=>{
- setState((prevState)=>({
- ...prevState,
- height : mainRef.current.parentNode.clientHeight,
- }));
- };
+ const [headerState, setHeaderState] = useState(false);
- const handleScroll = (e)=>{
- const target = e.target;
- setState((prevState)=>({
- ...prevState,
- viewablePageNumber : Math.floor(target.scrollTop / target.scrollHeight * rawPages.length)
- }));
+ const mainRef = useRef(null);
+ const pagesRef = useRef(null);
+
+ if(props.renderer == 'legacy') {
+ rawPages = props.text.split(PAGEBREAK_REGEX_LEGACY);
+ } else {
+ rawPages = props.text.split(PAGEBREAK_REGEX_V3);
+ }
+
+ const handlePageVisibilityChange = (pageNum, isVisible, isCenter)=>{
+ setState((prevState)=>{
+ const updatedVisiblePages = new Set(prevState.visiblePages);
+ if(!isCenter)
+ isVisible ? updatedVisiblePages.add(pageNum) : updatedVisiblePages.delete(pageNum);
+
+ return {
+ ...prevState,
+ visiblePages : [...updatedVisiblePages].sort((a, b)=>a - b),
+ centerPage : isCenter ? pageNum : prevState.centerPage
+ };
+ });
+
+ if(isCenter)
+ props.onPageChange(pageNum);
};
const isInView = (index)=>{
if(!state.isMounted)
return false;
- if(index == props.currentEditorPage) //Already rendered before this step
+ if(index == props.currentEditorCursorPageNum - 1) //Already rendered before this step
return false;
- if(Math.abs(index - state.viewablePageNumber) <= 3)
+ if(Math.abs(index - props.currentBrewRendererPageNum - 1) <= 3)
return true;
return false;
};
- const renderPageInfo = ()=>{
- return
-
- {props.renderer}
-
-
- {state.viewablePageNumber + 1} / {rawPages.length}
-
-
;
- };
-
const renderDummyPage = (index)=>{
return
@@ -125,20 +174,44 @@ const BrewRenderer = (props)=>{
};
const renderStyle = ()=>{
- if(!props.style) return;
- const cleanStyle = props.style; //DOMPurify.sanitize(props.style, purifyConfig);
- //return
@layer styleTab {\n${sanitizeScriptTags(props.style)}\n} ` }} />;
- return
${cleanStyle} ` }} />;
+ const themeStyles = props.themeBundle?.joinedStyles ?? '';
+ const cleanStyle = safeHTML(`${themeStyles} \n\n `);
+ return
;
};
const renderPage = (pageText, index)=>{
+
+ let styles = {
+ ...(!displayOptions.pageShadows ? { boxShadow: 'none' } : {})
+ // Add more conditions as needed
+ };
+ let classes = 'page';
+ let attributes = {};
+
if(props.renderer == 'legacy') {
+ pageText.replace(COLUMNBREAK_REGEX_LEGACY, '```\n````\n'); // Allow Legacy brews to use `\column(break)`
const html = MarkdownLegacy.render(pageText);
- return
;
+
+ return
;
} else {
+ if(pageText.startsWith('\\page')) {
+ const firstLineTokens = Markdown.marked.lexer(pageText.split('\n', 1)[0])[0].tokens;
+ const injectedTags = firstLineTokens?.find((obj)=>obj.injectedTags !== undefined)?.injectedTags;
+ if(injectedTags) {
+ styles = { ...styles, ...injectedTags.styles };
+ styles = _.mapKeys(styles, (v, k)=>k.startsWith('--') ? k : _.camelCase(k)); // Convert CSS to camelCase for React
+ classes = [classes, injectedTags.classes].join(' ').trim();
+ attributes = injectedTags.attributes;
+ }
+ pageText = pageText.includes('\n') ? pageText.substring(pageText.indexOf('\n') + 1) : ''; // Remove the \page line
+ }
+
+ // DO NOT REMOVE!!! REQUIRED FOR BACKWARDS COMPATIBILITY WITH NON-UPGRADABLE VERSIONS OF CHROME.
pageText += `\n\n \n\\column\n `; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear)
+
const html = Markdown.render(pageText, index);
- return
;
+
+ return
;
}
};
@@ -150,7 +223,8 @@ const BrewRenderer = (props)=>{
renderedPages.length = 0;
// Render currently-edited page first so cross-page effects (variables, links) can propagate out first
- renderedPages[props.currentEditorPage] = renderPage(rawPages[props.currentEditorPage], props.currentEditorPage);
+ if(rawPages.length > props.currentEditorCursorPageNum -1)
+ renderedPages[props.currentEditorCursorPageNum - 1] = renderPage(rawPages[props.currentEditorCursorPageNum - 1], props.currentEditorCursorPageNum - 1);
_.forEach(rawPages, (page, index)=>{
if((isInView(index) || !renderedPages[index]) && typeof window !== 'undefined'){
@@ -170,10 +244,30 @@ const BrewRenderer = (props)=>{
}
};
+ const scrollToHash = (hash)=>{
+ if(!hash) return;
+
+ const iframeDoc = document.getElementById('BrewRenderer').contentDocument;
+ let anchor = iframeDoc.querySelector(hash);
+
+ if(anchor) {
+ anchor.scrollIntoView({ behavior: 'smooth' });
+ } else {
+ // Use MutationObserver to wait for the element if it's not immediately available
+ new MutationObserver((mutations, obs)=>{
+ anchor = iframeDoc.querySelector(hash);
+ if(anchor) {
+ anchor.scrollIntoView({ behavior: 'smooth' });
+ obs.disconnect();
+ }
+ }).observe(iframeDoc, { childList: true, subtree: true });
+ }
+ };
+
const frameDidMount = ()=>{ //This triggers when iFrame finishes internal "componentDidMount"
+ scrollToHash(window.location.hash);
+
setTimeout(()=>{ //We still see a flicker where the style isn't applied yet, so wait 100ms before showing iFrame
- updateSize();
- window.addEventListener('resize', updateSize);
renderPages(); //Make sure page is renderable before showing
setState((prevState)=>({
...prevState,
@@ -188,15 +282,31 @@ const BrewRenderer = (props)=>{
document.dispatchEvent(new MouseEvent('click'));
};
- const rendererPath = props.renderer == 'V3' ? 'V3' : 'Legacy';
- const themePath = props.theme ?? '5ePHB';
- const baseThemePath = Themes[rendererPath][themePath].baseTheme;
+ const handleDisplayOptionsChange = (newDisplayOptions)=>{
+ setDisplayOptions(newDisplayOptions);
+ localStorage.setItem('hb_toolbarState', JSON.stringify(newDisplayOptions));
+ };
+
+ const pagesStyle = {
+ zoom : `${displayOptions.zoomLevel}%`,
+ columnGap : `${displayOptions.columnGap}px`,
+ rowGap : `${displayOptions.rowGap}px`
+ };
+
+ const styleObject = {};
+
+ if(global.config.deployment) {
+ styleObject.backgroundImage = `url("data:image/svg+xml;utf8,
${global.config.deployment} ")`;
+ }
+
+ const renderedStyle = useMemo(()=>renderStyle(), [props.style, props.themeBundle]);
+ renderedPages = useMemo(()=>renderPages(), [props.text, displayOptions]);
return (
<>
{/*render dummy page while iFrame is mounting.*/}
{!state.isMounted
- ?
+ ?
{renderDummyPage(1)}
@@ -204,42 +314,38 @@ const BrewRenderer = (props)=>{
: null}
-
+
+
0 ? state.visiblePages : [state.centerPage]} totalPages={rawPages.length} headerState={headerState} setHeaderState={setHeaderState}/>
+
{/*render in iFrame so broken code doesn't crash the site.*/}
{emitClick();}}
>
-
-
-
- {baseThemePath &&
-
- }
-
+ style={ styleObject }
+ >
{/* Apply CSS from Style tab and render pages from Markdown tab */}
{state.isMounted
&&
<>
- {renderStyle()}
-
- {renderPages()}
+ {renderedStyle}
+
+ {renderedPages}
>
}
+ {headerState ?
: <>>}
- {renderPageInfo()}
>
);
};
diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less
index 28ea8005e..b0a3e9779 100644
--- a/client/homebrew/brewRenderer/brewRenderer.less
+++ b/client/homebrew/brewRenderer/brewRenderer.less
@@ -1,10 +1,43 @@
@import (multiple, less) 'shared/naturalcrit/styles/reset.less';
.brewRenderer {
- will-change : transform;
- overflow-y : scroll;
+ height : 100vh;
+ padding-top : 60px;
+ overflow-y : scroll;
+ will-change : transform;
+ &:has(.facing, .flow) { padding : 60px 30px; }
+ &.deployment { background-color : darkred; }
:where(.pages) {
- margin : 30px 0px;
+ &.facing {
+ display : grid;
+ grid-template-rows : repeat(3, auto);
+ grid-template-columns : repeat(2, auto);
+ gap : 10px 10px;
+ justify-content : safe center;
+ &.recto .page:first-child {
+ // sets first page on 'right' ('recto') of the preview, as if for a Cover page.
+ // todo: add a checkbox to toggle this setting
+ grid-column-start : 2;
+ }
+ & :where(.page) {
+ margin-right : unset !important;
+ margin-left : unset !important;
+ }
+ }
+
+ &.flow {
+ display : flex;
+ flex-wrap : wrap;
+ gap : 10px;
+ justify-content : safe center;
+ & :where(.page) {
+ flex : 0 0 auto;
+ margin-right : unset !important;
+ margin-left : unset !important;
+ }
+
+ }
+
& > :where(.page) {
width : 215.9mm;
height : 279.4mm;
@@ -13,67 +46,40 @@
margin-left : auto;
box-shadow : 1px 4px 14px #000000;
}
+ *[id] { scroll-margin-top : 100px; }
}
-
&::-webkit-scrollbar {
- width: 20px;
- &:horizontal{
- height: 20px;
- width:auto;
+ width : 20px;
+ &:horizontal {
+ width : auto;
+ height : 20px;
}
&-thumb {
- background: linear-gradient(90deg, #d3c1af 15px, #00000000 15px);
- &:horizontal{
- background: linear-gradient(0deg, #d3c1af 15px, #00000000 15px);
- }
- }
- &-corner {
- visibility: hidden;
+ background : linear-gradient(90deg, #D3C1AF 15px, #00000000 15px);
+ &:horizontal { background : linear-gradient(0deg, #D3C1AF 15px, #00000000 15px); }
}
+ &-corner { visibility : hidden; }
}
-
-
-
-
-
}
+
.pane { position : relative; }
-.pageInfo {
- position : absolute;
- right : 17px;
- bottom : 0;
- z-index : 1000;
- font-size : 10px;
- font-weight : 800;
- color : white;
- background-color : #333333;
- div {
- display : inline-block;
- padding : 8px 10px;
- &:not(:last-child) { border-right : 1px solid #666666; }
- }
-}
-.ppr_msg {
- position : absolute;
- bottom : 0;
- left : 0px;
- z-index : 1000;
- padding : 8px 10px;
- font-size : 10px;
- font-weight : 800;
- color : white;
- background-color : #333333;
-}
+
@media print {
+ .toolBar { display : none; }
.brewRenderer {
- height: 100%;
- overflow-y: unset;
+ height : 100%;
+ padding : unset;
+ overflow-y : unset;
+ &:has(.facing, .flow) {
+ padding : unset;
+ }
.pages {
- margin: 0px;
- &>.page {
- box-shadow: unset;
- }
+ margin : 0px;
+ zoom : 100% !important;
+ display : block;
+ & > .page { box-shadow : unset; }
}
}
+ .headerNav { visibility : hidden; }
}
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.jsx b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
index d2f847306..78b36d70c 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.jsx
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.jsx
@@ -1,75 +1,53 @@
require('./errorBar.less');
const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
-const ErrorBar = createClass({
- displayName : 'ErrorBar',
- getDefaultProps : function() {
- return {
- errors : []
- };
- },
+import Dialog from '../../../components/dialog.jsx';
- hasOpenError : false,
- hasCloseError : false,
- hasMatchError : false,
+const DISMISS_BUTTON =
;
- renderErrors : function(){
- this.hasOpenError = false;
- this.hasCloseError = false;
- this.hasMatchError = false;
+const ErrorBar = (props)=>{
+ if(!props.errors.length) return null;
+ let hasOpenError = false, hasCloseError = false, hasMatchError = false;
+ props.errors.map((err)=>{
+ if(err.id === 'OPEN') hasOpenError = true;
+ if(err.id === 'CLOSE') hasCloseError = true;
+ if(err.id === 'MISMATCH') hasMatchError = true;
+ });
- const errors = _.map(this.props.errors, (err, idx)=>{
- if(err.id == 'OPEN') this.hasOpenError = true;
- if(err.id == 'CLOSE') this.hasCloseError = true;
- if(err.id == 'MISMATCH') this.hasMatchError = true;
- return
- Line {err.line} : {err.text}, '{err.type}' tag
- ;
- });
+ const renderErrors = ()=>(
+
+ {props.errors.map((err, idx)=>{
+ return
+ Line {err.line} : {err.text}, '{err.type}' tag
+ ;
+ })}
+
+ );
- return
;
- },
-
- renderProtip : function(){
- const msg = [];
- if(this.hasOpenError){
- msg.push(
- An unmatched opening tag means there's an opened tag that isn't closed. You need to close your tags, like this {'
'}. Make sure to match types!
-
);
- }
-
- if(this.hasCloseError){
- msg.push(
- An unmatched closing tag means you closed a tag without opening it. Either remove it, or check to where you think you opened it.
-
);
- }
-
- if(this.hasMatchError){
- msg.push(
- A type mismatch means you closed a tag, but the last open tag was a different type.
-
);
- }
- return
+ const renderProtip = ()=>(
+
Protips!
- {msg}
- ;
- },
+ {hasOpenError &&
Unmatched opening tag. Close your tags, like this {'
'}. Match types!
}
+ {hasCloseError && Unmatched closing tag. Either remove it or check where it was opened.
}
+ {hasMatchError && Type mismatch. Closed a tag with a different type.
}
+
+ );
- render : function(){
- if(!this.props.errors.length) return null;
-
- return
-
-
There are HTML errors in your markup
-
If these aren't fixed your brew will not render properly when you print it to PDF or share it
- {this.renderErrors()}
+ return (
+
+
+
+
There are HTML errors in your markup
+
+ If these aren't fixed your brew will not render properly when you print it to PDF or share it
+
+ {renderErrors()}
+
- {this.renderProtip()}
- ;
- }
-});
+ {renderProtip()}
+
+ );
+};
module.exports = ErrorBar;
diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.less b/client/homebrew/brewRenderer/errorBar/errorBar.less
index f3f2dbaae..163648533 100644
--- a/client/homebrew/brewRenderer/errorBar/errorBar.less
+++ b/client/homebrew/brewRenderer/errorBar/errorBar.less
@@ -1,60 +1,58 @@
-.errorBar{
+.errorBar {
position : absolute;
- z-index : 10000;
- box-sizing : border-box;
+ top : 32px;
+ z-index : 1;
width : 100%;
- margin-right : 13px;
- padding : 20px;
- padding-bottom : 10px;
- padding-left : 100px;
- background-color : @red;
color : white;
- i{
- position : absolute;
- left : 30px;
- opacity : 0.8;
- font-size : 3em;
- }
- h3{
- font-size : 1.1em;
- font-weight : 800;
- }
- ul{
- margin-top : 15px;
- font-size : 0.8em;
- list-style-position : inside;
- list-style-type : disc;
- li{
- line-height : 1.6em;
+ background-color : @red;
+ border : unset;
+
+ div {
+ > i {
+ float : left;
+ margin-right : 10px;
+ margin-bottom : 20px;
+ font-size : 3em;
+ opacity : 0.8;
+ }
+ h2 { font-weight : 800; }
+ ul {
+ margin-top : 15px;
+ font-size : 0.8em;
+ list-style-position : inside;
+ list-style-type : disc;
+ li { line-height : 1.6em; }
}
}
- hr{
- box-sizing : border-box;
+ hr {
height : 2px;
- width : 150%;
margin-top : 25px;
margin-bottom : 15px;
- margin-left : -100px;
background-color : darken(@red, 8%);
border : none;
}
- small{
- font-size: 0.6em;
- opacity: 0.7;
+ small {
+ font-size : 0.6em;
+ opacity : 0.7;
}
- .protips{
- margin-left : -80px;
- font-size : 0.6em;
- &>div{
- margin-bottom : 10px;
- line-height : 1.2em;
- }
- h4{
- opacity : 0.8;
+ .protips {
+ font-size : 0.6em;
+ line-height : 1.2em;
+ h4 {
font-weight : 800;
line-height : 1.5em;
text-transform : uppercase;
}
}
+ button.dismiss {
+ position : absolute;
+ top : 20px;
+ right : 30px;
+ padding : unset;
+ font-size : 40px;
+ background-color : transparent;
+ opacity : 0.6;
+ &:hover { opacity : 1; }
+ }
}
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.jsx b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
new file mode 100644
index 000000000..04ced2585
--- /dev/null
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.jsx
@@ -0,0 +1,113 @@
+require('./headerNav.less');
+
+import * as React from 'react';
+import * as _ from 'lodash';
+
+const MAX_TEXT_LENGTH = 40;
+
+const HeaderNav = React.forwardRef(({}, pagesRef)=>{
+
+ const renderHeaderLinks = ()=>{
+ if(!pagesRef.current) return;
+
+ // Top Level Pages
+ // Pages that contain an element with a specified class (e.g. cover pages, table of contents)
+ // will NOT have its content scanned for navigation headers, instead displaying a custom label
+ // ---
+ // The property name is class that will be used for detecting the page is a top level page
+ // The property value is a function that returns the text to be used
+
+ const topLevelPages = {
+ '.frontCover' : (el, pageType)=>{ const text = getHeaderContent(el); return text ? `Cover: ${text}` : 'Cover Page'; },
+ '.insideCover' : (el, pageType)=>{ const text = getHeaderContent(el); return text ? `Interior: ${text}` : 'Interior Cover Page'; },
+ '.partCover' : (el, pageType)=>{ const text = getHeaderContent(el); return text ? `Section: ${text}` : 'Section Cover Page'; },
+ '.backCover' : (el, pageType)=>{ const text = getHeaderContent(el); return text ? `Back: ${text}` : 'Rear Cover Page'; },
+ '.toc' : ()=>{ return 'Table of Contents'; },
+ };
+
+ const getHeaderContent = (el)=>el.querySelector('h1')?.textContent;
+
+ const topLevelPageSelector = Object.keys(topLevelPages).join(',');
+
+ const selector = [
+ '.pages > .page', // All page elements, which by definition have IDs
+ `.page:not(:has(${topLevelPageSelector})) > [id]`, // All direct children of non-excluded .pages with an ID (Legacy)
+ `.page:not(:has(${topLevelPageSelector})) > .columnWrapper > [id]`, // All direct children of non-excluded .page > .columnWrapper with an ID (V3)
+ `.page:not(:has(${topLevelPageSelector})) h2`, // All non-excluded H2 titles, like Monster frame titles
+ ];
+ const elements = pagesRef.current.querySelectorAll(selector.join(','));
+ if(!elements) return;
+ const navList = [];
+
+ // navList is a list of objects which have the following structure:
+ // {
+ // depth : how deeply indented the item should be
+ // text : the text to display in the nav link
+ // link : the hyperlink to navigate to when clicked
+ // className : [optional] the class to apply to the nav link for styling
+ // }
+
+ elements.forEach((el)=>{
+ const navEntry = { // Default structure of a navList entry
+ depth : 7, // All unmatched elements with IDs are set to the maximum depth (7)
+ text : el.textContent, // Use `textContent` because `innerText` is affected by rendering, e.g. 'content-visibility: auto'
+ link : el.id
+ };
+ if(el.classList.contains('page')) {
+ let text = `Page ${el.id.slice(1)}`; // Get the page # by trimming off the 'p' from the ID
+ const pageType = Object.keys(topLevelPages).find((pageType)=>el.querySelector(pageType));
+ if(pageType)
+ text += ` - ${topLevelPages[pageType](el, pageType)}`; // If a Top Level Page, add extra label
+
+ navEntry.depth = 0; // Pages are always at the least indented level
+ navEntry.text = text;
+ navEntry.className = 'pageLink';
+ } else if(el.localName.match(/^h[1-6]/)){ // Header elements H1 through H6
+ navEntry.depth = el.localName[1]; // Depth is set by the header level
+ }
+ navList.push(navEntry);
+ });
+
+ return _.map(navList, (navItem, index)=>
+ );
+ };
+
+ return
+
+ {renderHeaderLinks()}
+
+ ;
+});
+
+const HeaderNavItem = ({ link, text, depth, className })=>{
+
+ const trimString = (text, prefixLength = 0)=>{
+ // Sanity check nav link strings
+ let output = text;
+
+ // If the string has a line break, only use the first line
+ if(text.indexOf('\n')){
+ output = text.split('\n')[0];
+ }
+
+ // Trim unecessary spaces from string
+ output = output.trim();
+
+ // Reduce excessively long strings
+ const maxLength = MAX_TEXT_LENGTH - prefixLength;
+ if(output.length > maxLength){
+ return `${output.slice(0, maxLength).trim()}...`;
+ }
+ return output;
+ };
+
+ if(!link || !text) return;
+
+ return
+
+ {trimString(text, depth)}
+
+ ;
+};
+
+export default HeaderNav;
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/headerNav/headerNav.less b/client/homebrew/brewRenderer/headerNav/headerNav.less
new file mode 100644
index 000000000..a5fd11f5e
--- /dev/null
+++ b/client/homebrew/brewRenderer/headerNav/headerNav.less
@@ -0,0 +1,39 @@
+.headerNav {
+ position : fixed;
+ top : 32px;
+ left : 0px;
+ max-width : 40vw;
+ max-height : calc(100vh - 32px);
+ padding : 5px 10px;
+ overflow-y : auto;
+ background-color : #CCCCCC;
+ border-radius : 5px;
+ &.active {
+ padding-bottom : 10px;
+ .navIcon { padding-bottom : 10px; }
+ }
+ .navIcon { cursor : pointer; }
+ li {
+ list-style-type : none;
+ a {
+ display : inline-block;
+ width : 100%;
+ padding : 2px;
+ font-family : 'Open Sans';
+ font-size : 12px;
+ color : inherit;
+ text-decoration : none;
+ cursor : pointer;
+ &:hover { text-decoration : underline; }
+ &.pageLink { font-weight : 900; }
+
+ @depths: 0,1,2,3,4,5,6,7;
+
+ each(@depths, {
+ &.depth-@{value} {
+ padding-left: ((@value) * 0.5em);
+ }
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
index cca60bbec..38a85e0c7 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
@@ -1,43 +1,63 @@
require('./notificationPopup.less');
-const React = require('react');
-const _ = require('lodash');
+import React, { useEffect, useState } from 'react';
+import request from '../../utils/request-middleware.js';
+import Markdown from 'naturalcrit/markdown.js';
import Dialog from '../../../components/dialog.jsx';
-const DISMISS_KEY = 'dismiss_notification12-04-23';
const DISMISS_BUTTON =
;
const NotificationPopup = ()=>{
- return
+ const [notifications, setNotifications] = useState([]);
+ const [dissmissKeyList, setDismissKeyList] = useState([]);
+ const [error, setError] = useState(null);
+
+ useEffect(()=>{
+ getNotifications();
+ }, []);
+
+ const getNotifications = async ()=>{
+ setError(null);
+ try {
+ const res = await request.get('/admin/notification/all');
+ pickActiveNotifications(res.body || []);
+ } catch (err) {
+ console.log(err);
+ setError(`Error looking up notifications: ${err?.response?.body?.message || err.message}`);
+ }
+ };
+
+ const pickActiveNotifications = (notifs)=>{
+ const now = new Date();
+ const filteredNotifications = notifs.filter((notification)=>{
+ const startDate = new Date(notification.startAt);
+ const stopDate = new Date(notification.stopAt);
+ const dismissed = localStorage.getItem(notification.dismissKey) ? true : false;
+ return now >= startDate && now <= stopDate && !dismissed;
+ });
+ setNotifications(filteredNotifications);
+ setDismissKeyList(filteredNotifications.map((notif)=>notif.dismissKey));
+ };
+
+ const renderNotificationsList = ()=>{
+ if(error) return {error}
;
+ return notifications.map((notification)=>(
+
+ {notification.title}
+
+
+ ));
+ };
+
+ if(!notifications.length) return;
+ return
Notice
This website is always improving and we are still adding new features and squashing bugs. Keep the following in mind:
-
- Don't store IMAGES in Google Drive
- Google Drive is not an image service, and will block images from being used
- in brews if they get more views than expected. Google has confirmed they won't fix
- this, so we recommend you look for another image hosting service such as imgur, ImgBB or Google Photos.
-
-
-
- Don't delete your Homebrewery folder on Google Drive!
- We have had several reports of users losing their brews, not realizing
- that they had deleted the files on their Google Drive. If you have a Homebrewery folder
- on your Google Drive with *.txt files inside, do not delete it !
- We cannot help you recover files that you have deleted from your own
- Google Drive.
-
-
-
- Protect your work!
- If you opt not to use your Google Drive, keep in mind that we do not save a history of your projects. Please make frequent backups of your brews!
-
- See the FAQ
- to learn how to avoid losing your work!
-
+ {renderNotificationsList()}
;
};
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
index 26d764aff..85d4c8365 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.less
@@ -1,9 +1,10 @@
.popups {
position : fixed;
- top : @navbarHeight;
+ top : calc(@navbarHeight + @viewerToolsHeight);
right : 24px;
z-index : 10001;
width : 450px;
+ margin-top : 5px;
}
.notificationPopup {
@@ -47,14 +48,46 @@
}
ul {
margin-top : 15px;
- font-size : 0.8em;
+ font-size : 0.9em;
list-style-position : outside;
list-style-type : disc;
li {
- margin-top : 1.4em;
- font-size : 0.8em;
- line-height : 1.4em;
- em { font-weight : 800; }
+ padding-left : 1em;
+ margin-top : 1.5em;
+ font-size : 0.9em;
+ line-height : 1.5em;
+ em {
+ font-weight : 800;
+ text-transform : capitalize;
+ }
+ li {
+ margin-top : 0;
+ line-height : 1.2em;
+ list-style-type : square;
+ }
+ }
+ ul ul,ol ol,ul ol,ol ul {
+ margin-bottom : 0px;
+ margin-left : 1.5em;
}
}
-}
+
+ /* Markdown styling */
+ code {
+ padding : 0.1em 0.5em;
+ font-family : 'Courier New', 'Courier', monospace;
+ overflow-wrap : break-word;
+ white-space : pre-wrap;
+ background : #08115A;
+ border-radius : 2px;
+ }
+ pre code {
+ display : inline-block;
+ width : 100%;
+ }
+ .blank {
+ height : 1em;
+ margin-top : 0;
+ & + * { margin-top : 0; }
+ }
+}
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/safeHTML.js b/client/homebrew/brewRenderer/safeHTML.js
new file mode 100644
index 000000000..2574f4cfe
--- /dev/null
+++ b/client/homebrew/brewRenderer/safeHTML.js
@@ -0,0 +1,46 @@
+// Derived from the vue-html-secure package, customized for Homebrewery
+
+let doc = null;
+let div = null;
+
+function safeHTML(htmlString) {
+ // If the Document interface doesn't exist, exit
+ if(typeof document == 'undefined') return null;
+ // If the test document and div don't exist, create them
+ if(!doc) doc = document.implementation.createHTMLDocument('');
+ if(!div) div = doc.createElement('div');
+
+ // Set the test div contents to the evaluation string
+ div.innerHTML = htmlString;
+ // Grab all nodes from the test div
+ const elements = div.querySelectorAll('*');
+
+ // Blacklisted tags
+ const blacklistTags = ['script', 'noscript', 'noembed'];
+ // Tests to remove attributes
+ const blacklistAttrs = [
+ (test)=>{return test.localName.indexOf('on') == 0;},
+ (test)=>{return test.localName.indexOf('type') == 0 && test.value.match(/submit/i);},
+ (test)=>{return test.value.replace(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g, '').toLowerCase().trim().indexOf('javascript:') == 0;}
+ ];
+
+
+ elements.forEach((element)=>{
+ // Check each element for blacklisted type
+ if(blacklistTags.includes(element?.localName?.toLowerCase())) {
+ element.remove();
+ return;
+ }
+ // Check remaining elements for blacklisted attributes
+ for (const attribute of element.attributes){
+ if(blacklistAttrs.some((test)=>{return test(attribute);})) {
+ element.removeAttribute(attribute.localName);
+ break;
+ };
+ };
+ });
+
+ return div.innerHTML;
+};
+
+module.exports.safeHTML = safeHTML;
\ No newline at end of file
diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.jsx b/client/homebrew/brewRenderer/toolBar/toolBar.jsx
new file mode 100644
index 000000000..6938eacb7
--- /dev/null
+++ b/client/homebrew/brewRenderer/toolBar/toolBar.jsx
@@ -0,0 +1,260 @@
+/* eslint-disable max-lines */
+require('./toolBar.less');
+const React = require('react');
+const { useState, useEffect } = React;
+const _ = require('lodash');
+
+import { Anchored, AnchoredBox, AnchoredTrigger } from '../../../components/Anchored.jsx';
+
+const MAX_ZOOM = 300;
+const MIN_ZOOM = 10;
+
+const ToolBar = ({ displayOptions, onDisplayOptionsChange, visiblePages, totalPages, headerState, setHeaderState })=>{
+
+ const [pageNum, setPageNum] = useState(1);
+ const [toolsVisible, setToolsVisible] = useState(true);
+
+ useEffect(()=>{
+ // format multiple visible pages as a range (e.g. "150-153")
+ const pageRange = visiblePages.length === 1 ? `${visiblePages[0]}` : `${visiblePages[0]} - ${visiblePages.at(-1)}`;
+ setPageNum(pageRange);
+ }, [visiblePages]);
+
+ useEffect(()=>{
+ const Visibility = localStorage.getItem('hb_toolbarVisibility');
+ if (Visibility) setToolsVisible(Visibility === 'true');
+
+ }, []);
+
+ const handleZoomButton = (zoom)=>{
+ handleOptionChange('zoomLevel', _.round(_.clamp(zoom, MIN_ZOOM, MAX_ZOOM)));
+ };
+
+ const handleOptionChange = (optionKey, newValue)=>{
+ onDisplayOptionsChange({ ...displayOptions, [optionKey]: newValue });
+ };
+
+ const handlePageInput = (pageInput)=>{
+ if(/[0-9]/.test(pageInput))
+ setPageNum(parseInt(pageInput)); // input type is 'text', so `page` comes in as a string, not number.
+ };
+
+ // scroll to a page, used in the Prev/Next Page buttons.
+ const scrollToPage = (pageNumber)=>{
+ if(typeof pageNumber !== 'number') return;
+ pageNumber = _.clamp(pageNumber, 1, totalPages);
+ const iframe = document.getElementById('BrewRenderer');
+ const brewRenderer = iframe?.contentWindow?.document.querySelector('.brewRenderer');
+ const page = brewRenderer?.querySelector(`#p${pageNumber}`);
+ page?.scrollIntoView({ block: 'start' });
+ };
+
+ const calculateChange = (mode)=>{
+ const iframe = document.getElementById('BrewRenderer');
+ const iframeWidth = iframe.getBoundingClientRect().width;
+ const iframeHeight = iframe.getBoundingClientRect().height;
+ const pages = iframe.contentWindow.document.getElementsByClassName('page');
+
+ let desiredZoom = 0;
+
+ if(mode == 'fill'){
+ // find widest page, in case pages are different widths, so that the zoom is adapted to not cut the widest page off screen.
+ const widestPage = _.maxBy([...pages], 'offsetWidth').offsetWidth;
+
+ if(displayOptions.spread === 'facing')
+ desiredZoom = (iframeWidth / ((widestPage * 2) + parseInt(displayOptions.columnGap))) * 100;
+ else
+ desiredZoom = (iframeWidth / (widestPage + 20)) * 100;
+
+ } else if(mode == 'fit'){
+ // find the page with the largest single dim (height or width) so that zoom can be adapted to fit it.
+ let minDimRatio;
+ if(displayOptions.spread === 'single')
+ minDimRatio = [...pages].reduce(
+ (minRatio, page)=>Math.min(minRatio,
+ iframeWidth / page.offsetWidth,
+ iframeHeight / page.offsetHeight
+ ),
+ Infinity
+ );
+ else
+ minDimRatio = [...pages].reduce(
+ (minRatio, page)=>Math.min(minRatio,
+ iframeWidth / ((page.offsetWidth * 2) + parseInt(displayOptions.columnGap)),
+ iframeHeight / page.offsetHeight
+ ),
+ Infinity
+ );
+
+ desiredZoom = minDimRatio * 100;
+ }
+
+ const margin = 5; // extra space so page isn't edge to edge (not truly "to fill")
+
+ const deltaZoom = (desiredZoom - displayOptions.zoomLevel) - margin;
+ return deltaZoom;
+ };
+
+ return (
+
+ );
+};
+
+module.exports = ToolBar;
diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.less b/client/homebrew/brewRenderer/toolBar/toolBar.less
new file mode 100644
index 000000000..1fd585c82
--- /dev/null
+++ b/client/homebrew/brewRenderer/toolBar/toolBar.less
@@ -0,0 +1,191 @@
+@import (less) './client/icons/customIcons.less';
+
+.toolBar {
+ position : absolute;
+ z-index : 1;
+ box-sizing : border-box;
+ display : flex;
+ flex-wrap : wrap;
+ gap : 8px 20px;
+ align-items : center;
+ justify-content : center;
+ width : 100%;
+ height : auto;
+ padding : 2px 10px 2px 90px;
+ font-family : 'Open Sans', sans-serif;
+ font-size : 13px;
+ color : #CCCCCC;
+ background-color : #555555;
+ & > *:not(.toggleButton) {
+ opacity : 1;
+ transition : all 0.2s ease;
+ }
+
+ .group {
+ box-sizing : border-box;
+ display : flex;
+ gap : 0 3px;
+ align-items : center;
+ justify-content : center;
+ height : 28px;
+ }
+
+ .tool {
+ display : flex;
+ align-items : center;
+ }
+
+ .active, [aria-checked='true'] { background-color : #444444; }
+
+ .anchored-trigger {
+ &.active { background-color : #444444; }
+ }
+
+ .anchored-box {
+ --box-color : #555555;
+ top : 30px;
+ display : flex;
+ flex-direction : column;
+ gap : 5px;
+ padding : 15px;
+ margin-top : 10px;
+ font-size : 0.8em;
+ color : #CCCCCC;
+ background-color : var(--box-color);
+ border-radius : 5px;
+
+ h1 {
+ padding-bottom : 0.3em;
+ margin-bottom : 0.5em;
+ border-bottom : 1px solid currentColor;
+ }
+
+ h2 {
+ padding-bottom : 0.3em;
+ margin : 1em 0 0.5em 0;
+ color : lightgray;
+ border-bottom : 1px solid currentColor;
+ }
+
+ label {
+ display : flex;
+ gap : 6px;
+ align-items : center;
+ justify-content : space-between;
+
+ }
+ input {
+ height : unset;
+ &[type='range'] { padding : 0; }
+ }
+ &::before {
+ position : absolute;
+ top : -20px;
+ left : 50%;
+ width : 0px;
+ height : 0px;
+ pointer-events : none;
+ content : '';
+ border : 10px solid transparent;
+ border-bottom : 10px solid var(--box-color);
+ transform : translateX(-50%);
+ }
+
+ }
+
+ .radio-group:has(button[role='radio']) {
+ display : flex;
+ height : 100%;
+ border : 1px solid #333333;
+ }
+
+ input {
+ position : relative;
+ height : 1.5em;
+ padding : 2px 5px;
+ font-family : 'Open Sans', sans-serif;
+ color : inherit;
+ background : #3B3B3B;
+ border : none;
+ &:focus { outline : 1px solid #D3D3D3; }
+
+ // `.range-input` if generic to all range inputs, or `#zoom-slider` if only for zoom slider
+ &.range-input {
+ padding : 2px 0;
+ color : #D3D3D3;
+ accent-color : #D3D3D3;
+
+ &::-webkit-slider-thumb, &::-moz-range-thumb {
+ width : 5px;
+ height : 5px;
+ cursor : ew-resize;
+ outline : none;
+ }
+
+ &.hover-tooltip[value]:hover::after {
+ position : absolute;
+ bottom : -30px;
+ left : 50%;
+ z-index : 1;
+ display : grid;
+ place-items : center;
+ width : 4ch;
+ height : 1.2lh;
+ pointer-events : none;
+ content : attr(value);
+ background-color : #555555;
+ border : 1px solid #A1A1A1;
+ transform : translate(-50%, 50%);
+ }
+ }
+
+ // `.text-input` if generic to all range inputs, or `#page-input` if only for current page input
+ page-input {
+ min-width : 5ch;
+ margin-right : 1ch;
+ text-align : center;
+ }
+ }
+
+ button {
+ box-sizing : border-box;
+ display : flex;
+ align-items : center;
+ justify-content : center;
+ width : auto;
+ min-width : 40px;
+ height : 100%;
+ &:hover { background-color : #444444; }
+ &:focus {outline : none; border : 1px solid #D3D3D3;}
+ &:disabled {
+ color : #777777;
+ background-color : unset !important;
+ }
+ i { font-size : 1.2em; }
+ }
+
+ &.hidden {
+ flex-wrap : nowrap;
+ width : 92px;
+ overflow : hidden;
+ background-color : unset;
+ opacity : 0.7;
+ transition : all 0.3s ease;
+ & > *:not(.toggleButton) {
+ opacity : 0;
+ transition : all 0.2s ease;
+ }
+
+ .toggleButton button i {
+ filter: drop-shadow(0 0 2px black) drop-shadow(0 0 1px black);
+ }
+ }
+}
+
+.toggleButton {
+ position : absolute;
+ left : 0;
+ z-index : 5;
+ display : flex;
+ height : 100%;
+}
\ No newline at end of file
diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx
index efcc9c861..fc20f2be4 100644
--- a/client/homebrew/editor/editor.jsx
+++ b/client/homebrew/editor/editor.jsx
@@ -1,11 +1,10 @@
-/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
+/*eslint max-lines: ["warn", {"max": 500, "skipBlankLines": true, "skipComments": true}]*/
require('./editor.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
-const cx = require('classnames');
const dedent = require('dedent-tabs').default;
-const Markdown = require('../../../shared/naturalcrit/markdown.js');
+import Markdown from '../../../shared/naturalcrit/markdown.js';
const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
const SnippetBar = require('./snippetbar/snippetbar.jsx');
@@ -13,7 +12,8 @@ const MetadataEditor = require('./metadataEditor/metadataEditor.jsx');
const EDITOR_THEME_KEY = 'HOMEBREWERY-EDITOR-THEME';
-const SNIPPETBAR_HEIGHT = 25;
+const PAGEBREAK_REGEX_V3 = /^(?=\\page(?:break)?(?: *{[^\n]*})?$)/m;
+const SNIPPETBREAK_REGEX_V3 = /^\\snippet\ .*$/;
const DEFAULT_STYLE_TEXT = dedent`
/*=======--- Example CSS styling ---=======*/
/* Any CSS here will apply to your document! */
@@ -22,6 +22,14 @@ const DEFAULT_STYLE_TEXT = dedent`
color: black;
}`;
+const DEFAULT_SNIPPET_TEXT = dedent`
+ \snippet example snippet
+
+ The text between \`\snippet title\` lines will become a snippet of name \`title\` as this example provides.
+
+ This snippet is accessible in the brew tab, and will be inherited if the brew is used as a theme.
+`;
+let isJumping = false;
const Editor = createClass({
displayName : 'Editor',
@@ -35,16 +43,25 @@ const Editor = createClass({
onTextChange : ()=>{},
onStyleChange : ()=>{},
onMetaChange : ()=>{},
+ onSnipChange : ()=>{},
reportError : ()=>{},
+ onCursorPageChange : ()=>{},
+ onViewPageChange : ()=>{},
+
editorTheme : 'default',
- renderer : 'legacy'
+ renderer : 'legacy',
+
+ currentEditorCursorPageNum : 1,
+ currentEditorViewPageNum : 1,
+ currentBrewRendererPageNum : 1,
};
},
getInitialState : function() {
return {
- editorTheme : this.props.editorTheme,
- view : 'text' //'text', 'style', 'meta'
+ editorTheme : this.props.editorTheme,
+ view : 'text', //'text', 'style', 'meta', 'snippet'
+ snippetbarHeight : 25
};
},
@@ -54,11 +71,16 @@ const Editor = createClass({
isText : function() {return this.state.view == 'text';},
isStyle : function() {return this.state.view == 'style';},
isMeta : function() {return this.state.view == 'meta';},
+ isSnip : function() {return this.state.view == 'snippet';},
componentDidMount : function() {
- this.updateEditorSize();
+
this.highlightCustomMarkdown();
- window.addEventListener('resize', this.updateEditorSize);
+ document.getElementById('BrewRenderer').addEventListener('keydown', this.handleControlKeys);
+ document.addEventListener('keydown', this.handleControlKeys);
+
+ this.codeEditor.current.codeMirror.on('cursorActivity', (cm)=>{this.updateCurrentCursorPage(cm.getCursor());});
+ this.codeEditor.current.codeMirror.on('scroll', _.throttle(()=>{this.updateCurrentViewPage(this.codeEditor.current.getTopVisibleLine());}, 200));
const editorTheme = window.localStorage.getItem(EDITOR_THEME_KEY);
if(editorTheme) {
@@ -66,96 +88,137 @@ const Editor = createClass({
editorTheme : editorTheme
});
}
- },
-
- componentWillUnmount : function() {
- window.removeEventListener('resize', this.updateEditorSize);
+ this.setState({ snippetbarHeight: document.querySelector('.editor > .snippetBar').offsetHeight });
},
componentDidUpdate : function(prevProps, prevState, snapshot) {
+
this.highlightCustomMarkdown();
- if(prevProps.moveBrew !== this.props.moveBrew) {
+ if(prevProps.moveBrew !== this.props.moveBrew)
this.brewJump();
- };
- if(prevProps.moveSource !== this.props.moveSource) {
+
+ if(prevProps.moveSource !== this.props.moveSource)
this.sourceJump();
- };
+
+ if(this.props.liveScroll) {
+ if(prevProps.currentBrewRendererPageNum !== this.props.currentBrewRendererPageNum) {
+ this.sourceJump(this.props.currentBrewRendererPageNum, false);
+ } else if(prevProps.currentEditorViewPageNum !== this.props.currentEditorViewPageNum) {
+ this.brewJump(this.props.currentEditorViewPageNum, false);
+ } else if(prevProps.currentEditorCursorPageNum !== this.props.currentEditorCursorPageNum) {
+ this.brewJump(this.props.currentEditorCursorPageNum, false);
+ }
+ }
},
- updateEditorSize : function() {
- if(this.codeEditor.current) {
- let paneHeight = this.editor.current.parentNode.clientHeight;
- paneHeight -= SNIPPETBAR_HEIGHT;
- this.codeEditor.current.codeMirror.setSize(null, paneHeight);
+ handleControlKeys : function(e){
+ if(!(e.ctrlKey && e.metaKey && e.shiftKey)) return;
+ const LEFTARROW_KEY = 37;
+ const RIGHTARROW_KEY = 39;
+ if(e.keyCode == RIGHTARROW_KEY) this.brewJump();
+ if(e.keyCode == LEFTARROW_KEY) this.sourceJump();
+ if(e.keyCode == LEFTARROW_KEY || e.keyCode == RIGHTARROW_KEY) {
+ e.stopPropagation();
+ e.preventDefault();
}
},
+ updateCurrentCursorPage : function(cursor) {
+ const lines = this.props.brew.text.split('\n').slice(1, cursor.line + 1);
+ const pageRegex = this.props.brew.renderer == 'V3' ? PAGEBREAK_REGEX_V3 : /\\page/;
+ const currentPage = lines.reduce((count, line)=>count + (pageRegex.test(line) ? 1 : 0), 1);
+ this.props.onCursorPageChange(currentPage);
+ },
+
+ updateCurrentViewPage : function(topScrollLine) {
+ const lines = this.props.brew.text.split('\n').slice(1, topScrollLine + 1);
+ const pageRegex = this.props.brew.renderer == 'V3' ? PAGEBREAK_REGEX_V3 : /\\page/;
+ const currentPage = lines.reduce((count, line)=>count + (pageRegex.test(line) ? 1 : 0), 1);
+ this.props.onViewPageChange(currentPage);
+ },
+
handleInject : function(injectText){
this.codeEditor.current?.injectText(injectText, false);
},
handleViewChange : function(newView){
this.props.setMoveArrows(newView === 'text');
+
this.setState({
view : newView
- }, this.updateEditorSize); //TODO: not sure if updateeditorsize needed
- },
-
- getCurrentPage : function(){
- const lines = this.props.brew.text.split('\n').slice(0, this.codeEditor.current.getCursorPosition().line + 1);
- return _.reduce(lines, (r, line)=>{
- if(
- (this.props.renderer == 'legacy' && line.indexOf('\\page') !== -1)
- ||
- (this.props.renderer == 'V3' && line.match(/^\\page$/))
- ) r++;
- return r;
- }, 1);
+ }, ()=>{
+ this.codeEditor.current?.codeMirror.focus();
+ });
},
highlightCustomMarkdown : function(){
if(!this.codeEditor.current) return;
- if(this.state.view === 'text') {
+ if((this.state.view === 'text') ||(this.state.view === 'snippet')) {
const codeMirror = this.codeEditor.current.codeMirror;
codeMirror.operation(()=>{ // Batch CodeMirror styling
+
+ const foldLines = [];
+
//reset custom text styles
- const customHighlights = codeMirror.getAllMarks().filter((mark)=>!mark.__isFold); //Don't undo code folding
+ const customHighlights = codeMirror.getAllMarks().filter((mark)=>{
+ // Record details of folded sections
+ if(mark.__isFold) {
+ const fold = mark.find();
+ foldLines.push({ from: fold.from?.line, to: fold.to?.line });
+ }
+ return !mark.__isFold;
+ }); //Don't undo code folding
+
for (let i=customHighlights.length - 1;i>=0;i--) customHighlights[i].clear();
- let editorPageCount = 2; // start page count from page 2
+ let userSnippetCount = 1; // start snippet count from snippet 1
+ let editorPageCount = 1; // start page count from page 1
- _.forEach(this.props.brew.text.split('\n'), (line, lineNumber)=>{
+ const whichSource = this.state.view === 'text' ? this.props.brew.text : this.props.brew.snippets;
+ _.forEach(whichSource?.split('\n'), (line, lineNumber)=>{
+
+ const tabHighlight = this.state.view === 'text' ? 'pageLine' : 'snippetLine';
+ const textOrSnip = this.state.view === 'text';
//reset custom line styles
codeMirror.removeLineClass(lineNumber, 'background', 'pageLine');
+ codeMirror.removeLineClass(lineNumber, 'background', 'snippetLine');
codeMirror.removeLineClass(lineNumber, 'text');
codeMirror.removeLineClass(lineNumber, 'wrap', 'sourceMoveFlash');
+ // Don't process lines inside folded text
+ // If the current lineNumber is inside any folded marks, skip line styling
+ if(foldLines.some((fold)=>lineNumber >= fold.from && lineNumber <= fold.to))
+ return;
+
// Styling for \page breaks
if((this.props.renderer == 'legacy' && line.includes('\\page')) ||
- (this.props.renderer == 'V3' && line.match(/^\\page$/))) {
+ (this.props.renderer == 'V3' && line.match(textOrSnip ? PAGEBREAK_REGEX_V3 : SNIPPETBREAK_REGEX_V3))) {
+
+ if((lineNumber > 0) && (textOrSnip)) // Since \page is optional on first line of document,
+ editorPageCount += 1; // don't use it to increment page count; stay at 1
+ else if(this.state.view !== 'text') userSnippetCount += 1;
// add back the original class 'background' but also add the new class '.pageline'
- codeMirror.addLineClass(lineNumber, 'background', 'pageLine');
+ codeMirror.addLineClass(lineNumber, 'background', tabHighlight);
const pageCountElement = Object.assign(document.createElement('span'), {
className : 'editor-page-count',
- textContent : editorPageCount
+ textContent : textOrSnip ? editorPageCount : userSnippetCount
});
codeMirror.setBookmark({ line: lineNumber, ch: line.length }, pageCountElement);
-
- editorPageCount += 1;
};
+
// New Codemirror styling for V3 renderer
- if(this.props.renderer == 'V3') {
- if(line.match(/^\\column$/)){
+ if(this.props.renderer === 'V3') {
+ if(line.match(/^\\column(?:break)?$/)){
codeMirror.addLineClass(lineNumber, 'text', 'columnSplit');
}
// definition lists
if(line.includes('::')){
- if(/^:*$/.test(line) == true){ return };
+ if(/^:*$/.test(line) == true){ return; };
const regex = /^([^\n]*?:?\s?)(::[^\n]*)(?:\n|$)/ymd; // the `d` flag, for match indices, throws an ESLint error.
let match;
while ((match = regex.exec(line)) != null){
@@ -163,10 +226,10 @@ const Editor = createClass({
codeMirror.markText({ line: lineNumber, ch: match.indices[1][0] }, { line: lineNumber, ch: match.indices[1][1] }, { className: 'dt-highlight' });
codeMirror.markText({ line: lineNumber, ch: match.indices[2][0] }, { line: lineNumber, ch: match.indices[2][1] }, { className: 'dd-highlight' });
const ddIndex = match.indices[2][0];
- let colons = /::/g;
- let colonMatches = colons.exec(match[2]);
+ const colons = /::/g;
+ const colonMatches = colons.exec(match[2]);
if(colonMatches !== null){
- codeMirror.markText({ line: lineNumber, ch: colonMatches.index + ddIndex }, { line: lineNumber, ch: colonMatches.index + colonMatches[0].length + ddIndex }, { className: 'dl-colon-highlight'} )
+ codeMirror.markText({ line: lineNumber, ch: colonMatches.index + ddIndex }, { line: lineNumber, ch: colonMatches.index + colonMatches[0].length + ddIndex }, { className: 'dl-colon-highlight' });
}
}
}
@@ -176,12 +239,12 @@ const Editor = createClass({
let startIndex = line.indexOf('^');
const superRegex = /\^(?!\s)(?=([^\n\^]*[^\s\^]))\1\^/gy;
const subRegex = /\^\^(?!\s)(?=([^\n\^]*[^\s\^]))\1\^\^/gy;
-
+
while (startIndex >= 0) {
superRegex.lastIndex = subRegex.lastIndex = startIndex;
let isSuper = false;
- let match = subRegex.exec(line) || superRegex.exec(line);
- if (match) {
+ const match = subRegex.exec(line) || superRegex.exec(line);
+ if(match) {
isSuper = !subRegex.lastIndex;
codeMirror.markText({ line: lineNumber, ch: match.index }, { line: lineNumber, ch: match.index + match[0].length }, { className: isSuper ? 'superscript' : 'subscript' });
}
@@ -231,20 +294,20 @@ const Editor = createClass({
while (startIndex >= 0) {
emojiRegex.lastIndex = startIndex;
- let match = emojiRegex.exec(line);
- if (match) {
+ const match = emojiRegex.exec(line);
+ if(match) {
let tokens = Markdown.marked.lexer(match[0]);
- tokens = tokens[0].tokens.filter(t => t.type == 'emoji')
- if (!tokens.length)
+ tokens = tokens[0].tokens.filter((t)=>t.type == 'emoji');
+ if(!tokens.length)
return;
- let startPos = { line: lineNumber, ch: match.index };
- let endPos = { line: lineNumber, ch: match.index + match[0].length };
+ const startPos = { line: lineNumber, ch: match.index };
+ const endPos = { line: lineNumber, ch: match.index + match[0].length };
// Iterate over conflicting marks and clear them
- var marks = codeMirror.findMarks(startPos, endPos);
+ const marks = codeMirror.findMarks(startPos, endPos);
marks.forEach(function(marker) {
- marker.clear();
+ if(!marker.__isFold) marker.clear();
});
codeMirror.markText(startPos, endPos, { className: 'emoji' });
}
@@ -257,81 +320,102 @@ const Editor = createClass({
}
},
- brewJump : function(targetPage=this.getCurrentPage()){
- if(!window) return;
- // console.log(`Scroll to: p${targetPage}`);
+ brewJump : function(targetPage=this.props.currentEditorCursorPageNum, smooth=true){
+ if(!window || !this.isText() || isJumping)
+ return;
+
+ // Get current brewRenderer scroll position and calculate target position
const brewRenderer = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer')[0];
const currentPos = brewRenderer.scrollTop;
const targetPos = window.frames['BrewRenderer'].contentDocument.getElementById(`p${targetPage}`).getBoundingClientRect().top;
- const interimPos = targetPos >= 0 ? -30 : 30;
- const bounceDelay = 100;
- const scrollDelay = 500;
-
- if(!this.throttleBrewMove) {
- this.throttleBrewMove = _.throttle((currentPos, interimPos, targetPos)=>{
- brewRenderer.scrollTo({ top: currentPos + interimPos, behavior: 'smooth' });
- setTimeout(()=>{
- brewRenderer.scrollTo({ top: currentPos + targetPos, behavior: 'smooth', block: 'start' });
- }, bounceDelay);
- }, scrollDelay, { leading: true, trailing: false });
+ const checkIfScrollComplete = ()=>{
+ let scrollingTimeout;
+ clearTimeout(scrollingTimeout); // Reset the timer every time a scroll event occurs
+ scrollingTimeout = setTimeout(()=>{
+ isJumping = false;
+ brewRenderer.removeEventListener('scroll', checkIfScrollComplete);
+ }, 150); // If 150 ms pass without a brewRenderer scroll event, assume scrolling is done
};
- this.throttleBrewMove(currentPos, interimPos, targetPos);
- // const hashPage = (page != 1) ? `p${page}` : '';
- // window.location.hash = hashPage;
+ isJumping = true;
+ checkIfScrollComplete();
+ brewRenderer.addEventListener('scroll', checkIfScrollComplete);
+
+ if(smooth) {
+ const bouncePos = targetPos >= 0 ? -30 : 30; //Do a little bounce before scrolling
+ const bounceDelay = 100;
+ const scrollDelay = 500;
+
+ if(!this.throttleBrewMove) {
+ this.throttleBrewMove = _.throttle((currentPos, bouncePos, targetPos)=>{
+ brewRenderer.scrollTo({ top: currentPos + bouncePos, behavior: 'smooth' });
+ setTimeout(()=>{
+ brewRenderer.scrollTo({ top: currentPos + targetPos, behavior: 'smooth', block: 'start' });
+ }, bounceDelay);
+ }, scrollDelay, { leading: true, trailing: false });
+ };
+ this.throttleBrewMove(currentPos, bouncePos, targetPos);
+ } else {
+ brewRenderer.scrollTo({ top: currentPos + targetPos, behavior: 'instant', block: 'start' });
+ }
},
- sourceJump : function(targetLine=null){
- if(this.isText()) {
- if(targetLine == null) {
- targetLine = 0;
+ sourceJump : function(targetPage=this.props.currentBrewRendererPageNum, smooth=true){
+ if(!this.isText() || isJumping)
+ return;
- const pageCollection = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('page');
- const brewRendererHeight = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0).getBoundingClientRect().height;
+ const textSplit = this.props.renderer == 'V3' ? PAGEBREAK_REGEX_V3 : /\\page/;
+ const textString = this.props.brew.text.split(textSplit).slice(0, targetPage-1).join(textSplit);
+ const targetLine = textString.match('\n') ? textString.split('\n').length - 1 : -1;
- let currentPage = 1;
- for (const page of pageCollection) {
- if(page.getBoundingClientRect().bottom > (brewRendererHeight / 2)) {
- currentPage = parseInt(page.id.slice(1)) || 1;
- break;
- }
+ let currentY = this.codeEditor.current.codeMirror.getScrollInfo().top;
+ let targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true);
+
+ const checkIfScrollComplete = ()=>{
+ let scrollingTimeout;
+ clearTimeout(scrollingTimeout); // Reset the timer every time a scroll event occurs
+ scrollingTimeout = setTimeout(()=>{
+ isJumping = false;
+ this.codeEditor.current.codeMirror.off('scroll', checkIfScrollComplete);
+ }, 150); // If 150 ms pass without a scroll event, assume scrolling is done
+ };
+
+ isJumping = true;
+ checkIfScrollComplete();
+ this.codeEditor.current.codeMirror.on('scroll', checkIfScrollComplete);
+
+ if(smooth) {
+ //Scroll 1/10 of the way every 10ms until 1px off.
+ const incrementalScroll = setInterval(()=>{
+ currentY += (targetY - currentY) / 10;
+ this.codeEditor.current.codeMirror.scrollTo(null, currentY);
+
+ // Update target: target height is not accurate until within +-10 lines of the visible window
+ if(Math.abs(targetY - currentY > 100))
+ targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true);
+
+ // End when close enough
+ if(Math.abs(targetY - currentY) < 1) {
+ this.codeEditor.current.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference
+ this.codeEditor.current.setCursorPosition({ line: targetLine + 1, ch: 0 });
+ this.codeEditor.current.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash');
+ clearInterval(incrementalScroll);
}
-
- const textSplit = this.props.renderer == 'V3' ? /^\\page$/gm : /\\page/;
- const textString = this.props.brew.text.split(textSplit).slice(0, currentPage-1).join(textSplit);
- const textPosition = textString.length;
- const lineCount = textString.match('\n') ? textString.slice(0, textPosition).split('\n').length : 0;
-
- targetLine = lineCount - 1; //Scroll to `\page`, which is one line back.
-
- let currentY = this.codeEditor.current.codeMirror.getScrollInfo().top;
- let targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true);
-
- //Scroll 1/10 of the way every 10ms until 1px off.
- const incrementalScroll = setInterval(()=>{
- currentY += (targetY - currentY) / 10;
- this.codeEditor.current.codeMirror.scrollTo(null, currentY);
-
- // Update target: target height is not accurate until within +-10 lines of the visible window
- if(Math.abs(targetY - currentY > 100))
- targetY = this.codeEditor.current.codeMirror.heightAtLine(targetLine, 'local', true);
-
- // End when close enough
- if(Math.abs(targetY - currentY) < 1) {
- this.codeEditor.current.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference
- this.codeEditor.current.setCursorPosition({ line: targetLine + 1, ch: 0 });
- this.codeEditor.current.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash');
- clearInterval(incrementalScroll);
- }
- }, 10);
- }
+ }, 10);
+ } else {
+ this.codeEditor.current.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference
+ this.codeEditor.current.setCursorPosition({ line: targetLine + 1, ch: 0 });
+ this.codeEditor.current.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash');
}
},
//Called when there are changes to the editor's dimensions
update : function(){
this.codeEditor.current?.updateSize();
+ const snipHeight = document.querySelector('.editor > .snippetBar').offsetHeight;
+ if(snipHeight !== this.state.snippetbarHeight)
+ this.setState({ snippetbarHeight: snipHeight });
},
updateEditorTheme : function(newTheme){
@@ -356,7 +440,8 @@ const Editor = createClass({
value={this.props.brew.text}
onChange={this.props.onTextChange}
editorTheme={this.state.editorTheme}
- rerenderParent={this.rerenderParent} />
+ rerenderParent={this.rerenderParent}
+ style={{ height: `calc(100% - ${this.state.snippetbarHeight}px)` }} />
>;
}
if(this.isStyle()){
@@ -367,9 +452,10 @@ const Editor = createClass({
view={this.state.view}
value={this.props.brew.style ?? DEFAULT_STYLE_TEXT}
onChange={this.props.onStyleChange}
- enableFolding={false}
+ enableFolding={true}
editorTheme={this.state.editorTheme}
- rerenderParent={this.rerenderParent} />
+ rerenderParent={this.rerenderParent}
+ style={{ height: `calc(100% - ${this.state.snippetbarHeight}px)` }} />
>;
}
if(this.isMeta()){
@@ -380,8 +466,26 @@ const Editor = createClass({
rerenderParent={this.rerenderParent} />
+ reportError={this.props.reportError}
+ userThemes={this.props.userThemes}/>
+ >;
+ }
+
+ if(this.isSnip()){
+ if(!this.props.brew.snippets) { this.props.brew.snippets = DEFAULT_SNIPPET_TEXT; }
+ return <>
+
>;
}
},
@@ -424,7 +528,10 @@ const Editor = createClass({
historySize={this.historySize()}
currentEditorTheme={this.state.editorTheme}
updateEditorTheme={this.updateEditorTheme}
- cursorPos={this.codeEditor.current?.getCursorPosition() || {}} />
+ themeBundle={this.props.themeBundle}
+ cursorPos={this.codeEditor.current?.getCursorPosition() || {}}
+ updateBrew={this.props.updateBrew}
+ />
{this.renderEditor()}
diff --git a/client/homebrew/editor/editor.less b/client/homebrew/editor/editor.less
index f8dc249d6..fb5891fbe 100644
--- a/client/homebrew/editor/editor.less
+++ b/client/homebrew/editor/editor.less
@@ -1,11 +1,13 @@
@import 'themes/codeMirror/customEditorStyles.less';
.editor {
- position : relative;
- width : 100%;
-
+ position : relative;
+ width : 100%;
+ height : 100%;
+ container : editor / inline-size;
.codeEditor {
- height : 100%;
- .pageLine {
+ height : calc(100% - 25px);
+ .CodeMirror { height : 100%; }
+ .pageLine, .snippetLine {
background : #33333328;
border-top : #333399 solid 1px;
}
@@ -13,6 +15,10 @@
float : right;
color : grey;
}
+ .editor-snippet-count {
+ float : right;
+ color : grey;
+ }
.columnSplit {
font-style : italic;
color : grey;
@@ -44,26 +50,26 @@
color : green;
}
.emoji:not(.cm-comment) {
- margin-left : 2px;
- color : #360034;
- background : #ffc8ff;
- border-radius : 6px;
- font-weight : bold;
padding-bottom : 1px;
+ margin-left : 2px;
+ font-weight : bold;
+ color : #360034;
+ outline : solid 2px #FF96FC;
outline-offset : -2px;
- outline : solid 2px #ff96fc;
+ background : #FFC8FF;
+ border-radius : 6px;
}
.superscript:not(.cm-comment) {
- font-weight : bold;
- color : goldenrod;
- vertical-align : super;
font-size : 0.9em;
+ font-weight : bold;
+ vertical-align : super;
+ color : goldenrod;
}
.subscript:not(.cm-comment) {
- font-weight : bold;
- color : rgb(123, 123, 15);
- vertical-align : sub;
font-size : 0.9em;
+ font-weight : bold;
+ vertical-align : sub;
+ color : rgb(123, 123, 15);
}
.dl-highlight {
&.dl-colon-highlight {
@@ -102,4 +108,4 @@
span { padding : 2px 5px; }
}
-}
+}
\ No newline at end of file
diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx
index a59a50f74..8f256922f 100644
--- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx
+++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx
@@ -3,10 +3,10 @@ require('./metadataEditor.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
-const request = require('../../utils/request-middleware.js');
-const Nav = require('naturalcrit/nav/nav.jsx');
+import request from '../../utils/request-middleware.js';
const Combobox = require('client/components/combobox.jsx');
-const StringArrayEditor = require('../stringArrayEditor/stringArrayEditor.jsx');
+const TagInput = require('../tagInput/tagInput.jsx');
+
const Themes = require('themes/themes.json');
const validations = require('./validations.js');
@@ -27,6 +27,7 @@ const MetadataEditor = createClass({
return {
metadata : {
editId : null,
+ shareId : null,
title : '',
description : '',
thumbnail : '',
@@ -38,6 +39,7 @@ const MetadataEditor = createClass({
theme : '5ePHB',
lang : 'en'
},
+
onChange : ()=>{},
reportError : ()=>{}
};
@@ -65,6 +67,11 @@ const MetadataEditor = createClass({
const inputRules = validations[name] ?? [];
const validationErr = inputRules.map((rule)=>rule(e.target.value)).filter(Boolean);
+ const debouncedReportValidity = _.debounce((target, errMessage)=>{
+ callIfExists(target, 'setCustomValidity', errMessage);
+ callIfExists(target, 'reportValidity');
+ }, 300); // 300ms debounce delay, adjust as needed
+
// if no validation rules, save to props
if(validationErr.length === 0){
callIfExists(e.target, 'setCustomValidity', '');
@@ -72,14 +79,16 @@ const MetadataEditor = createClass({
...this.props.metadata,
[name] : e.target.value
});
+ return true;
} else {
// if validation issues, display built-in browser error popup with each error.
const errMessage = validationErr.map((err)=>{
return `- ${err}`;
}).join('\n');
- callIfExists(e.target, 'setCustomValidity', errMessage);
- callIfExists(e.target, 'reportValidity');
+
+ debouncedReportValidity(e.target, errMessage);
+ return false;
}
},
@@ -98,8 +107,9 @@ const MetadataEditor = createClass({
if(renderer == 'legacy')
this.props.metadata.theme = '5ePHB';
}
- this.props.onChange(this.props.metadata);
+ this.props.onChange(this.props.metadata, 'renderer');
},
+
handlePublish : function(val){
this.props.onChange({
...this.props.metadata,
@@ -110,7 +120,15 @@ const MetadataEditor = createClass({
handleTheme : function(theme){
this.props.metadata.renderer = theme.renderer;
this.props.metadata.theme = theme.path;
- this.props.onChange(this.props.metadata);
+
+ this.props.onChange(this.props.metadata, 'theme');
+ },
+
+ handleThemeWritein : function(e) {
+ const shareId = e.target.value.split('/').pop(); //Extract just the ID if a URL was pasted in
+ this.props.metadata.theme = shareId;
+
+ this.props.onChange(this.props.metadata, 'theme');
},
handleLanguage : function(languageCode){
@@ -191,38 +209,57 @@ const MetadataEditor = createClass({
renderThemeDropdown : function(){
if(!global.enable_themes) return;
+ const mergedThemes = _.merge(Themes, this.props.userThemes);
+
const listThemes = (renderer)=>{
- return _.map(_.values(Themes[renderer]), (theme)=>{
- return
this.handleTheme(theme)} title={''}>
- {`${theme.renderer} : ${theme.name}`}
-
+ return _.map(_.values(mergedThemes[renderer]), (theme)=>{
+ if(theme.path == this.props.metadata.shareId) return;
+ const preview = theme.thumbnail || `/themes/${theme.renderer}/${theme.path}/dropdownPreview.png`;
+ const texture = theme.thumbnail || `/themes/${theme.renderer}/${theme.path}/dropdownTexture.png`;
+ return
+ {theme.author ?? renderer} : {theme.name}
+
+
+
-
{`${theme.name}`} preview
-
+
{theme.name} preview
+
;
- });
+ }).filter(Boolean);
};
- const currentTheme = Themes[`${_.upperFirst(this.props.metadata.renderer)}`][this.props.metadata.theme];
+ const currentRenderer = this.props.metadata.renderer;
+ const currentThemeDisplay = this.props.themeBundle?.name ? `${this.props.themeBundle.author ?? currentRenderer} : ${this.props.themeBundle.name}` : 'No Theme Selected';
let dropdown;
- if(this.props.metadata.renderer == 'legacy') {
+ if(currentRenderer == 'legacy') {
dropdown =
-
-
- {`Themes are not supported in the Legacy Renderer`}
-
- ;
+
+
Themes are not supported in the Legacy Renderer
+
;
} else {
dropdown =
-
-
- {`${_.upperFirst(currentTheme.renderer)} : ${currentTheme.name}`}
-
- {/*listThemes('Legacy')*/}
- {listThemes('V3')}
- ;
+
+ this.handleTheme(value)}
+ onEntry={(e)=>{
+ e.target.setCustomValidity(''); //Clear the validation popup while typing
+ if(this.handleFieldChange('theme', e))
+ this.handleThemeWritein(e);
+ }}
+ options={listThemes(currentRenderer)}
+ autoSuggest={{
+ suggestMethod : 'includes',
+ clearAutoSuggestOnClick : true,
+ filterOn : ['value', 'title']
+ }}
+ />
+ Select from the list below (built-in themes and brews you have tagged "meta:theme"), or paste in the Share URL or Share ID of any brew.
+
;
}
return
@@ -237,15 +274,13 @@ const MetadataEditor = createClass({
return _.map(langCodes.sort(), (code, index)=>{
const localName = new Intl.DisplayNames([code], { type: 'language' });
const englishName = new Intl.DisplayNames('en', { type: 'language' });
- return
- {`${code}`}
-
{`${localName.of(code)}`}
+ return
+ {code}
+
{localName.of(code)}
;
});
};
- const debouncedHandleFieldChange = _.debounce(this.handleFieldChange, 500);
-
return
language
@@ -256,16 +291,15 @@ const MetadataEditor = createClass({
onSelect={(value)=>this.handleLanguage(value)}
onEntry={(e)=>{
e.target.setCustomValidity(''); //Clear the validation popup while typing
- debouncedHandleFieldChange('lang', e);
+ this.handleFieldChange('lang', e);
}}
options={listLanguages()}
autoSuggest={{
suggestMethod : 'startsWith',
clearAutoSuggestOnClick : true,
- filterOn : ['data-value', 'data-detail', 'title']
+ filterOn : ['value', 'detail', 'title']
}}
- >
-
+ />
Sets the HTML Lang property for your brew. May affect hyphenation or spellcheck.
@@ -297,17 +331,14 @@ const MetadataEditor = createClass({
onChange={(e)=>this.handleRenderer('V3', e)} />
V3
-
-
- Click here to see the demo page for the old Legacy renderer!
-
+
Click here to see the demo page for the old Legacy renderer!
;
},
render : function(){
return
-
Brew
+
Properties Editor
title
@@ -337,10 +368,11 @@ const MetadataEditor = createClass({
{this.renderThumbnail()}
-
this.handleFieldChange('tags', e)}/>
+ onChange={(e)=>this.handleFieldChange('tags', e)}
+ />
systems
@@ -355,28 +387,25 @@ const MetadataEditor = createClass({
{this.renderRenderOptions()}
-
-
-
Authors
+
Authors
{this.renderAuthors()}
-
!this.props.metadata.authors?.includes(v)]}
placeholder='invite author' unique={true}
values={this.props.metadata.invitedAuthors}
notes={['Invited author usernames are case sensitive.', 'After adding an invited author, send them the edit link. There, they can choose to accept or decline the invitation.']}
- onChange={(e)=>this.handleFieldChange('invitedAuthors', e)}/>
+ onChange={(e)=>this.handleFieldChange('invitedAuthors', e)}
+ />
-
-
- Privacy
+ Privacy
publish
{this.renderPublish()}
-
Published homebrews will be publicly viewable and searchable (eventually...)
+
Published brews are searchable in the Vault and visible on your user page. Unpublished brews are not indexed in the Vault or visible on your user page, but can still be shared and indexed by search engines. You can unpublish a brew any time.
diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.less b/client/homebrew/editor/metadataEditor/metadataEditor.less
index 7f7ce3060..fd04f07d9 100644
--- a/client/homebrew/editor/metadataEditor/metadataEditor.less
+++ b/client/homebrew/editor/metadataEditor/metadataEditor.less
@@ -1,328 +1,317 @@
@import 'naturalcrit/styles/colors.less';
-.metadataEditor{
+.userThemeName {
+ padding-right : 10px;
+ padding-left : 10px;
+}
+
+.metadataEditor {
position : absolute;
- z-index : 5;
box-sizing : border-box;
width : 100%;
- padding : 25px;
- background-color : #999;
height : calc(100vh - 54px); // 54px is the height of the navbar + snippet bar. probably a better way to dynamic get this.
+ padding : 25px;
overflow-y : auto;
+ font-size : 13px;
+ background-color : #999999;
- .sectionHead {
- font-weight: 1000;
- margin: 20px 0;
-
- &:first-of-type {
- margin-top: 0;
- }
+ h1 {
+ margin : 0 0 40px;
+ font-weight : bold;
+ text-transform : uppercase;
+ }
+
+ h2 {
+ margin : 20px 0;
+ font-weight : bold;
+ color : #555555;
+ border-bottom : 2px solid gray;
}
- & > div {
- margin-bottom: 10px;
- }
+ & > div { margin-bottom : 10px; }
.field-group {
- display: flex;
- width: 100%;
- flex-wrap: wrap;
- gap: 10px;
+ display : flex;
+ flex-wrap : wrap;
+ gap : 10px;
+ width : 100%;
}
.field-column {
- display: flex;
- flex-direction: column;
- flex: 5 0 200px;
- gap: 10px;
+ display : flex;
+ flex : 5 0 200px;
+ flex-direction : column;
+ gap : 10px;
}
- .field{
+ .field {
+ position : relative;
display : flex;
flex-wrap : wrap;
width : 100%;
min-width : 200px;
- position : relative;
- &>label{
+ & > label {
width : 80px;
- font-size : 11px;
+ font-size : 0.9em;
font-weight : 800;
line-height : 1.8em;
text-transform : uppercase;
}
- &>.value{
+ & > .value {
flex : 1 1 auto;
width : 50px;
- &:invalid {
- background : #ffb9b9;
+ &:invalid { background : #FFB9B9; }
+ small {
+ display : block;
+ font-size : 0.9em;
+ font-style : italic;
+ line-height : 1.4em;
}
}
input[type='text'], textarea {
border : 1px solid gray;
- &:focus {
- outline: 1px solid #444;
+ &:focus { outline : 1px solid #444444; }
+ }
+ &.thumbnail, &.themes {
+ label { line-height : 2.0em; }
+ .value {
+ overflow : hidden;
+ text-overflow : ellipsis;
+ }
+ button {
+ .colorButton();
+ padding : 0px 5px;
+ color : white;
+ background-color : black;
+ border : 1px solid #999999;
+ &:hover { background-color : #777777; }
}
}
- &.thumbnail{
- height : 1.4em;
- label{
- line-height: 2.0em;
+
+ &.themes {
+ .value {
+ overflow : visible;
+ text-overflow : auto;
}
- .value{
- overflow: hidden;
- text-overflow: ellipsis;
- }
- button{
- border: 1px solid #999;
- color: white;
- padding: 0px 5px;
- background-color: black;
- &:hover{
- background-color: #777;
- }
+ button {
+ padding-right : 5px;
+ padding-left : 5px;
}
}
&.description {
- flex: 1;
+ flex : 1;
textarea.value {
- resize : none;
height : auto;
font-family : 'Open Sans', sans-serif;
- font-size : 0.8em;
+ resize : none;
}
}
&.language .language-dropdown {
- max-width : 150px;
z-index : 200;
- }
- small {
- font-size : 0.6em;
- font-style : italic;
- line-height : 1.4em;
- display : inline-block;
+ max-width : 150px;
}
}
.thumbnail-preview {
- position: relative;
- justify-self: center;
- width: 80px;
- height: min-content;
- flex: 1 1;
- max-height: 115px;
- aspect-ratio: 1 / 1;
- object-fit: contain;
- background-color: #AAA;
+ position : relative;
+ flex : 1 1;
+ justify-self : center;
+ width : 80px;
+ height : min-content;
+ max-height : 115px;
+ aspect-ratio : 1 / 1;
+ object-fit : contain;
+ background-color : #AAAAAA;
}
- .systems.field .value{
- label{
- vertical-align : middle;
- margin-right : 15px;
- cursor : pointer;
- font-size : 0.7em;
- font-weight : 800;
- user-select : none;
- white-space : nowrap;
+ .systems.field .value {
+ label {
display : inline-flex;
align-items : center;
+ margin-right : 15px;
+ font-size : 0.9em;
+ font-weight : 800;
+ vertical-align : middle;
+ white-space : nowrap;
+ cursor : pointer;
+ user-select : none;
}
- a {
- font-size : 0.7em;
- font-weight : 800;
- display : inline-flex;
- }
- input{
+ input {
+ margin : 3px;
vertical-align : middle;
cursor : pointer;
- margin : 3px;
}
}
- .publish.field .value{
- position : relative;
- margin-bottom: 15px;
- button{
- width:100%;
+ .publish.field .value {
+ position : relative;
+ margin-bottom : 15px;
+ button { width : 100%; }
+ button.publish {
+ .colorButton(@blueLight);
}
- button.publish{
- .button(@blueLight);
- }
- button.unpublish{
- .button(@silver);
+ button.unpublish {
+ .colorButton(@silver);
}
}
- .delete.field .value{
- button{
- .button(@red);
+ .delete.field .value {
+ button {
+ .colorButton(@red);
}
}
- .authors.field .value{
- font-size: 0.8em;
- line-height : 1.5em;
+ .authors.field .value { line-height : 1.5em; }
+
+ .themes.field {
+ & .dropdown-container {
+ position : relative;
+ z-index : 100;
+ background-color : white;
+ }
+ & .dropdown-options { overflow-y : visible; }
+ .disabled {
+ font-style : italic;
+ color : dimgray;
+ background-color : darkgray;
+ }
+ .item {
+ position : relative;
+ padding : 3px 3px;
+ overflow : visible;
+ background-color : white;
+ border-top : 1px solid rgb(118, 118, 118);
+ .preview {
+ position : absolute;
+ top : 0;
+ right : 0;
+ z-index : 1;
+ display : flex;
+ flex-direction : column;
+ width : 200px;
+ overflow : hidden;
+ color : black;
+ background : #CCCCCC;
+ border-radius : 5px;
+ box-shadow : 0 0 5px black;
+ opacity : 0;
+ transition : opacity 250ms ease;
+ h6 {
+ padding-block : 0.5em;
+ padding-inline : 1em;
+ font-weight : 900;
+ border-bottom : 2px solid hsl(0,0%,40%);
+ }
+ }
+
+ .texture-container {
+ position : absolute;
+ top : 0;
+ left : 0;
+ width : 100%;
+ height : 100%;
+ min-height : 100%;
+ overflow : hidden;
+ > img {
+ position : absolute;
+ top : 0;
+ right : 0;
+ width : 50%;
+ min-height : 100%;
+ -webkit-mask-image : linear-gradient(90deg, transparent, black 20%);
+ mask-image : linear-gradient(90deg, transparent, black 20%);
+ }
+ }
+
+ &:hover {
+ color : white;
+ background-color : @blue;
+ filter : unset;
+ }
+ &:hover > .preview { opacity : 1; }
+ }
}
- .themes.field{
- font-size : 13.33px;
- .navDropdownContainer {
- background-color : white;
- position : relative;
- z-index : 100;
- &.disabled {
- font-style :italic;
- font-style : italic;
- background-color : darkgray;
- color : dimgray;
- }
- &>div:first-child {
- border : 2px solid rgb(118,118,118);
- padding : 6px 3px;
- background-color : inherit;
- i {
- float : right;
- }
- &:hover {
- background-color : @blue;
- color : white;
- }
- }
- .navDropdown {
- box-shadow : 0px 5px 10px rgba(0, 0, 0, 0.3);
- position : absolute;
- width : 100%;
- .item {
- padding : 3px 3px;
- border-top : 1px solid rgb(118, 118, 118);
- position : relative;
- overflow : visible;
- background-color : white;
- .preview {
- display : flex;
- flex-direction: column;
- background : #ccc;
- border-radius : 5px;
- box-shadow : 0 0 5px black;
- width : 200px;
- color :black;
- position : absolute;
- top : 0;
- right : 0;
- opacity : 0;
- transition : opacity 250ms ease;
- z-index : 1;
- overflow :hidden;
- h6 {
- font-weight : 900;
- padding-inline:1em;
- padding-block :.5em;
- border-bottom :2px solid hsl(0,0%,40%);
- }
- }
- &:hover {
- background-color : @blue;
- color : white;
- }
- &:hover > .preview {
- opacity: 1;
- }
- >img {
- mask-image : linear-gradient(90deg, transparent, black 20%);
- -webkit-mask-image : linear-gradient(90deg, transparent, black 20%);
- position : absolute;
- right : 0;
- top : 0px;
- width : 50%;
- height : 100%;
- }
- }
- }
- }
- }
.field .list {
- display: flex;
- flex: 1 0;
- flex-wrap: wrap;
+ display : flex;
+ flex : 1 0;
+ flex-wrap : wrap;
- > * {
- flex: 0 0 auto;
- }
+ > * { flex : 0 0 auto; }
#groupedIcon {
#backgroundColors;
- display: inline-block;
- height: ~"calc(100% + 0.6em)";
- position: relative;
- top: -0.3em;
- right: -0.3em;
- cursor: pointer;
- min-width: 20px;
- text-align: center;
- color: white;
-
+ position : relative;
+ top : -0.3em;
+ right : -0.3em;
+ display : inline-block;
+ min-width : 20px;
+ height : ~'calc(100% + 0.6em)';
+ color : white;
+ text-align : center;
+ cursor : pointer;
+
i {
- position: relative;
- top: 50%;
- transform: translateY(-50%);
- }
-
- &:not(:last-child) {
- border-right: 1px solid black;
- }
-
- &:last-child {
- border-radius: 0 0.5em 0.5em 0;
+ position : relative;
+ top : 50%;
+ transform : translateY(-50%);
}
+
+ &:not(:last-child) { border-right : 1px solid black; }
+
+ &:last-child { border-radius : 0 0.5em 0.5em 0; }
}
- .badge {
- background-color: #dddddd;
- border-radius: .5em;
- font-size: .9em;
- margin: 2px;
- padding: .3em;
+ .tag {
+ padding : 0.3em;
+ margin : 2px;
+ font-size : 0.9em;
+ background-color : #DDDDDD;
+ border-radius : 0.5em;
- .icon {
- #groupedIcon
- }
+ .icon { #groupedIcon; }
}
.input-group {
- height: ~"calc(.9em + 4px + .6em)";
+ height : ~'calc(.9em + 4px + .6em)';
- input {
- border-radius: .5em 0 0 .5em;
- }
+ input { border-radius : 0.5em 0 0 0.5em; }
- input:last-child {
- border-radius: .5em;
- }
+ input:last-child { border-radius : 0.5em; }
.value {
- width: 7.5vw;
- min-width: 75px;
- height: 100%;
+ width : 7.5vw;
+ min-width : 75px;
+ height : 100%;
}
- .invalid:focus {
- background-color: pink;
- }
+ .input-group {
+ height : ~'calc(.9em + 4px + .6em)';
- .icon {
- #groupedIcon;
- height: 97%;
- font-size: .8em;
- right: 1px;
- top: -.54em;
+ input { border-radius : 0.5em 0 0 0.5em; }
- i {
- font-size: 1.125em;
+ input:last-child { border-radius : 0.5em; }
+
+ .value {
+ width : 7.5vw;
+ min-width : 75px;
+ height : 100%;
+ }
+
+ .invalid:focus { background-color : pink; }
+
+ .icon {
+ #groupedIcon;
+ top : -0.54em;
+ right : 1px;
+ height : 97%;
+
+ i { font-size : 1.125em; }
}
}
}
}
-}
+}
\ No newline at end of file
diff --git a/client/homebrew/editor/metadataEditor/validations.js b/client/homebrew/editor/metadataEditor/validations.js
index 32c8131f6..858fca6c4 100644
--- a/client/homebrew/editor/metadataEditor/validations.js
+++ b/client/homebrew/editor/metadataEditor/validations.js
@@ -27,6 +27,19 @@ module.exports = {
(value)=>{
return new RegExp(/^([a-zA-Z]{2,3})(-[a-zA-Z]{4})?(-(?:[0-9]{3}|[a-zA-Z]{2}))?$/).test(value) === false && (value.length > 0) ? 'Invalid language code.' : null;
}
+ ],
+ theme : [
+ (value)=>{
+ const URL = global.config.baseUrl.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); //Escape any regex characters
+ const shareIDPattern = '[a-zA-Z0-9-_]{12}';
+ const shareURLRegex = new RegExp(`^${URL}\\/share\\/${shareIDPattern}$`);
+ const shareIDRegex = new RegExp(`^${shareIDPattern}$`);
+ if(value?.length === 0) return null;
+ if(shareURLRegex.test(value)) return null;
+ if(shareIDRegex.test(value)) return null;
+
+ return 'Must be a valid Share URL or a 12-character ID.';
+ }
]
};
diff --git a/client/homebrew/editor/snippetbar/snippetbar.jsx b/client/homebrew/editor/snippetbar/snippetbar.jsx
index 80a97f49e..5e2051a86 100644
--- a/client/homebrew/editor/snippetbar/snippetbar.jsx
+++ b/client/homebrew/editor/snippetbar/snippetbar.jsx
@@ -1,14 +1,14 @@
-/*eslint max-lines: ["warn", {"max": 250, "skipBlankLines": true, "skipComments": true}]*/
+/*eslint max-lines: ["warn", {"max": 350, "skipBlankLines": true, "skipComments": true}]*/
require('./snippetbar.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
+import { loadHistory } from '../../utils/versionHistory.js';
+import { brewSnippetsToJSON } from '../../../../shared/helpers.js';
+
//Import all themes
-
-const Themes = require('themes/themes.json');
-
const ThemeSnippets = {};
ThemeSnippets['Legacy_5ePHB'] = require('themes/Legacy/5ePHB/snippets.js');
ThemeSnippets['V3_5ePHB'] = require('themes/V3/5ePHB/snippets.js');
@@ -40,7 +40,9 @@ const Snippetbar = createClass({
foldCode : ()=>{},
unfoldCode : ()=>{},
updateEditorTheme : ()=>{},
- cursorPos : {}
+ cursorPos : {},
+ themeBundle : [],
+ updateBrew : ()=>{}
};
},
@@ -48,54 +50,80 @@ const Snippetbar = createClass({
return {
renderer : this.props.renderer,
themeSelector : false,
- snippets : []
+ snippets : [],
+ showHistory : false,
+ historyExists : false,
+ historyItems : []
};
},
- componentDidMount : async function() {
- const rendererPath = this.props.renderer == 'V3' ? 'V3' : 'Legacy';
- const themePath = this.props.theme ?? '5ePHB';
- let snippets = _.cloneDeep(ThemeSnippets[`${rendererPath}_${themePath}`]);
- snippets = this.compileSnippets(rendererPath, themePath, snippets);
+ componentDidMount : async function(prevState) {
+ const snippets = this.compileSnippets();
this.setState({
snippets : snippets
});
},
- componentDidUpdate : async function(prevProps) {
- if(prevProps.renderer != this.props.renderer || prevProps.theme != this.props.theme) {
- const rendererPath = this.props.renderer == 'V3' ? 'V3' : 'Legacy';
- const themePath = this.props.theme ?? '5ePHB';
- let snippets = _.cloneDeep(ThemeSnippets[`${rendererPath}_${themePath}`]);
- snippets = this.compileSnippets(rendererPath, themePath, snippets);
+ componentDidUpdate : async function(prevProps, prevState) {
+ if(prevProps.renderer != this.props.renderer ||
+ prevProps.theme != this.props.theme ||
+ prevProps.themeBundle != this.props.themeBundle ||
+ prevProps.brew.snippets != this.props.brew.snippets) {
this.setState({
- snippets : snippets
+ snippets : this.compileSnippets()
+ });
+ };
+
+ // Update history list if it has changed
+ const checkHistoryItems = await loadHistory(this.props.brew);
+
+ // If all items have the noData property, there is no saved data
+ const checkHistoryExists = !checkHistoryItems.every((historyItem)=>{
+ return historyItem?.noData;
+ });
+ if(prevState.historyExists != checkHistoryExists){
+ this.setState({
+ historyExists : checkHistoryExists
+ });
+ }
+
+ // If any history items have changed, update the list
+ if(checkHistoryExists && checkHistoryItems.some((historyItem, index)=>{
+ return index >= prevState.historyItems.length || !_.isEqual(historyItem, prevState.historyItems[index]);
+ })){
+ this.setState({
+ historyItems : checkHistoryItems
});
}
},
-
- mergeCustomizer : function(valueA, valueB, key) {
+ mergeCustomizer : function(oldValue, newValue, key) {
if(key == 'snippets') {
- const result = _.reverse(_.unionBy(_.reverse(valueB), _.reverse(valueA), 'name')); // Join snippets together, with preference for the current theme over the base theme
- return _.filter(result, 'gen'); //Only keep snippets with a 'gen' property.
- }
+ const result = _.reverse(_.unionBy(_.reverse(newValue), _.reverse(oldValue), 'name')); // Join snippets together, with preference for the child theme over the parent theme
+ return result.filter((snip)=>snip.gen || snip.subsnippets);
+ };
},
- compileSnippets : function(rendererPath, themePath, snippets) {
- let compiledSnippets = snippets;
- const baseSnippetsPath = Themes[rendererPath][themePath].baseSnippets;
+ compileSnippets : function() {
+ let compiledSnippets = [];
- const objB = _.keyBy(compiledSnippets, 'groupName');
+ let oldSnippets = _.keyBy(compiledSnippets, 'groupName');
- if(baseSnippetsPath) {
- const objA = _.keyBy(_.cloneDeep(ThemeSnippets[`${rendererPath}_${baseSnippetsPath}`]), 'groupName');
- compiledSnippets = _.values(_.mergeWith(objA, objB, this.mergeCustomizer));
- compiledSnippets = this.compileSnippets(rendererPath, baseSnippetsPath, _.cloneDeep(compiledSnippets));
- } else {
- const objA = _.keyBy(_.cloneDeep(ThemeSnippets[`${rendererPath}_Blank`]), 'groupName');
- compiledSnippets = _.values(_.mergeWith(objA, objB, this.mergeCustomizer));
+ if(this.props.themeBundle.snippets) {
+ for (let snippets of this.props.themeBundle.snippets) {
+ if(typeof(snippets) == 'string') // load staticThemes as needed; they were sent as just a file name
+ snippets = ThemeSnippets[snippets];
+
+ const newSnippets = _.keyBy(_.cloneDeep(snippets), 'groupName');
+ compiledSnippets = _.values(_.mergeWith(oldSnippets, newSnippets, this.mergeCustomizer));
+
+ oldSnippets = _.keyBy(compiledSnippets, 'groupName');
+ }
}
+
+ const userSnippetsasJSON = brewSnippetsToJSON(this.props.brew.title || 'New Document', this.props.brew.snippets, this.props.themeBundle.snippets);
+ compiledSnippets.push(userSnippetsasJSON);
+
return compiledSnippets;
},
@@ -132,27 +160,81 @@ const Snippetbar = createClass({
renderSnippetGroups : function(){
const snippets = this.state.snippets.filter((snippetGroup)=>snippetGroup.view === this.props.view);
+ if(snippets.length === 0) return null;
- return _.map(snippets, (snippetGroup)=>{
- return ;
+ return
+ {_.map(snippets, (snippetGroup)=>{
+ return ;
+ })
+ }
+
;
+ },
+
+ replaceContent : function(item){
+ return this.props.updateBrew(item);
+ },
+
+ toggleHistoryMenu : function(){
+ this.setState({
+ showHistory : !this.state.showHistory
});
},
+ renderHistoryItems : function() {
+ if(!this.state.historyExists) return;
+
+ return
+ {_.map(this.state.historyItems, (item, index)=>{
+ if(item.noData || !item.savedAt) return;
+
+ const saveTime = new Date(item.savedAt);
+ const diffMs = new Date() - saveTime;
+ const diffSecs = Math.floor(diffMs / 1000);
+
+ let diffString = `about ${diffSecs} seconds ago`;
+
+ if(diffSecs > 60) diffString = `about ${Math.floor(diffSecs / 60)} minutes ago`;
+ if(diffSecs > (60 * 60)) diffString = `about ${Math.floor(diffSecs / (60 * 60))} hours ago`;
+ if(diffSecs > (24 * 60 * 60)) diffString = `about ${Math.floor(diffSecs / (24 * 60 * 60))} days ago`;
+ if(diffSecs > (7 * 24 * 60 * 60)) diffString = `about ${Math.floor(diffSecs / (7 * 24 * 60 * 60))} weeks ago`;
+
+ return
{this.replaceContent(item);}} >
+
+ v{item.version} : {diffString}
+
;
+ })}
+
;
+ },
+
renderEditorButtons : function(){
if(!this.props.showEditButtons) return;
- let foldButtons;
- if(this.props.view == 'text'){
- foldButtons =
- <>
+ return (
+
+ {this.props.view !== 'meta' && <>
+
+
+ { this.state.showHistory && this.renderHistoryItems() }
+
+
+
+
+
+
+
+
+
@@ -161,41 +243,34 @@ const Snippetbar = createClass({
onClick={this.props.unfoldCode} >
- >;
+
+
+ {this.state.themeSelector && this.renderThemeSelector()}
+
+
>}
- }
+
+
this.props.onViewChange('text')}>
+
+
+
this.props.onViewChange('style')}>
+
+
+
this.props.onViewChange('snippet')}>
+
+
+
this.props.onViewChange('meta')}>
+
+
+
- return
-
-
-
-
-
-
- {foldButtons}
-
-
- {this.state.themeSelector && this.renderThemeSelector()}
-
-
-
-
this.props.onViewChange('text')}>
-
-
-
this.props.onViewChange('style')}>
-
-
-
this.props.onViewChange('meta')}>
-
-
-
;
+ );
},
render : function(){
@@ -208,11 +283,6 @@ const Snippetbar = createClass({
module.exports = Snippetbar;
-
-
-
-
-
const SnippetGroup = createClass({
displayName : 'SnippetGroup',
getDefaultProps : function() {
@@ -232,8 +302,9 @@ const SnippetGroup = createClass({
return _.map(snippets, (snippet)=>{
return
this.handleSnippetClick(e, snippet)}>
-
{snippet.name}
+
{snippet.name}
{snippet.experimental &&
beta }
+ {snippet.disabled &&
disabled }
{snippet.subsnippets && <>
@@ -245,7 +316,8 @@ const SnippetGroup = createClass({
},
render : function(){
- return
+ const snippetGroup = `snippetGroup snippetBarButton ${this.props.snippets.length === 0 ? 'disabledSnippets' : ''}`;
+ return
{this.props.groupName}
diff --git a/client/homebrew/editor/snippetbar/snippetbar.less b/client/homebrew/editor/snippetbar/snippetbar.less
index e0a24fac9..c53d4be8e 100644
--- a/client/homebrew/editor/snippetbar/snippetbar.less
+++ b/client/homebrew/editor/snippetbar/snippetbar.less
@@ -4,82 +4,120 @@
.snippetBar {
@menuHeight : 25px;
position : relative;
- height : @menuHeight;
+ display : flex;
+ flex-wrap : wrap-reverse;
+ justify-content : space-between;
+ height : auto;
color : black;
background-color : #DDDDDD;
- .editors {
- position : absolute;
- top : 0px;
- right : 0px;
+ .snippets {
display : flex;
- justify-content : space-between;
- height : @menuHeight;
- & > div {
- width : @menuHeight;
- height : @menuHeight;
- line-height : @menuHeight;
- text-align : center;
- cursor : pointer;
- &:hover,&.selected { background-color : #999999; }
- &.text {
- .tooltipLeft('Brew Editor');
- }
- &.style {
- .tooltipLeft('Style Editor');
- }
- &.meta {
- .tooltipLeft('Properties');
- }
- &.undo {
- .tooltipLeft('Undo');
- font-size : 0.75em;
- color : grey;
- &.active { color : inherit; }
- }
- &.redo {
- .tooltipLeft('Redo');
- font-size : 0.75em;
- color : grey;
- &.active { color : inherit; }
- }
- &.foldAll {
- .tooltipLeft('Fold All');
- font-size : 0.75em;
- color : inherit;
- }
- &.unfoldAll {
- .tooltipLeft('Unfold All');
- font-size : 0.75em;
- color : inherit;
- }
- &.editorTheme {
- .tooltipLeft('Editor Themes');
- font-size : 0.75em;
- color : black;
- &.active {
- position : relative;
- background-color : #999999;
+ justify-content : flex-start;
+ min-width : 432.18px; //must be controlled every time an item is added, must be hardcoded for the wrapping as it is applied
+ }
+
+ .editors {
+ display : flex;
+ justify-content : flex-end;
+ min-width : 250px; //must be controlled every time an item is added, must be hardcoded for the wrapping as it is applied
+
+ &:only-child {min-width : unset; margin-left : auto;}
+
+ >div {
+ display : flex;
+ flex : 1;
+ justify-content : space-around;
+
+ &:first-child { border-left : none; }
+
+ & > div {
+ position : relative;
+ width : @menuHeight;
+ height : @menuHeight;
+ line-height : @menuHeight;
+ text-align : center;
+ cursor : pointer;
+
+ &.editorTool:not(.active) { cursor : not-allowed; }
+
+ &:hover,&.selected { background-color : #999999; }
+ &.text {
+ .tooltipLeft('Brew Editor');
+ }
+ &.style {
+ .tooltipLeft('Style Editor');
+ }
+ &.meta {
+ .tooltipLeft('Properties');
+ }
+ &.snippet {
+ .tooltipLeft('Snippets');
+ }
+ &.undo {
+ .tooltipLeft('Undo');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.redo {
+ .tooltipLeft('Redo');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.foldAll {
+ .tooltipLeft('Fold All');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.unfoldAll {
+ .tooltipLeft('Unfold All');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.history {
+ .tooltipLeft('History');
+ position : relative;
+ font-size : 0.75em;
+ color : grey;
+ border : none;
+ &.active { color : inherit; }
+ & > .dropdown {
+ right : -1px;
+ & > .snippet { padding-right : 10px; }
+ }
+ }
+ &.editorTheme {
+ .tooltipLeft('Editor Themes');
+ font-size : 0.75em;
+ color : inherit;
+ &.active {
+ position : relative;
+ background-color : #999999;
+ }
+ }
+ &.divider {
+ width : 5px;
+ background : linear-gradient(currentColor, currentColor) no-repeat center/1px 100%;
+ &:hover { background-color : inherit; }
}
}
- &.divider {
- width : 5px;
- background : linear-gradient(currentColor, currentColor) no-repeat center/1px 100%;
- &:hover { background-color : inherit; }
+ .themeSelector {
+ position : absolute;
+ top : 25px;
+ right : 0;
+ z-index : 10;
+ display : flex;
+ align-items : center;
+ justify-content : center;
+ width : 170px;
+ height : inherit;
+ background-color : inherit;
}
- }
- .themeSelector {
- position : absolute;
- top : 25px;
- right : 0;
- z-index : 10;
- display : flex;
- align-items : center;
- justify-content : center;
- width : 170px;
- height : inherit;
- background-color : inherit;
- }
+ }
}
.snippetBarButton {
display : inline-block;
@@ -89,6 +127,7 @@
font-weight : 800;
line-height : @menuHeight;
text-transform : uppercase;
+ text-wrap : nowrap;
cursor : pointer;
&:hover, &.selected { background-color : #999999; }
i {
@@ -105,7 +144,7 @@
.tooltipLeft('Edit Brew Properties');
}
.snippetGroup {
- border-right : 1px solid currentColor;
+
&:hover {
& > .dropdown { visibility : visible; }
}
@@ -113,9 +152,9 @@
position : absolute;
top : 100%;
z-index : 1000;
+ visibility : hidden;
padding : 0px;
margin-left : -5px;
- visibility : hidden;
background-color : #DDDDDD;
.snippet {
position : relative;
@@ -127,11 +166,11 @@
cursor : pointer;
.animate(background-color);
i {
+ min-width : 25px;
height : 1.2em;
margin-right : 8px;
font-size : 1.2em;
- min-width: 25px;
- text-align: center;
+ text-align : center;
& ~ i {
margin-right : 0;
margin-left : 5px;
@@ -164,6 +203,7 @@
}
}
.name { margin-right : auto; }
+ .disabled { text-decoration : line-through; }
.beta {
align-self : center;
padding : 4px 6px;
@@ -189,4 +229,26 @@
}
}
}
-}
\ No newline at end of file
+ .disabledSnippets {
+ color: grey;
+ cursor: not-allowed;
+
+ &:hover { background-color: #DDDDDD;}
+ }
+
+}
+@container editor (width < 683px) {
+ .snippetBar {
+ .editors {
+ flex : 1;
+ justify-content : space-between;
+ border-bottom : 1px solid;
+ }
+ .snippets {
+ flex : 1;
+ justify-content : space-evenly;
+ }
+ .editors > div.history > .dropdown { right : unset; }
+ }
+}
+
diff --git a/client/homebrew/editor/stringArrayEditor/stringArrayEditor.jsx b/client/homebrew/editor/stringArrayEditor/stringArrayEditor.jsx
deleted file mode 100644
index 8f06ae561..000000000
--- a/client/homebrew/editor/stringArrayEditor/stringArrayEditor.jsx
+++ /dev/null
@@ -1,149 +0,0 @@
-const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
-
-const StringArrayEditor = createClass({
- displayName : 'StringArrayEditor',
- getDefaultProps : function() {
- return {
- label : '',
- values : [],
- valuePatterns : null,
- validators : [],
- placeholder : '',
- notes : [],
- unique : false,
- cannotEdit : [],
- onChange : ()=>{}
- };
- },
-
- getInitialState : function() {
- return {
- valueContext : !!this.props.values ? this.props.values.map((value)=>({
- value,
- editing : false
- })) : [],
- temporaryValue : '',
- updateValue : ''
- };
- },
-
- componentDidUpdate : function(prevProps) {
- if(!_.eq(this.props.values, prevProps.values)) {
- this.setState({
- valueContext : this.props.values ? this.props.values.map((newValue)=>({
- value : newValue,
- editing : this.state.valueContext.find(({ value })=>value === newValue)?.editing || false
- })) : []
- });
- }
- },
-
- handleChange : function(value) {
- this.props.onChange({
- target : {
- value
- }
- });
- },
-
- addValue : function(value){
- this.handleChange(_.uniq([...this.props.values, value]));
- this.setState({
- temporaryValue : ''
- });
- },
-
- removeValue : function(index){
- this.handleChange(this.props.values.filter((_, i)=>i !== index));
- },
-
- updateValue : function(value, index){
- const valueContext = this.state.valueContext;
- valueContext[index].value = value;
- valueContext[index].editing = false;
- this.handleChange(valueContext.map((context)=>context.value));
- this.setState({ valueContext, updateValue: '' });
- },
-
- editValue : function(index){
- if(!!this.props.cannotEdit && this.props.cannotEdit.includes(this.props.values[index])) {
- return;
- }
- const valueContext = this.state.valueContext.map((context, i)=>{
- context.editing = index === i;
- return context;
- });
- this.setState({ valueContext, updateValue: this.props.values[index] });
- },
-
- valueIsValid : function(value, index) {
- const values = _.clone(this.props.values);
- if(index !== undefined) {
- values.splice(index, 1);
- }
- const matchesPatterns = !this.props.valuePatterns || this.props.valuePatterns.some((pattern)=>!!(value || '').match(pattern));
- const uniqueIfSet = !this.props.unique || !values.includes(value);
- const passesValidators = !this.props.validators || this.props.validators.every((validator)=>validator(value));
- return matchesPatterns && uniqueIfSet && passesValidators;
- },
-
- handleValueInputKeyDown : function(event, index) {
- if(event.key === 'Enter') {
- if(this.valueIsValid(event.target.value, index)) {
- if(index !== undefined) {
- this.updateValue(event.target.value, index);
- } else {
- this.addValue(event.target.value);
- }
- }
- } else if(event.key === 'Escape') {
- this.closeEditInput(index);
- }
- },
-
- closeEditInput : function(index) {
- const valueContext = this.state.valueContext;
- valueContext[index].editing = false;
- this.setState({ valueContext, updateValue: '' });
- },
-
- render : function() {
- const valueElements = Object.values(this.state.valueContext).map((context, i)=>context.editing
- ?
-
-
this.handleValueInputKeyDown(e, i)}
- onChange={(e)=>this.setState({ updateValue: e.target.value })}/>
- {
{ e.stopPropagation(); this.closeEditInput(i); }}>
}
- {this.valueIsValid(this.state.updateValue, i) ?
{ e.stopPropagation(); this.updateValue(this.state.updateValue, i); }}>
: null}
-
-
- :
this.editValue(i)}>{context.value}
- {!!this.props.cannotEdit && this.props.cannotEdit.includes(context.value) ? null :
{ e.stopPropagation(); this.removeValue(i); }}>
}
-
- );
-
- return
-
{this.props.label}
-
-
- {valueElements}
-
-
this.handleValueInputKeyDown(e)}
- onChange={(e)=>this.setState({ temporaryValue: e.target.value })}/>
- {this.valueIsValid(this.state.temporaryValue) ?
{ e.stopPropagation(); this.addValue(this.state.temporaryValue); }}>
: null}
-
-
-
- {this.props.notes ? this.props.notes.map((n, index)=>
{n}
) : null}
-
-
;
- }
-});
-
-module.exports = StringArrayEditor;
\ No newline at end of file
diff --git a/client/homebrew/editor/tagInput/tagInput.jsx b/client/homebrew/editor/tagInput/tagInput.jsx
new file mode 100644
index 000000000..d60e23b1b
--- /dev/null
+++ b/client/homebrew/editor/tagInput/tagInput.jsx
@@ -0,0 +1,105 @@
+require('./tagInput.less');
+const React = require('react');
+const { useState, useEffect } = React;
+const _ = require('lodash');
+
+const TagInput = ({ unique = true, values = [], ...props })=>{
+ const [tempInputText, setTempInputText] = useState('');
+ const [tagList, setTagList] = useState(values.map((value)=>({ value, editing: false })));
+
+ useEffect(()=>{
+ handleChange(tagList.map((context)=>context.value));
+ }, [tagList]);
+
+ const handleChange = (value)=>{
+ props.onChange({
+ target : { value }
+ });
+ };
+
+ const handleInputKeyDown = ({ evt, value, index, options = {} })=>{
+ if(_.includes(['Enter', ','], evt.key)) {
+ evt.preventDefault();
+ submitTag(evt.target.value, value, index);
+ if(options.clear) {
+ setTempInputText('');
+ }
+ }
+ };
+
+ const submitTag = (newValue, originalValue, index)=>{
+ setTagList((prevContext)=>{
+ // remove existing tag
+ if(newValue === null){
+ return [...prevContext].filter((context, i)=>i !== index);
+ }
+ // add new tag
+ if(originalValue === null){
+ return [...prevContext, { value: newValue, editing: false }];
+ }
+ // update existing tag
+ return prevContext.map((context, i)=>{
+ if(i === index) {
+ return { ...context, value: newValue, editing: false };
+ }
+ return context;
+ });
+ });
+ };
+
+ const editTag = (index)=>{
+ setTagList((prevContext)=>{
+ return prevContext.map((context, i)=>{
+ if(i === index) {
+ return { ...context, editing: true };
+ }
+ return { ...context, editing: false };
+ });
+ });
+ };
+
+ const renderReadTag = (context, index)=>{
+ return (
+
editTag(index)}>
+ {context.value}
+ {evt.stopPropagation(); submitTag(null, context.value, index);}}>
+
+ );
+ };
+
+ const renderWriteTag = (context, index)=>{
+ return (
+
handleInputKeyDown({ evt, value: context.value, index: index })}
+ autoFocus
+ />
+ );
+ };
+
+ return (
+
+
{props.label}
+
+
+ {tagList.map((context, index)=>{ return context.editing ? renderWriteTag(context, index) : renderReadTag(context, index); })}
+
+
+
setTempInputText(e.target.value)}
+ onKeyDown={(evt)=>handleInputKeyDown({ evt, value: null, options: { clear: true } })}
+ />
+
+
+ );
+};
+
+module.exports = TagInput;
diff --git a/client/homebrew/editor/tagInput/tagInput.less b/client/homebrew/editor/tagInput/tagInput.less
new file mode 100644
index 000000000..e69de29bb
diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx
index 2489bc1ca..a6b4b9175 100644
--- a/client/homebrew/homebrew.jsx
+++ b/client/homebrew/homebrew.jsx
@@ -1,88 +1,75 @@
-require('./homebrew.less');
-const React = require('react');
-const createClass = require('create-react-class');
-const { StaticRouter:Router } = require('react-router-dom/server');
-const { Route, Routes, useParams, useSearchParams } = require('react-router-dom');
+/* eslint-disable camelcase */
+import 'core-js/es/string/to-well-formed.js'; //Polyfill for older browsers
+import './homebrew.less';
+import React from 'react';
+import { StaticRouter as Router, Route, Routes, useParams, useSearchParams } from 'react-router';
-const HomePage = require('./pages/homePage/homePage.jsx');
-const EditPage = require('./pages/editPage/editPage.jsx');
-const UserPage = require('./pages/userPage/userPage.jsx');
-const SharePage = require('./pages/sharePage/sharePage.jsx');
-const NewPage = require('./pages/newPage/newPage.jsx');
-const ErrorPage = require('./pages/errorPage/errorPage.jsx');
-const AccountPage = require('./pages/accountPage/accountPage.jsx');
+import HomePage from './pages/homePage/homePage.jsx';
+import EditPage from './pages/editPage/editPage.jsx';
+import UserPage from './pages/userPage/userPage.jsx';
+import SharePage from './pages/sharePage/sharePage.jsx';
+import NewPage from './pages/newPage/newPage.jsx';
+import ErrorPage from './pages/errorPage/errorPage.jsx';
+import VaultPage from './pages/vaultPage/vaultPage.jsx';
+import AccountPage from './pages/accountPage/accountPage.jsx';
-const WithRoute = (props)=>{
+const WithRoute = ({ el: Element, ...rest })=>{
const params = useParams();
const [searchParams] = useSearchParams();
- const queryParams = {};
- for (const [key, value] of searchParams?.entries() || []) {
- queryParams[key] = value;
- }
- const Element = props.el;
- const allProps = {
- ...props,
- ...params,
- query : queryParams,
- el : undefined
- };
- return
;
+ const queryParams = Object.fromEntries(searchParams?.entries() || []);
+
+ return
;
};
-const Homebrew = createClass({
- displayName : 'Homebrewery',
- getDefaultProps : function() {
- return {
- url : '',
- welcomeText : '',
- changelog : '',
- version : '0.0.0',
- account : null,
- enable_v3 : false,
- brew : {
- title : '',
- text : '',
- shareId : null,
- editId : null,
- createdAt : null,
- updatedAt : null,
- lang : ''
- }
- };
- },
+const Homebrew = (props)=>{
+ const {
+ url = '',
+ version = '0.0.0',
+ account = null,
+ enable_v3 = false,
+ enable_themes,
+ config,
+ brew = {
+ title : '',
+ text : '',
+ shareId : null,
+ editId : null,
+ createdAt : null,
+ updatedAt : null,
+ lang : ''
+ },
+ userThemes,
+ brews
+ } = props;
- getInitialState : function() {
- global.account = this.props.account;
- global.version = this.props.version;
- global.enable_v3 = this.props.enable_v3;
- global.enable_themes = this.props.enable_themes;
- global.config = this.props.config;
+ global.account = account;
+ global.version = version;
+ global.enable_v3 = enable_v3;
+ global.enable_themes = enable_themes;
+ global.config = config;
- return {};
- },
-
- render : function (){
- return (
-
-
-
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
-
-
-
- );
- }
-});
+ return (
+
+
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ }/>
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+
+
+
+ );
+};
module.exports = Homebrew;
\ No newline at end of file
diff --git a/client/homebrew/homebrew.less b/client/homebrew/homebrew.less
index 828de796f..e265c2941 100644
--- a/client/homebrew/homebrew.less
+++ b/client/homebrew/homebrew.less
@@ -1,36 +1,32 @@
@import 'naturalcrit/styles/core.less';
-.homebrew{
+.homebrew {
height : 100%;
- .sitePage{
+ .sitePage {
display : flex;
- height : 100%;
- background-color : @steel;
flex-direction : column;
+ height : 100%;
overflow-y : hidden;
- .content{
+ background-color : @steel;
+ .content {
position : relative;
- height : calc(~"100% - 29px"); //Navbar height
flex : auto;
+ height : calc(~'100% - 29px'); //Navbar height
overflow-y : hidden;
}
&.listPage .content {
overflow-y : scroll;
&::-webkit-scrollbar {
- width: 20px;
- &:horizontal{
- height: 20px;
- width:auto;
+ width : 20px;
+ &:horizontal {
+ width : auto;
+ height : 20px;
}
&-thumb {
- background: linear-gradient(90deg, #d3c1af 15px, #00000000 15px);
- &:horizontal{
- background: linear-gradient(0deg, #d3c1af 15px, #00000000 15px);
- }
- }
- &-corner {
- visibility: hidden;
+ background : linear-gradient(90deg, #D3C1AF 15px, #00000000 15px);
+ &:horizontal { background : linear-gradient(0deg, #D3C1AF 15px, #00000000 15px); }
}
+ &-corner { visibility : hidden; }
}
}
}
diff --git a/client/homebrew/navbar/editTitle.navitem.jsx b/client/homebrew/navbar/editTitle.navitem.jsx
deleted file mode 100644
index 94ae5d0b0..000000000
--- a/client/homebrew/navbar/editTitle.navitem.jsx
+++ /dev/null
@@ -1,34 +0,0 @@
-const React = require('react');
-const createClass = require('create-react-class');
-const cx = require('classnames');
-const Nav = require('naturalcrit/nav/nav.jsx');
-
-const MAX_TITLE_LENGTH = 50;
-
-
-const EditTitle = createClass({
- displayName : 'EditTitleNavItem',
- getDefaultProps : function() {
- return {
- title : '',
- onChange : function(){}
- };
- },
-
- handleChange : function(e){
- if(e.target.value.length > MAX_TITLE_LENGTH) return;
- this.props.onChange(e.target.value);
- },
- render : function(){
- return
-
-
- = MAX_TITLE_LENGTH })}>
- {this.props.title.length}/{MAX_TITLE_LENGTH}
-
- ;
- },
-
-});
-
-module.exports = EditTitle;
diff --git a/client/homebrew/navbar/error-navitem.jsx b/client/homebrew/navbar/error-navitem.jsx
index 59e05a253..ec72ace7d 100644
--- a/client/homebrew/navbar/error-navitem.jsx
+++ b/client/homebrew/navbar/error-navitem.jsx
@@ -23,14 +23,15 @@ const ErrorNavItem = createClass({
const error = this.props.error;
const response = error.response;
- const status = response.status;
- const HBErrorCode = response.body?.HBErrorCode;
- const message = response.body?.message;
+ const status = response?.status;
+ const errorCode = error.code
+ const HBErrorCode = response?.body?.HBErrorCode;
+ const message = response?.body?.message;
let errMsg = '';
try {
errMsg += `${error.toString()}\n\n`;
errMsg += `\`\`\`\n${error.stack}\n`;
- errMsg += `${JSON.stringify(response.error, null, ' ')}\n\`\`\``;
+ errMsg += `${JSON.stringify(response?.error, null, ' ')}\n\`\`\``;
console.log(errMsg);
} catch (e){}
@@ -73,7 +74,7 @@ const ErrorNavItem = createClass({
;
}
- if(response.body?.errors?.[0].reason == 'storageQuotaExceeded') {
+ if(response?.body?.errors?.[0].reason == 'storageQuotaExceeded') {
return
Oops!
@@ -82,7 +83,7 @@ const ErrorNavItem = createClass({
;
}
- if(response.req.url.match(/^\/api.*Google.*$/m)){
+ if(response?.req.url.match(/^\/api.*Google.*$/m)){
return
Oops!
@@ -104,6 +105,43 @@ const ErrorNavItem = createClass({
;
}
+ if(HBErrorCode === '09') {
+ return
+ Oops!
+
+ Looks like there was a problem retreiving
+ the theme, or a theme that it inherits,
+ for this brew. Verify that brew
+ {response.body.brewId} still exists!
+
+ ;
+ }
+
+ if(HBErrorCode === '10') {
+ return
+ Oops!
+
+ Looks like the brew you have selected
+ as a theme is not tagged for use as a
+ theme. Verify that
+ brew
+ {response.body.brewId} has the
meta:theme tag!
+
+ ;
+ }
+
+ if(errorCode === 'ECONNABORTED') {
+ return
+ Oops!
+
+ The request to the server was interrupted or timed out.
+ This can happen due to a network issue, or if
+ trying to save a particularly large brew.
+ Please check your internet connection and try again.
+
+ ;
+ }
+
return
Oops!
diff --git a/client/homebrew/navbar/error-navitem.less b/client/homebrew/navbar/error-navitem.less
index 7e7dab772..637ddac95 100644
--- a/client/homebrew/navbar/error-navitem.less
+++ b/client/homebrew/navbar/error-navitem.less
@@ -1,75 +1,70 @@
.navItem.error {
- position : relative;
- background-color : @red;
+ position : relative;
+ background-color : @red;
}
-.errorContainer{
- animation-name: glideDown;
- animation-duration: 0.4s;
- position : absolute;
- top : 100%;
- left : 50%;
- z-index : 1000;
- width : 140px;
- padding : 3px;
- color : white;
- background-color : #333;
- border : 3px solid #444;
- border-radius : 5px;
- transform : translate(-50% + 3px, 10px);
- text-align : center;
- font-size : 10px;
- font-weight : 800;
- text-transform : uppercase;
- a{
- color : @teal;
- }
- &:before {
- content: "";
- width: 0px;
- height: 0px;
- position: absolute;
- border-left: 10px solid transparent;
- border-right: 10px solid transparent;
- border-top: 10px solid transparent;
- border-bottom: 10px solid #444;
- left: 53px;
- top: -23px;
- }
- &:after {
- content: "";
- width: 0px;
- height: 0px;
- position: absolute;
- border-left: 10px solid transparent;
- border-right: 10px solid transparent;
- border-top: 10px solid transparent;
- border-bottom: 10px solid #333;
- left: 53px;
- top: -19px;
- }
- .deny {
- width : 48%;
- margin : 1px;
- padding : 5px;
- background-color : #333;
- display : inline-block;
- border-left : 1px solid #666;
- .animate(background-color);
- &:hover{
- background-color : red;
- }
- }
- .confirm {
- width : 48%;
- margin : 1px;
- padding : 5px;
- background-color : #333;
- display : inline-block;
- color : white;
- .animate(background-color);
- &:hover{
- background-color : teal;
- }
- }
+.errorContainer {
+ position : absolute;
+ top : 100%;
+ left : 50%;
+ z-index : 1000;
+ width : 140px;
+ padding : 3px;
+ font-size : 10px;
+ font-weight : 800;
+ color : white;
+ text-align : center;
+ text-transform : uppercase;
+ background-color : #333333;
+ border : 3px solid #444444;
+ border-radius : 5px;
+ transform : translate(-50% + 3px, 10px);
+ animation-name : glideDown;
+ animation-duration : 0.4s;
+ .lowercase { text-transform : none; }
+ a { color : @teal; }
+ &::before {
+ position : absolute;
+ top : -23px;
+ left : 53px;
+ width : 0px;
+ height : 0px;
+ content : '';
+ border-top : 10px solid transparent;
+ border-right : 10px solid transparent;
+ border-bottom : 10px solid #444444;
+ border-left : 10px solid transparent;
+ }
+ &::after {
+ position : absolute;
+ top : -19px;
+ left : 53px;
+ width : 0px;
+ height : 0px;
+ content : '';
+ border-top : 10px solid transparent;
+ border-right : 10px solid transparent;
+ border-bottom : 10px solid #333333;
+ border-left : 10px solid transparent;
+ }
+ .deny {
+ display : inline-block;
+ width : 48%;
+ padding : 5px;
+ margin : 1px;
+ background-color : #333333;
+ border-left : 1px solid #666666;
+ .animate(background-color);
+ &:hover { background-color : red; }
+ }
+ .confirm {
+ display : inline-block;
+ width : 48%;
+ padding : 5px;
+ margin : 1px;
+ color : white;
+ background-color : #333333;
+ .animate(background-color);
+ &:hover { background-color : teal; }
+ }
}
diff --git a/client/homebrew/navbar/navbar.less b/client/homebrew/navbar/navbar.less
index d0f2f77e8..aa233d631 100644
--- a/client/homebrew/navbar/navbar.less
+++ b/client/homebrew/navbar/navbar.less
@@ -1,6 +1,7 @@
@import 'naturalcrit/styles/colors.less';
@navbarHeight : 28px;
+@viewerToolsHeight : 32px;
@keyframes pinkColoring {
0% { color : pink; }
@@ -23,17 +24,21 @@
}
.homebrew nav {
+ position : relative;
+ z-index : 2;
+ display : flex;
+ justify-content : space-between;
background-color : #333333;
- .navContent {
- position : relative;
- z-index : 2;
- display : flex;
- justify-content : space-between;
- }
+
.navSection {
display : flex;
align-items : center;
&:last-child .navItem { border-left : 1px solid #666666; }
+
+ &:has(.brewTitle) {
+ flex-grow : 1;
+ min-width : 300px;
+ }
}
// "NaturalCrit" logo
.navLogo {
@@ -68,13 +73,17 @@
.navItem {
#backgroundColorsHover;
.animate(background-color);
+ display : flex;
+ align-items : center;
+ justify-content : center;
+ height : 100%;
padding : 8px 12px;
font-size : 10px;
font-weight : 800;
line-height : 13px;
color : white;
- text-decoration : none;
text-transform : uppercase;
+ text-decoration : none;
cursor : pointer;
background-color : #333333;
i {
@@ -93,39 +102,20 @@
animation-duration : 2s;
}
}
- &.editTitle { // this is not needed at all currently - you used to be able to edit the title via the navbar.
- padding : 2px 12px;
- input {
- width : 250px;
- padding : 2px;
- margin : 0;
- font-family : 'Open Sans', sans-serif;
- font-size : 12px;
- font-weight : 800;
- color : white;
- text-align : center;
- background-color : transparent;
- border : 1px solid @blue;
- outline : none;
- }
- .charCount {
- display : inline-block;
- margin-left : 8px;
- color : #666666;
- text-align : right;
- vertical-align : bottom;
- &.max { color : @red; }
- }
- }
&.brewTitle {
- flex-grow : 1;
+ display : block;
+ width : 100%;
+ overflow : hidden;
+ text-overflow : ellipsis;
font-size : 12px;
font-weight : 800;
color : white;
text-align : center;
- text-transform : initial;
- background-color : transparent;
+ text-transform : initial;
+ white-space : nowrap;
+ background-color : transparent;
}
+
// "The Homebrewery" logo
&.homebrewLogo {
.animate(color);
@@ -180,16 +170,16 @@
h4 {
box-sizing : border-box;
display : block;
- flex-basis : 20%;
flex-grow : 1;
+ flex-basis : 20%;
min-width : 76px;
padding : 5px 0;
color : #BBBBBB;
text-align : center;
}
p {
- flex-basis : 80%;
flex-grow : 1;
+ flex-basis : 80%;
padding : 5px 0;
font-family : 'Open Sans', sans-serif;
font-size : 10px;
@@ -225,10 +215,10 @@
z-index : 10000;
box-sizing : border-box;
display : block;
+ visibility : hidden;
width : 100%;
padding : 13px 5px;
text-align : center;
- visibility : hidden;
background-color : #333333;
}
}
@@ -239,23 +229,25 @@
}
.navDropdownContainer {
position : relative;
+ height : 100%;
+
.navDropdown {
- position: absolute;
- top: 28px;
- right: 0px;
- z-index: 10000;
- width: max-content;
- min-width:100%;
- max-height: calc(100vh - 28px);
- overflow: hidden auto;
- display: flex;
- flex-direction: column;
- align-items: flex-end;
+ position : absolute;
+ //top: 28px;
+ right : 0px;
+ z-index : 10000;
+ display : flex;
+ flex-direction : column;
+ align-items : flex-end;
+ width : max-content;
+ min-width : 100%;
+ max-height : calc(100vh - 28px);
+ overflow : hidden auto;
.navItem {
position : relative;
display : flex;
- justify-content : space-between;
align-items : center;
+ justify-content : space-between;
width : 100%;
border : 1px solid #888888;
border-bottom : 0;
@@ -277,10 +269,10 @@
overflow : hidden auto;
color : white;
text-decoration : none;
- background-color : #333333;
- border-top : 1px solid #888888;
scrollbar-color : #666666 #333333;
scrollbar-width : thin;
+ background-color : #333333;
+ border-top : 1px solid #888888;
.clear {
position : absolute;
top : 50%;
diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx
index 30d53c675..ccade4e8b 100644
--- a/client/homebrew/navbar/newbrew.navitem.jsx
+++ b/client/homebrew/navbar/newbrew.navitem.jsx
@@ -5,33 +5,45 @@ const { splitTextStyleAndMetadata } = require('../../../shared/helpers.js'); //
const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style';
-const METAKEY = 'homebrewery-new-meta';
+const METAKEY = 'homebrewery-new-meta';
const NewBrew = ()=>{
const handleFileChange = (e)=>{
const file = e.target.files[0];
- if(file) {
- const reader = new FileReader();
- reader.onload = (e)=>{
- const fileContent = e.target.result;
- const newBrew = {
- text : fileContent,
- style : ''
- };
- if(fileContent.startsWith('```metadata')) {
- splitTextStyleAndMetadata(newBrew); // Modify newBrew directly
- localStorage.setItem(BREWKEY, newBrew.text);
- localStorage.setItem(STYLEKEY, newBrew.style);
- localStorage.setItem(METAKEY, JSON.stringify(_.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])));
- window.location.href = '/new';
- } else {
- alert('This file is invalid, please, enter a valid file');
- }
- };
- reader.readAsText(file);
- }
+ if(!file) return;
+
+ const currentNew = localStorage.getItem(BREWKEY);
+ if(currentNew && !confirm(
+ `You have some text in the new brew space, if you load a file that text will be lost, are you sure you want to load the file?`
+ )) return;
+
+ const reader = new FileReader();
+ reader.onload = (e)=>{
+ const fileContent = e.target.result;
+ const newBrew = { text: fileContent, style: '' };
+
+ if(fileContent.startsWith('```metadata')) {
+ splitTextStyleAndMetadata(newBrew);
+ localStorage.setItem(BREWKEY, newBrew.text);
+ localStorage.setItem(STYLEKEY, newBrew.style);
+ localStorage.setItem(METAKEY, JSON.stringify(
+ _.pick(newBrew, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])
+ ));
+ window.location.href = '/new';
+ return;
+ }
+
+ const type = file.name.split('.').pop().toLowerCase();
+
+ alert(`This file is invalid: ${!type ? "Missing file extension" :`.${type} files are not supported`}. Only .txt files exported from the Homebrewery are allowed.`);
+
+
+ console.log(file);
+ };
+ reader.readAsText(file);
};
+
return (
{
@@ -51,7 +51,7 @@ const RecentItems = createClass({
}
if(this.props.storageKey == 'view'){
let shareId = this.props.brew.shareId;
- if(this.props.brew.googleId){
+ if(this.props.brew.googleId && !this.props.brew.stubbed){
shareId = `${this.props.brew.googleId}${this.props.brew.shareId}`;
}
viewed = _.filter(viewed, (brew)=>{
@@ -83,7 +83,7 @@ const RecentItems = createClass({
let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]');
if(this.props.storageKey == 'edit') {
let prevEditId = prevProps.brew.editId;
- if(prevProps.brew.googleId){
+ if(prevProps.brew.googleId && !this.props.brew.stubbed){
prevEditId = `${prevProps.brew.googleId}${prevProps.brew.editId}`;
}
@@ -91,7 +91,7 @@ const RecentItems = createClass({
return brew.id !== prevEditId;
});
let editId = this.props.brew.editId;
- if(this.props.brew.googleId){
+ if(this.props.brew.googleId && !this.props.brew.stubbed){
editId = `${this.props.brew.googleId}${this.props.brew.editId}`;
}
edited.unshift({
diff --git a/client/homebrew/navbar/reddit.navitem.jsx b/client/homebrew/navbar/reddit.navitem.jsx
deleted file mode 100644
index 1d9f95604..000000000
--- a/client/homebrew/navbar/reddit.navitem.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-const React = require('react');
-const createClass = require('create-react-class');
-const Nav = require('naturalcrit/nav/nav.jsx');
-
-const MAIN_URL = 'https://www.reddit.com/r/UnearthedArcana/submit?selftext=true';
-
-
-const RedditShare = createClass({
- displayName : 'RedditShareNavItem',
- getDefaultProps : function() {
- return {
- brew : {
- title : '',
- sharedId : '',
- text : ''
- }
- };
- },
-
- getText : function(){
-
- },
-
-
- handleClick : function(){
- const url = [
- MAIN_URL,
- `title=${encodeURIComponent(this.props.brew.title ? this.props.brew.title : 'Check out my brew!')}`,
- `text=${encodeURIComponent(this.props.brew.text)}`
- ].join('&');
-
- window.open(url, '_blank');
- },
-
-
- render : function(){
- return
- share on reddit
- ;
- },
-
-});
-
-module.exports = RedditShare;
diff --git a/client/homebrew/navbar/vault.navitem.jsx b/client/homebrew/navbar/vault.navitem.jsx
new file mode 100644
index 000000000..087297011
--- /dev/null
+++ b/client/homebrew/navbar/vault.navitem.jsx
@@ -0,0 +1,17 @@
+const React = require('react');
+
+const Nav = require('naturalcrit/nav/nav.jsx');
+
+module.exports = function (props) {
+ return (
+
+ Vault
+
+ );
+};
diff --git a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx
index bf0624f1c..b4c455b88 100644
--- a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx
+++ b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx
@@ -1,177 +1,179 @@
require('./brewItem.less');
const React = require('react');
-const createClass = require('create-react-class');
+const { useCallback } = React;
const moment = require('moment');
-const request = require('../../../../utils/request-middleware.js');
+import request from '../../../../utils/request-middleware.js';
const googleDriveIcon = require('../../../../googleDrive.svg');
-const homebreweryIcon = require('../../../../thumbnail.png');
+const homebreweryIcon = require('../../../../thumbnail.svg');
const dedent = require('dedent-tabs').default;
-const BrewItem = createClass({
- displayName : 'BrewItem',
- getDefaultProps : function() {
- return {
- brew : {
- title : '',
- description : '',
- authors : [],
- stubbed : true
- },
- updateListFilter : ()=>{},
- reportError : ()=>{}
- };
+const BrewItem = ({
+ brew = {
+ title : '',
+ description : '',
+ authors : [],
+ stubbed : true,
},
+ updateListFilter = ()=>{},
+ reportError = ()=>{},
+ renderStorage = true,
+})=>{
- deleteBrew : function(){
- if(this.props.brew.authors.length <= 1){
- if(!confirm('Are you sure you want to delete this brew? Because you are the only owner of this brew, the document will be deleted permanently.')) return;
- if(!confirm('Are you REALLY sure? You will not be able to recover the document.')) return;
+ const deleteBrew = useCallback(()=>{
+ if(brew.authors.length <= 1) {
+ if(!window.confirm('Are you sure you want to delete this brew? Because you are the only owner of this brew, the document will be deleted permanently.')) return;
+ if(!window.confirm('Are you REALLY sure? You will not be able to recover the document.')) return;
} else {
- if(!confirm('Are you sure you want to remove this brew from your collection? This will remove you as an editor, but other owners will still be able to access the document.')) return;
- if(!confirm('Are you REALLY sure? You will lose editor access to this document.')) return;
+ if(!window.confirm('Are you sure you want to remove this brew from your collection? This will remove you as an editor, but other owners will still be able to access the document.')) return;
+ if(!window.confirm('Are you REALLY sure? You will lose editor access to this document.')) return;
}
- request.delete(`/api/${this.props.brew.googleId ?? ''}${this.props.brew.editId}`)
- .send()
- .end((err, res)=>{
- if(err) {
- this.props.reportError(err);
- } else {
- location.reload();
- }
- });
- },
+ request.delete(`/api/${brew.googleId ?? ''}${brew.editId}`).send().end((err, res)=>{
+ if(err) reportError(err); else window.location.reload();
+ });
+ }, [brew, reportError]);
- updateFilter : function(type, term){
- this.props.updateListFilter(type, term);
- },
+ const updateFilter = useCallback((type, term)=>updateListFilter(type, term), [updateListFilter]);
- renderDeleteBrewLink : function(){
- if(!this.props.brew.editId) return;
+ const renderDeleteBrewLink = ()=>{
+ if(!brew.editId) return null;
- return
-
- ;
- },
+ return (
+
+
+
+ );
+ };
- renderEditLink : function(){
- if(!this.props.brew.editId) return;
+ const renderEditLink = ()=>{
+ if(!brew.editId) return null;
- let editLink = this.props.brew.editId;
- if(this.props.brew.googleId && !this.props.brew.stubbed) {
- editLink = this.props.brew.googleId + editLink;
+ let editLink = brew.editId;
+ if(brew.googleId && !brew.stubbed) editLink = brew.googleId + editLink;
+
+ return (
+
+
+
+ );
+ };
+
+ const renderShareLink = ()=>{
+ if(!brew.shareId) return null;
+
+ let shareLink = brew.shareId;
+ if(brew.googleId && !brew.stubbed) {
+ shareLink = brew.googleId + shareLink;
}
- return
-
- ;
- },
+ return (
+
+
+
+ );
+ };
- renderShareLink : function(){
- if(!this.props.brew.shareId) return;
+ const renderDownloadLink = ()=>{
+ if(!brew.shareId) return null;
- let shareLink = this.props.brew.shareId;
- if(this.props.brew.googleId && !this.props.brew.stubbed) {
- shareLink = this.props.brew.googleId + shareLink;
+ let shareLink = brew.shareId;
+ if(brew.googleId && !brew.stubbed) {
+ shareLink = brew.googleId + shareLink;
}
- return
-
- ;
- },
+ return (
+
+
+
+ );
+ };
- renderDownloadLink : function(){
- if(!this.props.brew.shareId) return;
-
- let shareLink = this.props.brew.shareId;
- if(this.props.brew.googleId && !this.props.brew.stubbed) {
- shareLink = this.props.brew.googleId + shareLink;
+ const renderStorageIcon = ()=>{
+ if(!renderStorage) return null;
+ if(brew.googleId) {
+ return (
+
+
+
+
+
+ );
}
- return
-
- ;
- },
+ return (
+
+
+
+ );
+ };
- renderStorageIcon : function(){
- if(this.props.brew.googleId) {
- return
-
-
-
- ;
- }
+ if(Array.isArray(brew.tags)) {
+ brew.tags = brew.tags?.filter((tag)=>tag); // remove tags that are empty strings
+ brew.tags.sort((a, b)=>{
+ return a.indexOf(':') - b.indexOf(':') !== 0 ? a.indexOf(':') - b.indexOf(':') : a.toLowerCase().localeCompare(b.toLowerCase());
+ });
+ }
- return
-
- ;
- },
+ const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
- render : function(){
- const brew = this.props.brew;
- if(Array.isArray(brew.tags)) { // temporary fix until dud tags are cleaned
- brew.tags = brew.tags?.filter((tag)=>tag); //remove tags that are empty strings
- brew.tags.sort((a, b)=>{
- return a.indexOf(':') - b.indexOf(':') != 0 ? a.indexOf(':') - b.indexOf(':') : a.toLowerCase().localeCompare(b.toLowerCase());
- });
- }
- const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
-
- return
- {brew.thumbnail &&
-
-
- }
+ return (
+
+ {brew.thumbnail &&
}
{brew.title}
{brew.description}
-
- {brew.tags?.length ? <>
+ {brew.tags?.length ? (
-
+
{brew.tags.map((tag, idx)=>{
const matches = tag.match(/^(?:([^:]+):)?([^:]+)$/);
- return {this.updateFilter(tag);}}>{matches[2]} ;
+ return updateFilter(tag)}>{matches[2]} ;
})}
- > : <>>
- }
+ ) : null}
- {brew.authors?.map((author, index)=>(
- <>
- {author}
- {index < brew.authors.length - 1 && ', '}
- >))}
+ {' '}
+ {brew.authors?.map((author, index)=>(
+
+ {author === 'hidden' ? (
+
+ {author}
+
+ ) : ({author} )}
+ {index < brew.authors.length - 1 && ', '}
+
+ ))}
- {brew.views}
+ {brew.views}
- {brew.pageCount &&
+ {brew.pageCount && (
{brew.pageCount}
- }
-
+ )}
+
{moment(brew.updatedAt).fromNow()}
- {this.renderStorageIcon()}
+ {renderStorageIcon()}
- {this.renderShareLink()}
- {this.renderEditLink()}
- {this.renderDownloadLink()}
- {this.renderDeleteBrewLink()}
+ {renderShareLink()}
+ {renderEditLink()}
+ {renderDownloadLink()}
+ {renderDeleteBrewLink()}
-
;
- }
-});
+
+ );
+};
module.exports = BrewItem;
diff --git a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.less b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.less
index a3c17215e..d335f3ca9 100644
--- a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.less
+++ b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.less
@@ -1,148 +1,129 @@
-.brewItem{
+.brewItem {
position : relative;
+ box-sizing : border-box;
display : inline-block;
- vertical-align : top;
- box-sizing : border-box;
- box-sizing : border-box;
- overflow : hidden;
width : 48%;
min-height : 105px;
- margin-right : 15px;
- margin-bottom : 15px;
padding : 5px 15px 2px 6px;
padding-right : 15px;
- border : 1px solid #c9ad6a;
+ margin-right : 15px;
+ margin-bottom : 15px;
+ overflow : hidden;
+ vertical-align : top;
+ background-color : #CAB2802E;
+ border : 1px solid #C9AD6A;
border-radius : 5px;
+ box-shadow : 0px 4px 5px 0px #333333;
+ break-inside : avoid;
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
- break-inside : avoid;
- box-shadow : 0px 4px 5px 0px #333;
- background-color : #cab2802e;
- .thumbnail {
- position: absolute;
- width: 150px;
- height: 100%;
- top: 0;
- right: 0;
- z-index: -1;
- background-size: contain;
- background-repeat: no-repeat;
- background-position: right top;
- mask-image: linear-gradient(80deg, #0000 20%, #050 40%);
- -webkit-mask-image: linear-gradient(80deg, #0000 20%, #050 40%);
- opacity: 50%;
+ .thumbnail {
+ position : absolute;
+ top : 0;
+ right : 0;
+ z-index : -1;
+ width : 150px;
+ height : 100%;
+ background-repeat : no-repeat;
+ background-position : right top;
+ background-size : contain;
+ opacity : 50%;
+ -webkit-mask-image : linear-gradient(80deg, #00000000 20%, #005500 40%);
+ mask-image : linear-gradient(80deg, #00000000 20%, #005500 40%);
}
.text {
min-height : 54px;
- h4{
+ h4 {
margin-bottom : 5px;
font-size : 2.2em;
}
}
- .info{
- position: initial;
- bottom: 2px;
- font-family : ScalySansRemake;
+ .info {
+ position : initial;
+ bottom : 2px;
+ font-family : "ScalySansRemake";
font-size : 1.2em;
- &>span{
+ & > span {
margin-right : 12px;
line-height : 1.5em;
- a {
- color:inherit;
- }
+ a { color : inherit; }
}
}
.brewTags span {
- background-color: #c8ac6e3b;
- margin: 2px;
- padding: 2px;
- border: 1px solid #c8ac6e;
- border-radius: 4px;
- white-space: nowrap;
- display: inline-block;
- font-weight: bold;
- border-color: currentColor;
- cursor : pointer;
- &:before {
- font-family: 'Font Awesome 5 Free';
- font-size: 12px;
- margin-right: 3px;
+ display : inline-block;
+ padding : 2px;
+ margin : 2px;
+ font-weight : bold;
+ white-space : nowrap;
+ cursor : pointer;
+ background-color : #C8AC6E3B;
+ border : 1px solid #C8AC6E;
+ border-color : currentColor;
+ border-radius : 4px;
+ &::before {
+ margin-right : 3px;
+ font-family : 'Font Awesome 6 Free';
+ font-size : 12px;
}
&.type {
- background-color: #0080003b;
- color: #008000;
- &:before{
- content: '\f0ad';
- }
+ color : #008000;
+ background-color : #0080003B;
+ &::before { content : '\f0ad'; }
}
&.group {
- background-color: #5050503b;
- color: #000000;
- &:before{
- content: '\f500';
- }
+ color : #000000;
+ background-color : #5050503B;
+ &::before { content : '\f500'; }
}
&.meta {
- background-color: #0000803b;
- color: #000080;
- &:before{
- content: '\f05a';
- }
+ color : #000080;
+ background-color : #0000803B;
+ &::before { content : '\f05a'; }
}
&.system {
- background-color: #8000003b;
- color: #800000;
- &:before{
- content: '\f518';
- }
+ color : #800000;
+ background-color : #8000003B;
+ &::before { content : '\f518'; }
}
}
- &:hover{
- .links{
- opacity : 1;
- }
+ &:hover {
+ .links { opacity : 1; }
}
- &:nth-child(2n + 1){
- margin-right : 0px;
- }
- .links{
+ &:nth-child(2n + 1) { margin-right : 0px; }
+ .links {
.animate(opacity);
position : absolute;
top : 0px;
right : 0px;
- height : 100%;
width : 2em;
- opacity : 0;
- background-color : fade(black, 60%);
+ height : 100%;
text-align : center;
- a{
+ background-color : fade(black, 60%);
+ opacity : 0;
+ a {
.animate(opacity);
display : block;
margin : 8px 0px;
- opacity : 0.6;
font-size : 1.3em;
color : white;
text-decoration : unset;
- &:hover{
- opacity : 1;
- }
- i{
- cursor : pointer;
- }
+ opacity : 0.6;
+ &:hover { opacity : 1; }
+ i { cursor : pointer; }
}
}
.googleDriveIcon {
- height : 18px;
padding : 0px;
margin : -5px;
+ height : 18px;
}
.homebreweryIcon {
- mix-blend-mode : darken;
- height : 24px;
- position : relative;
- top : 5px;
- left : -5px;
+ position : relative;
+ padding : 0px;
+ top : 5px;
+ left : -7.5px;
+ height : 18px;
}
}
diff --git a/client/homebrew/pages/basePages/listPage/listPage.less b/client/homebrew/pages/basePages/listPage/listPage.less
index 0aa4a278d..e368dfac7 100644
--- a/client/homebrew/pages/basePages/listPage/listPage.less
+++ b/client/homebrew/pages/basePages/listPage/listPage.less
@@ -1,5 +1,5 @@
-.noColumns(){
+.noColumns() {
column-count : auto;
column-fill : auto;
column-gap : normal;
@@ -13,177 +13,151 @@
height : auto;
min-height : 279.4mm;
margin : 20px auto;
- contain : unset;
+ contain : unset;
}
-.listPage{
- .content{
+.listPage {
+ .content {
z-index : 1;
- .page{
+ .page {
.noColumns() !important; //Needed to override PHB Theme since this is on a lower @layer
- &::after{
- display : none;
- }
- .noBrews{
+ &::after { display : none; }
+ .noBrews {
margin : 10px 0px;
font-size : 1.3em;
font-style : italic;
}
.brewCollection {
- h1:hover{
- cursor: pointer;
- }
+ h1:hover { cursor : pointer; }
.active::before, .inactive::before {
- font-family: 'Font Awesome 5 Free';
- font-weight: 900;
- font-size: 0.6cm;
- padding-right: 0.5em;
- }
- .active {
- color: var(--HB_Color_HeaderText);
- }
- .active::before {
- content: '\f107';
- }
- .inactive {
- color: #707070;
- }
- .inactive::before {
- content: '\f105';
+ padding-right : 0.5em;
+ font-family : 'Font Awesome 6 Free';
+ font-size : 0.6cm;
+ font-weight : 900;
}
+ .active { color : var(--HB_Color_HeaderText); }
+ .active::before { content : '\f107'; }
+ .inactive { color : #707070; }
+ .inactive::before { content : '\f105'; }
}
}
}
.sort-container {
- font-family : 'Open Sans', sans-serif;
- position : sticky;
- top : 0;
- left : 0;
- width : 100%;
- height : 30px;
- background-color : #555;
- border-top : 1px solid #666;
- border-bottom : 1px solid #666;
- color : white;
- text-align : center;
- z-index : 1;
- display : flex;
- justify-content : center;
- align-items : baseline;
- column-gap : 15px;
- row-gap : 5px;
- flex-wrap : wrap;
- h6{
- text-transform : uppercase;
+ position : sticky;
+ top : 0;
+ left : 0;
+ z-index : 1;
+ display : flex;
+ flex-wrap : wrap;
+ row-gap : 5px;
+ column-gap : 15px;
+ align-items : baseline;
+ justify-content : center;
+ width : 100%;
+ height : 30px;
+ font-family : 'Open Sans', sans-serif;
+ color : white;
+ text-align : center;
+ background-color : #555555;
+ border-top : 1px solid #666666;
+ border-bottom : 1px solid #666666;
+ h6 {
font-family : 'Open Sans', sans-serif;
font-size : 11px;
font-weight : bold;
+ text-transform : uppercase;
}
.sort-option {
- display: flex;
- align-items: center;
- padding: 0 8px;
- color: #ccc;
- height: 100%;
+ display : flex;
+ align-items : center;
+ height : 100%;
+ padding : 0 8px;
+ color : #CCCCCC;
- &:hover{
- background-color : #444;
- }
+ &:hover { background-color : #444444; }
&.active {
- font-weight: bold;
- color: #ddd;
- background-color: #333;
+ font-weight : bold;
+ color : #DDDDDD;
+ background-color : #333333;
- button {
- color: white;
- font-weight: 800;
- height: 100%;
- & + .sortDir {
- padding-left: 5px;
+ button {
+ height : 100%;
+ font-weight : 800;
+ color : white;
+ & + .sortDir { padding-left : 5px; }
}
}
- }
}
.filter-option {
- margin-left: 20px;
- background-color : transparent !important;
+ margin-left : 20px;
font-size : 11px;
- i{
- padding-right : 5px;
- }
+ background-color : transparent !important;
+ i { padding-right : 5px; }
+ }
+ button {
+ padding : 0;
+ font-family : 'Open Sans', sans-serif;
+ font-size : 11px;
+ font-weight : normal;
+ color : #CCCCCC;
+ text-transform : uppercase;
+ background-color : transparent;
}
- button{
- background-color : transparent;
- font-family : 'Open Sans', sans-serif;
- text-transform : uppercase;
- font-weight : normal;
- font-size : 11px;
- color : #ccc;
- padding : 0;
- }
}
.tags-container {
- height : 30px;
- background-color : #555;
- border-top : 1px solid #666;
- border-bottom : 1px solid #666;
- color : white;
display : flex;
- justify-content : center;
- align-items : center;
- column-gap : 15px;
- row-gap : 5px;
flex-wrap : wrap;
+ row-gap : 5px;
+ column-gap : 15px;
+ align-items : center;
+ justify-content : center;
+ height : 30px;
+ color : white;
+ background-color : #555555;
+ border-top : 1px solid #666666;
+ border-bottom : 1px solid #666666;
span {
+ padding : 3px;
font-family : 'Open Sans', sans-serif;
font-size : 11px;
font-weight : bold;
+ color : #DFDFDF;
+ cursor : pointer;
border : 1px solid;
border-radius : 3px;
- padding : 3px;
- cursor : pointer;
- color: #dfdfdf;
- &:before {
- font-family: 'Font Awesome 5 Free';
- font-size: 12px;
- margin-right: 3px;
+ &::before {
+ margin-right : 3px;
+ font-family : 'Font Awesome 6 Free';
+ font-size : 12px;
}
- &:after {
- content: '\f00d';
- font-family: 'Font Awesome 5 Free';
- font-size: 12px;
- margin-left: 3px;
+ &::after {
+ margin-left : 3px;
+ font-family : 'Font Awesome 6 Free';
+ font-size : 12px;
+ content : '\f00d';
}
&.type {
- background-color: #008000;
- border-color: #00a000;
- &:before{
- content: '\f0ad';
- }
+ background-color : #008000;
+ border-color : #00A000;
+ &::before { content : '\f0ad'; }
}
&.group {
- background-color: #505050;
- border-color: #000000;
- &:before{
- content: '\f500';
- }
+ background-color : #505050;
+ border-color : #000000;
+ &::before { content : '\f500'; }
}
&.meta {
- background-color: #000080;
- border-color: #0000a0;
- &:before{
- content: '\f05a';
- }
+ background-color : #000080;
+ border-color : #0000A0;
+ &::before { content : '\f05a'; }
}
&.system {
- background-color: #800000;
- border-color: #a00000;
- &:before{
- content: '\f518';
- }
+ background-color : #800000;
+ border-color : #A00000;
+ &::before { content : '\f518'; }
}
}
}
diff --git a/client/homebrew/pages/basePages/uiPage/uiPage.less b/client/homebrew/pages/basePages/uiPage/uiPage.less
index 913c74a2e..f00b484c0 100644
--- a/client/homebrew/pages/basePages/uiPage/uiPage.less
+++ b/client/homebrew/pages/basePages/uiPage/uiPage.less
@@ -1,7 +1,7 @@
.homebrew {
.uiPage.sitePage {
.content {
- width : ~"min(90vw, 1000px)";
+ width : ~'min(90vw, 1000px)';
padding : 2% 4%;
margin-top : 25px;
margin-right : auto;
@@ -17,19 +17,20 @@
border : 2px solid black;
border-radius : 5px;
button {
+ width : 125px;
+ margin-right : 5px;
+ color : black;
background-color : transparent;
border : 1px solid black;
border-radius : 5px;
- width : 125px;
- color : black;
- margin-right : 5px;
&.active {
- background-color: #0007;
- color: white;
- &:before {
- content: '\f00c';
- font-family: 'FONT AWESOME 5 FREE';
- margin-right: 5px;
+ color : white;
+ background-color : #00000077;
+ &::before {
+ margin-right : 5px;
+ font-family : 'Font Awesome 6 Free';
+ font-weight : 900;
+ content : '\f00c';
}
}
}
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index 48d0f3fe5..d1f0ed21c 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -1,9 +1,13 @@
/* eslint-disable max-lines */
require('./editPage.less');
const React = require('react');
-const createClass = require('create-react-class');
const _ = require('lodash');
-const request = require('../../utils/request-middleware.js');
+const createClass = require('create-react-class');
+import {makePatches, applyPatches, stringifyPatches, parsePatches} from '@sanity/diff-match-patch';
+import { md5 } from 'hash-wasm';
+import { gzipSync, strToU8 } from 'fflate';
+
+import request from '../../utils/request-middleware.js';
const { Meta } = require('vitreum/headtags');
const Nav = require('naturalcrit/nav/nav.jsx');
@@ -15,21 +19,24 @@ const PrintNavItem = require('../../navbar/print.navitem.jsx');
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
const Account = require('../../navbar/account.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+const VaultNavItem = require('../../navbar/vault.navitem.jsx');
-const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
+const SplitPane = require('client/components/splitPane/splitPane.jsx');
const Editor = require('../../editor/editor.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const LockNotification = require('./lockNotification/lockNotification.jsx');
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js');
-const { printCurrentBrew } = require('../../../../shared/helpers.js');
+const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js');
+
+import { updateHistory, versionHistoryGarbageCollection } from '../../utils/versionHistory.js';
const googleDriveIcon = require('../../googleDrive.svg');
-const SAVE_TIMEOUT = 3000;
+const SAVE_TIMEOUT = 10000;
const EditPage = createClass({
displayName : 'EditPage',
@@ -41,21 +48,24 @@ const EditPage = createClass({
getInitialState : function() {
return {
- brew : this.props.brew,
- isSaving : false,
- isPending : false,
- alertTrashedGoogleBrew : this.props.brew.trashed,
- alertLoginToTransfer : false,
- saveGoogle : this.props.brew.googleId ? true : false,
- confirmGoogleTransfer : false,
- error : null,
- htmlErrors : Markdown.validate(this.props.brew.text),
- url : '',
- autoSave : true,
- autoSaveWarning : false,
- unsavedTime : new Date(),
- currentEditorPage : 0,
- displayLockMessage : this.props.brew.lock || false
+ brew : this.props.brew,
+ isSaving : false,
+ unsavedChanges : false,
+ alertTrashedGoogleBrew : this.props.brew.trashed,
+ alertLoginToTransfer : false,
+ saveGoogle : this.props.brew.googleId ? true : false,
+ confirmGoogleTransfer : false,
+ error : null,
+ htmlErrors : Markdown.validate(this.props.brew.text),
+ url : '',
+ autoSave : true,
+ autoSaveWarning : false,
+ unsavedTime : new Date(),
+ currentEditorViewPageNum : 1,
+ currentEditorCursorPageNum : 1,
+ currentBrewRendererPageNum : 1,
+ displayLockMessage : this.props.brew.lock || false,
+ themeBundle : {}
};
},
@@ -78,7 +88,7 @@ const EditPage = createClass({
});
window.onbeforeunload = ()=>{
- if(this.state.isSaving || this.state.isPending){
+ if(this.state.isSaving || this.state.unsavedChanges){
return 'You have unsaved changes!';
}
};
@@ -87,12 +97,22 @@ const EditPage = createClass({
htmlErrors : Markdown.validate(prevState.brew.text)
}));
+ fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
+
document.addEventListener('keydown', this.handleControlKeys);
},
componentWillUnmount : function() {
window.onbeforeunload = function(){};
document.removeEventListener('keydown', this.handleControlKeys);
},
+ componentDidUpdate : function(){
+ const hasChange = this.hasChanges();
+ if(this.state.unsavedChanges != hasChange){
+ this.setState({
+ unsavedChanges : hasChange
+ });
+ }
+ },
handleControlKeys : function(e){
if(!(e.ctrlKey || e.metaKey)) return;
@@ -110,49 +130,89 @@ const EditPage = createClass({
this.editor.current.update();
},
+ handleEditorViewPageChange : function(pageNumber){
+ this.setState({ currentEditorViewPageNum: pageNumber });
+ },
+
+ handleEditorCursorPageChange : function(pageNumber){
+ this.setState({ currentEditorCursorPageNum: pageNumber });
+ },
+
+ handleBrewRendererPageChange : function(pageNumber){
+ this.setState({ currentBrewRendererPageNum: pageNumber });
+ },
+
handleTextChange : function(text){
//If there are errors, run the validator on every change to give quick feedback
let htmlErrors = this.state.htmlErrors;
if(htmlErrors.length) htmlErrors = Markdown.validate(text);
this.setState((prevState)=>({
- brew : { ...prevState.brew, text: text },
- isPending : true,
- htmlErrors : htmlErrors,
- currentEditorPage : this.editor.current.getCurrentPage() - 1 //Offset index since Marked starts pages at 0
+ brew : { ...prevState.brew, text: text },
+ htmlErrors : htmlErrors,
+ }), ()=>{if(this.state.autoSave) this.trySave();});
+ },
+
+ handleSnipChange : function(snippet){
+ //If there are errors, run the validator on every change to give quick feedback
+ let htmlErrors = this.state.htmlErrors;
+ if(htmlErrors.length) htmlErrors = Markdown.validate(snippet);
+
+ this.setState((prevState)=>({
+ brew : { ...prevState.brew, snippets: snippet },
+ unsavedChanges : true,
+ htmlErrors : htmlErrors,
}), ()=>{if(this.state.autoSave) this.trySave();});
},
handleStyleChange : function(style){
this.setState((prevState)=>({
- brew : { ...prevState.brew, style: style },
- isPending : true
+ brew : { ...prevState.brew, style: style }
}), ()=>{if(this.state.autoSave) this.trySave();});
},
- handleMetaChange : function(metadata){
+ handleMetaChange : function(metadata, field=undefined){
+ if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
+ fetchThemeBundle(this, metadata.renderer, metadata.theme);
+
this.setState((prevState)=>({
brew : {
...prevState.brew,
...metadata
- },
- isPending : true,
+ }
}), ()=>{if(this.state.autoSave) this.trySave();});
-
},
hasChanges : function(){
return !_.isEqual(this.state.brew, this.savedBrew);
},
+ updateBrew : function(newData){
+ this.setState((prevState)=>({
+ brew : {
+ ...prevState.brew,
+ style : newData.style,
+ text : newData.text,
+ snippets : newData.snippets
+ }
+ }));
+ },
+
trySave : function(immediate=false){
if(!this.debounceSave) this.debounceSave = _.debounce(this.save, SAVE_TIMEOUT);
- if(this.hasChanges()){
+ if(this.state.isSaving)
+ return;
+
+ if(immediate) {
this.debounceSave();
- } else {
- this.debounceSave.cancel();
+ this.debounceSave.flush();
+ return;
}
- if(immediate) this.debounceSave.flush();
+
+ if(this.hasChanges())
+ this.debounceSave();
+ else
+ this.debounceSave.cancel();
},
handleGoogleClick : function(){
@@ -166,8 +226,7 @@ const EditPage = createClass({
confirmGoogleTransfer : !prevState.confirmGoogleTransfer
}));
this.setState({
- error : null,
- isSaving : false
+ error : null
});
},
@@ -183,49 +242,73 @@ const EditPage = createClass({
toggleGoogleStorage : function(){
this.setState((prevState)=>({
saveGoogle : !prevState.saveGoogle,
- isSaving : false,
error : null
- }), ()=>this.save());
+ }), ()=>this.trySave(true));
},
save : async function(){
if(this.debounceSave && this.debounceSave.cancel) this.debounceSave.cancel();
+ const brewState = this.state.brew; // freeze the current state
+ const preSaveSnapshot = { ...brewState };
+
this.setState((prevState)=>({
isSaving : true,
error : null,
htmlErrors : Markdown.validate(prevState.brew.text)
}));
+ await updateHistory(this.state.brew).catch(console.error);
+ await versionHistoryGarbageCollection().catch(console.error);
+
+ //Prepare content to send to server
+ const brew = { ...brewState };
+ brew.text = brew.text.normalize('NFC');
+ this.savedBrew.text = this.savedBrew.text.normalize('NFC');
+ brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1;
+ brew.patches = stringifyPatches(makePatches(encodeURI(this.savedBrew.text), encodeURI(brew.text)));
+ brew.hash = await md5(this.savedBrew.text);
+ //brew.text = undefined; - Temporary parallel path
+ brew.textBin = undefined;
+
+ const compressedBrew = gzipSync(strToU8(JSON.stringify(brew)));
+
const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId);
-
- const brew = this.state.brew;
- brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1;
-
const params = `${transfer ? `?${this.state.saveGoogle ? 'saveToGoogle' : 'removeFromGoogle'}=true` : ''}`;
const res = await request
.put(`/api/update/${brew.editId}${params}`)
- .send(brew)
+ .set('Content-Encoding', 'gzip')
+ .set('Content-Type', 'application/json')
+ .send(compressedBrew)
.catch((err)=>{
console.log('Error Updating Local Brew');
this.setState({ error: err });
});
if(!res) return;
- this.savedBrew = res.body;
- history.replaceState(null, null, `/edit/${this.savedBrew.editId}`);
+ this.savedBrew = {
+ ...preSaveSnapshot,
+ googleId : res.body.googleId ? res.body.googleId : null,
+ editId : res.body.editId,
+ shareId : res.body.shareId,
+ version : res.body.version
+ };
- this.setState((prevState)=>({
- brew : { ...prevState.brew,
- googleId : this.savedBrew.googleId ? this.savedBrew.googleId : null,
- editId : this.savedBrew.editId,
- shareId : this.savedBrew.shareId,
- version : this.savedBrew.version
+ this.setState((prevState) => ({
+ brew: {
+ ...prevState.brew,
+ googleId : res.body.googleId ? res.body.googleId : null,
+ editId : res.body.editId,
+ shareId : res.body.shareId,
+ version : res.body.version
},
- isPending : false,
isSaving : false,
unsavedTime : new Date()
- }));
+ }), ()=>{
+ this.setState({ unsavedChanges : this.hasChanges() });
+ });
+
+ history.replaceState(null, null, `/edit/${this.savedBrew.editId}`);
},
renderGoogleDriveIcon : function(){
@@ -276,7 +359,14 @@ const EditPage = createClass({
},
renderSaveButton : function(){
- if(this.state.autoSaveWarning && this.hasChanges()){
+
+ // #1 - Currently saving, show SAVING
+ if(this.state.isSaving){
+ return saving... ;
+ }
+
+ // #2 - Unsaved changes exist, autosave is OFF and warning timer has expired, show AUTOSAVE WARNING
+ if(this.state.unsavedChanges && this.state.autoSaveWarning){
this.setAutosaveWarning();
const elapsedTime = Math.round((new Date() - this.state.unsavedTime) / 1000 / 60);
const text = elapsedTime == 0 ? 'Autosave is OFF.' : `Autosave is OFF, and you haven't saved for ${elapsedTime} minutes.`;
@@ -289,18 +379,17 @@ const EditPage = createClass({
;
}
- if(this.state.isSaving){
- return saving... ;
+ // #3 - Unsaved changes exist, click to save, show SAVE NOW
+ // Use trySave(true) instead of save() to use debounced save function
+ if(this.state.unsavedChanges){
+ return this.trySave(true)} color='blue' icon='fas fa-save'>Save Now ;
}
- if(this.state.isPending && this.hasChanges()){
- return Save Now ;
- }
- if(!this.state.isPending && !this.state.isSaving && this.state.autoSave){
+ // #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
+ if(this.state.autoSave){
return auto-saved. ;
}
- if(!this.state.isPending && !this.state.isSaving){
- return saved. ;
- }
+ // DEFAULT - No unsaved changes, show SAVED
+ return saved. ;
},
handleAutoSave : function(){
@@ -344,9 +433,9 @@ const EditPage = createClass({
const title = `${this.props.brew.title} ${systems}`;
const text = `Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out.
-**[Homebrewery Link](${global.config.publicUrl}/share/${shareLink})**`;
+**[Homebrewery Link](${global.config.baseUrl}/share/${shareLink})**`;
- return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title)}&text=${encodeURIComponent(text)}`;
+ return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title.toWellFormed())}&text=${encodeURIComponent(text)}`;
},
renderNavbar : function(){
@@ -375,7 +464,7 @@ const EditPage = createClass({
view
- {navigator.clipboard.writeText(`${global.config.publicUrl}/share/${shareLink}`);}}>
+ {navigator.clipboard.writeText(`${global.config.baseUrl}/share/${shareLink}`);}}>
copy url
@@ -383,6 +472,7 @@ const EditPage = createClass({
+
@@ -395,26 +485,39 @@ const EditPage = createClass({
{this.renderNavbar()}
+ {this.props.brew.lock &&
}
- {this.props.brew.lock &&
}
diff --git a/client/homebrew/pages/editPage/editPage.less b/client/homebrew/pages/editPage/editPage.less
index f94b60c1b..184aaa1f7 100644
--- a/client/homebrew/pages/editPage/editPage.less
+++ b/client/homebrew/pages/editPage/editPage.less
@@ -1,29 +1,25 @@
@keyframes glideDown {
- 0% {transform : translate(-50% + 3px, 0px);
- opacity : 0;}
- 100% {transform : translate(-50% + 3px, 10px);
- opacity : 1;}
+ 0% {
+ opacity : 0;transform : translate(-50% + 3px, 0px);}
+ 100% {
+ opacity : 1;transform : translate(-50% + 3px, 10px);}
}
-.editPage{
- .navItem.save{
+.editPage {
+ .navItem.save {
+ position : relative;
width : 106px;
text-align : center;
- position : relative;
- &.saved{
+ &.saved {
+ color : #666666;
cursor : initial;
- color : #666;
}
}
- .googleDriveStorage {
- position : relative;
- }
- .googleDriveStorage img{
- height : 18px;
+ .googleDriveStorage { position : relative; }
+ .googleDriveStorage img {
+ height : 18px;
padding : 0px;
margin : -5px;
- &.inactive {
- filter: grayscale(1);
- }
+ &.inactive { filter : grayscale(1); }
}
}
diff --git a/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx b/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx
index c5eeaee47..34102bdc6 100644
--- a/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx
+++ b/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx
@@ -1,17 +1,30 @@
-require('./lockNotification.less');
-const React = require('react');
+import './lockNotification.less';
+import * as React from 'react';
+import request from '../../../utils/request-middleware.js';
import Dialog from '../../../../components/dialog.jsx';
function LockNotification(props) {
props = {
- shareId : 0,
- disableLock : ()=>{},
- message : '',
+ shareId : 0,
+ disableLock : ()=>{},
+ lock : {},
+ message : 'Unable to retrieve Lock Message',
+ reviewRequested : false,
...props
};
- const removeLock = ()=>{
- alert(`Not yet implemented - ID ${props.shareId}`);
+ const [reviewState, setReviewState] = React.useState(props.reviewRequested);
+
+ const removeLock = async ()=>{
+ await request.put(`/api/lock/review/request/${props.shareId}`)
+ .then(()=>{
+ setReviewState(true);
+ });
+ };
+
+ const renderReviewButton = function(){
+ if(reviewState){ return
REVIEW REQUESTED ; };
+ return
REQUEST LOCK REMOVAL ;
};
return
@@ -19,11 +32,11 @@ function LockNotification(props) {
This brew been locked by the Administrators. It will not be accessible by any method other than the Editor until the lock is removed.
LOCK REASON
- {props.message || 'Unable to retrieve Lock Message'}
+ {props.message}
Once you have resolved this issue, click REQUEST LOCK REMOVAL to notify the Administrators for review.
Click CONTINUE TO EDITOR to temporarily hide this notification; it will reappear the next time the page is reloaded.
- REQUEST LOCK REMOVAL
+ {renderReviewButton()}
;
};
diff --git a/client/homebrew/pages/editPage/lockNotification/lockNotification.less b/client/homebrew/pages/editPage/lockNotification/lockNotification.less
index 54f1a9569..930b070c4 100644
--- a/client/homebrew/pages/editPage/lockNotification/lockNotification.less
+++ b/client/homebrew/pages/editPage/lockNotification/lockNotification.less
@@ -11,10 +11,12 @@
&::backdrop { background-color : #000000AA; }
button {
+ padding : 2px 15px;
margin : 10px;
color : white;
background-color : #333333;
+ &.inactive,
&:hover { background-color : #777777; }
}
diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx
index 387a99b02..4ac73da8c 100644
--- a/client/homebrew/pages/errorPage/errorPage.jsx
+++ b/client/homebrew/pages/errorPage/errorPage.jsx
@@ -1,7 +1,7 @@
require('./errorPage.less');
const React = require('react');
const UIPage = require('../basePages/uiPage/uiPage.jsx');
-const Markdown = require('../../../../shared/naturalcrit/markdown.js');
+import Markdown from '../../../../shared/naturalcrit/markdown.js';
const ErrorIndex = require('./errors/errorIndex.js');
const ErrorPage = ({ brew })=>{
diff --git a/client/homebrew/pages/errorPage/errors/errorIndex.js b/client/homebrew/pages/errorPage/errors/errorIndex.js
index 58725fe3f..c0220b648 100644
--- a/client/homebrew/pages/errorPage/errors/errorIndex.js
+++ b/client/homebrew/pages/errorPage/errors/errorIndex.js
@@ -2,6 +2,14 @@ const dedent = require('dedent-tabs').default;
const loginUrl = 'https://www.naturalcrit.com/login';
+// Prevent parsing text (e.g. document titles) as markdown
+const escape = (text = '')=>{
+ return text.split('').map((char)=>`${char.charCodeAt(0)};`).join('');
+};
+
+//001-050 : Brew errors
+//050-100 : Other pages errors
+
const errorIndex = (props)=>{
return {
// Default catch all
@@ -15,7 +23,18 @@ const errorIndex = (props)=>{
'01' : dedent`
## An error occurred while retrieving this brew from Google Drive!
- Google reported an error while attempting to retrieve a brew from this link.`,
+ Google is able to see the brew at this link, but reported an error while attempting to retrieve it.
+
+ ### Refreshing your Google Credentials
+
+ This issue is likely caused by an issue with your Google credentials; if you are the owner of this file, the following steps may resolve the issue:
+
+ - Go to https://www.naturalcrit.com/login and click logout if present (in small text at the bottom of the page).
+ - Click "Sign In with Google", which will refresh your Google credentials.
+ - After completing the sign in process, return to Homebrewery and refresh/reload the page so that it can pick up the updated credentials.
+ - If this was the source of the issue, it should now be resolved.
+
+ If following these steps does not resolve the issue, please let us know!`,
// Google Drive - 404 : brew deleted or access denied
'02' : dedent`
@@ -47,7 +66,7 @@ const errorIndex = (props)=>{
- **The Google Account may be closed.** Google may have removed the account
due to inactivity or violating a Google policy. Make sure the owner can
still access Google Drive normally and upload/download files to it.
- :
+
If the file isn't found, Google Drive usually puts your file in your Trash folder for
30 days. Assuming the trash hasn't been emptied yet, it might be worth checking.
You can also find the Activity tab on the right side of the Google Drive page, which
@@ -75,7 +94,7 @@ const errorIndex = (props)=>{
:
- **Brew Title:** ${props.brew.brewTitle || 'Unable to show title'}
+ **Brew Title:** ${escape(props.brew.brewTitle) || 'Unable to show title'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `[${author}](/user/${author})`;}).join(', ') || 'Unable to list authors'}
@@ -90,7 +109,7 @@ const errorIndex = (props)=>{
:
- **Brew Title:** ${props.brew.brewTitle || 'Unable to show title'}
+ **Brew Title:** ${escape(props.brew.brewTitle) || 'Unable to show title'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `[${author}](/user/${author})`;}).join(', ') || 'Unable to list authors'}
@@ -136,8 +155,57 @@ const errorIndex = (props)=>{
**Brew ID:** ${props.brew.brewId}`,
+ // Theme load error
+ '09' : dedent`
+ ## No Homebrewery theme document could be found.
+
+ The server could not locate the Homebrewery document. It was likely deleted by
+ its owner.
+
+ :
+
+ **Requested access:** ${props.brew.accessType}
+
+ **Brew ID:** ${props.brew.brewId}`,
+
+ // Theme Not Valid
+ '10' : dedent`
+ ## The selected theme is not tagged as a theme.
+
+ The brew selected as a theme exists, but has not been marked for use as a theme with the \`theme:meta\` tag.
+
+ If the selected brew is your document, you may designate it as a theme by adding the \`theme:meta\` tag.`,
+
+ // ID validation error
+ '11' : dedent`
+ ## No Homebrewery document could be found.
+
+ The server could not locate the Homebrewery document. The Brew ID failed the validation check.
+
+ :
+
+ **Brew ID:** ${props.brew.brewId}`,
+
+ // Google ID validation error
+ '12' : dedent`
+ ## No Google document could be found.
+
+ The server could not locate the Google document. The Google ID failed the validation check.
+
+ :
+
+ **Brew ID:** ${props.brew.brewId}`,
+
+ //account page when account is not defined
+ '50' : dedent`
+ ## You are not signed in
+
+ You are trying to access the account page, but are not signed in to an account.
+
+ Please login or signup at our [login page](https://www.naturalcrit.com/login?redirect=https://homebrewery.naturalcrit.com/account).`,
+
// Brew locked by Administrators error
- '100' : dedent`
+ '51' : dedent`
## This brew has been locked.
Only an author may request that this lock is removed.
@@ -146,8 +214,52 @@ const errorIndex = (props)=>{
**Brew ID:** ${props.brew.brewId}
- **Brew Title:** ${props.brew.brewTitle}`,
+ **Brew Title:** ${escape(props.brew.brewTitle)}
+
+ **Brew Authors:** ${props.brew.authors?.map((author)=>{return `[${author}](/user/${author})`;}).join(', ') || 'Unable to list authors'}`,
+
+ // ####### Admin page error #######
+ '52' : dedent`
+ ## Access Denied
+ You need to provide correct administrator credentials to access this page.`,
+
+ // ####### Lock Errors
+
+ '60' : dedent`Lock Error: General`,
+
+ '61' : dedent`Lock Get Error: Unable to get lock count`,
+
+ '62' : dedent`Lock Set Error: Cannot lock`,
+
+ '63' : dedent`Lock Set Error: Brew not found`,
+
+ '64' : dedent`Lock Set Error: Already locked`,
+
+ '65' : dedent`Lock Remove Error: Cannot unlock`,
+
+ '66' : dedent`Lock Remove Error: Brew not found`,
+
+ '67' : dedent`Lock Remove Error: Not locked`,
+
+ '68' : dedent`Lock Get Review Error: Cannot get review requests`,
+
+ '69' : dedent`Lock Set Review Error: Cannot set review request`,
+
+ '70' : dedent`Lock Set Review Error: Brew not found`,
+
+ '71' : dedent`Lock Set Review Error: Review already requested`,
+
+ '72' : dedent`Lock Remove Review Error: Cannot clear review request`,
+
+ '73' : dedent`Lock Remove Review Error: Brew not found`,
+
+ // ####### Other Errors
+
+ '90' : dedent` An unexpected error occurred while looking for these brews.
+ Try again in a few minutes.`,
+
+ '91' : dedent` An unexpected error occurred while trying to get the total of brews.`,
};
};
-module.exports = errorIndex;
\ No newline at end of file
+module.exports = errorIndex;
diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx
index 1aa816df2..eac0216fd 100644
--- a/client/homebrew/pages/homePage/homePage.jsx
+++ b/client/homebrew/pages/homePage/homePage.jsx
@@ -1,21 +1,21 @@
require('./homePage.less');
const React = require('react');
const createClass = require('create-react-class');
-const _ = require('lodash');
const cx = require('classnames');
-const request = require('../../utils/request-middleware.js');
+import request from '../../utils/request-middleware.js';
const { Meta } = require('vitreum/headtags');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const NewBrewItem = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
+const VaultNavItem = require('../../navbar/vault.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const AccountNavItem = require('../../navbar/account.navitem.jsx');
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
+const { fetchThemeBundle } = require('../../../../shared/helpers.js');
-
-const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
+const SplitPane = require('client/components/splitPane/splitPane.jsx');
const Editor = require('../../editor/editor.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
@@ -31,15 +31,22 @@ const HomePage = createClass({
},
getInitialState : function() {
return {
- brew : this.props.brew,
- welcomeText : this.props.brew.text,
- error : undefined,
- currentEditorPage : 0
+ brew : this.props.brew,
+ welcomeText : this.props.brew.text,
+ error : undefined,
+ currentEditorViewPageNum : 1,
+ currentEditorCursorPageNum : 1,
+ currentBrewRendererPageNum : 1,
+ themeBundle : {}
};
},
editor : React.createRef(null),
+ componentDidMount : function() {
+ fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
+ },
+
handleSave : function(){
request.post('/api')
.send(this.state.brew)
@@ -55,10 +62,22 @@ const HomePage = createClass({
handleSplitMove : function(){
this.editor.current.update();
},
+
+ handleEditorViewPageChange : function(pageNumber){
+ this.setState({ currentEditorViewPageNum: pageNumber });
+ },
+
+ handleEditorCursorPageChange : function(pageNumber){
+ this.setState({ currentEditorCursorPageNum: pageNumber });
+ },
+
+ handleBrewRendererPageChange : function(pageNumber){
+ this.setState({ currentBrewRendererPageNum: pageNumber });
+ },
+
handleTextChange : function(text){
this.setState((prevState)=>({
- brew : { ...prevState.brew, text: text },
- currentEditorPage : this.editor.current.getCurrentPage() - 1 //Offset index since Marked starts pages at 0
+ brew : { ...prevState.brew, text: text },
}));
},
renderNavbar : function(){
@@ -70,6 +89,7 @@ const HomePage = createClass({
}
+
@@ -80,7 +100,6 @@ const HomePage = createClass({
return
{this.renderNavbar()}
-
-
Save current
diff --git a/client/homebrew/pages/homePage/homePage.less b/client/homebrew/pages/homePage/homePage.less
index a7523bd3c..4cf9ff4fe 100644
--- a/client/homebrew/pages/homePage/homePage.less
+++ b/client/homebrew/pages/homePage/homePage.less
@@ -1,50 +1,40 @@
-.homePage{
+.homePage {
position : relative;
- a.floatingNewButton{
+ a.floatingNewButton {
.animate(background-color);
position : absolute;
- display : block;
right : 70px;
bottom : 50px;
- z-index : 100;
z-index : 5001;
+ display : block;
padding : 1em;
- background-color : @orange;
font-size : 1.5em;
color : white;
text-decoration : none;
+ background-color : @orange;
box-shadow : 3px 3px 15px black;
- &:hover{
- background-color : darken(@orange, 20%);
- }
+ &:hover { background-color : darken(@orange, 20%); }
}
- .floatingSaveButton{
+ .floatingSaveButton {
.animateAll();
position : absolute;
- display : block;
right : 200px;
bottom : 70px;
- z-index : 100;
z-index : 5000;
+ display : block;
padding : 0.8em;
- cursor : pointer;
- background-color : @blue;
font-size : 0.8em;
color : white;
text-decoration : none;
+ cursor : pointer;
+ background-color : @blue;
box-shadow : 3px 3px 15px black;
- &:hover{
- background-color : darken(@blue, 20%);
- }
- &.show{
- right : 350px;
- }
+ &:hover { background-color : darken(@blue, 20%); }
+ &.show { right : 350px; }
}
- .navItem.save{
- background-color: @orange;
- &:hover{
- background-color: @green;
- }
+ .navItem.save {
+ background-color : @orange;
+ &:hover { background-color : @green; }
}
}
diff --git a/client/homebrew/pages/homePage/welcome_msg.md b/client/homebrew/pages/homePage/welcome_msg.md
index c7d46149e..49d1918f0 100644
--- a/client/homebrew/pages/homePage/welcome_msg.md
+++ b/client/homebrew/pages/homePage/welcome_msg.md
@@ -91,13 +91,6 @@ If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana](
\page
-
-
-
-
-
-
-
## Markdown+
The Homebrewery aims to make homebrewing as simple as possible, providing a live editor with Markdown syntax that is more human-readable and faster to write with than raw HTML.
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index f2525c425..ab7c22541 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -2,9 +2,9 @@
require('./newPage.less');
const React = require('react');
const createClass = require('create-react-class');
-const request = require('../../utils/request-middleware.js');
+import request from '../../utils/request-middleware.js';
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
const Nav = require('naturalcrit/nav/nav.jsx');
const PrintNavItem = require('../../navbar/print.navitem.jsx');
@@ -14,12 +14,12 @@ const ErrorNavItem = require('../../navbar/error-navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const HelpNavItem = require('../../navbar/help.navitem.jsx');
-const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
+const SplitPane = require('client/components/splitPane/splitPane.jsx');
const Editor = require('../../editor/editor.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const { DEFAULT_BREW } = require('../../../../server/brewDefaults.js');
-const { printCurrentBrew } = require('../../../../shared/helpers.js');
+const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js');
const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style';
@@ -39,12 +39,15 @@ const NewPage = createClass({
const brew = this.props.brew;
return {
- brew : brew,
- isSaving : false,
- saveGoogle : (global.account && global.account.googleId ? true : false),
- error : null,
- htmlErrors : Markdown.validate(brew.text),
- currentEditorPage : 0
+ brew : brew,
+ isSaving : false,
+ saveGoogle : (global.account && global.account.googleId ? true : false),
+ error : null,
+ htmlErrors : Markdown.validate(brew.text),
+ currentEditorViewPageNum : 1,
+ currentEditorCursorPageNum : 1,
+ currentBrewRendererPageNum : 1,
+ themeBundle : {}
};
},
@@ -77,10 +80,15 @@ const NewPage = createClass({
saveGoogle : (saveStorage == 'GOOGLE-DRIVE' && this.state.saveGoogle)
});
+ fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme);
+
localStorage.setItem(BREWKEY, brew.text);
if(brew.style)
localStorage.setItem(STYLEKEY, brew.style);
localStorage.setItem(METAKEY, JSON.stringify({ 'renderer': brew.renderer, 'theme': brew.theme, 'lang': brew.lang }));
+ if(window.location.pathname != '/new') {
+ window.history.replaceState({}, window.location.title, '/new/');
+ }
},
componentWillUnmount : function() {
document.removeEventListener('keydown', this.handleControlKeys);
@@ -102,15 +110,26 @@ const NewPage = createClass({
this.editor.current.update();
},
+ handleEditorViewPageChange : function(pageNumber){
+ this.setState({ currentEditorViewPageNum: pageNumber });
+ },
+
+ handleEditorCursorPageChange : function(pageNumber){
+ this.setState({ currentEditorCursorPageNum: pageNumber });
+ },
+
+ handleBrewRendererPageChange : function(pageNumber){
+ this.setState({ currentBrewRendererPageNum: pageNumber });
+ },
+
handleTextChange : function(text){
//If there are errors, run the validator on every change to give quick feedback
let htmlErrors = this.state.htmlErrors;
if(htmlErrors.length) htmlErrors = Markdown.validate(text);
this.setState((prevState)=>({
- brew : { ...prevState.brew, text: text },
- htmlErrors : htmlErrors,
- currentEditorPage : this.editor.current.getCurrentPage() - 1 //Offset index since Marked starts pages at 0
+ brew : { ...prevState.brew, text: text },
+ htmlErrors : htmlErrors,
}));
localStorage.setItem(BREWKEY, text);
},
@@ -122,7 +141,21 @@ const NewPage = createClass({
localStorage.setItem(STYLEKEY, style);
},
- handleMetaChange : function(metadata){
+ handleSnipChange : function(snippet){
+ //If there are errors, run the validator on every change to give quick feedback
+ let htmlErrors = this.state.htmlErrors;
+ if(htmlErrors.length) htmlErrors = Markdown.validate(snippet);
+
+ this.setState((prevState)=>({
+ brew : { ...prevState.brew, snippets: snippet },
+ htmlErrors : htmlErrors,
+ }), ()=>{if(this.state.autoSave) this.trySave();});
+ },
+
+ handleMetaChange : function(metadata, field=undefined){
+ if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
+ fetchThemeBundle(this, metadata.renderer, metadata.theme);
+
this.setState((prevState)=>({
brew : { ...prevState.brew, ...metadata },
}), ()=>{
@@ -142,8 +175,6 @@ const NewPage = createClass({
isSaving : true
});
- console.log('saving new brew');
-
let brew = this.state.brew;
// Split out CSS to Style if CSS codefence exists
if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) {
@@ -153,12 +184,10 @@ const NewPage = createClass({
}
brew.pageCount=((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1;
-
const res = await request
.post(`/api${this.state.saveGoogle ? '?saveToGoogle=true' : ''}`)
.send(brew)
.catch((err)=>{
- console.log(err);
this.setState({ isSaving: false, error: err });
});
if(!res) return;
@@ -213,16 +242,28 @@ const NewPage = createClass({
onTextChange={this.handleTextChange}
onStyleChange={this.handleStyleChange}
onMetaChange={this.handleMetaChange}
+ onSnipChange={this.handleSnipChange}
renderer={this.state.brew.renderer}
+ userThemes={this.props.userThemes}
+ themeBundle={this.state.themeBundle}
+ onCursorPageChange={this.handleEditorCursorPageChange}
+ onViewPageChange={this.handleEditorViewPageChange}
+ currentEditorViewPageNum={this.state.currentEditorViewPageNum}
+ currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
+ currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
/>
diff --git a/client/homebrew/pages/newPage/newPage.less b/client/homebrew/pages/newPage/newPage.less
index f83827ffb..ebc44d543 100644
--- a/client/homebrew/pages/newPage/newPage.less
+++ b/client/homebrew/pages/newPage/newPage.less
@@ -1,8 +1,6 @@
-.newPage{
- .navItem.save{
- background-color: @orange;
- &:hover{
- background-color: @green;
- }
+.newPage {
+ .navItem.save {
+ background-color : @orange;
+ &:hover { background-color : @green; }
}
}
diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx
index 9695ee810..e9c5540a2 100644
--- a/client/homebrew/pages/sharePage/sharePage.jsx
+++ b/client/homebrew/pages/sharePage/sharePage.jsx
@@ -1,6 +1,6 @@
require('./sharePage.less');
const React = require('react');
-const createClass = require('create-react-class');
+const { useState, useEffect, useCallback } = React;
const { Meta } = require('vitreum/headtags');
const Nav = require('naturalcrit/nav/nav.jsx');
@@ -12,98 +12,116 @@ const Account = require('../../navbar/account.navitem.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js');
-const { printCurrentBrew } = require('../../../../shared/helpers.js');
+const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js');
-const SharePage = createClass({
- displayName : 'SharePage',
- getDefaultProps : function() {
- return {
- brew : DEFAULT_BREW_LOAD
- };
- },
+const SharePage = (props)=>{
+ const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props;
- componentDidMount : function() {
- document.addEventListener('keydown', this.handleControlKeys);
- },
+ const [state, setState] = useState({
+ themeBundle : {},
+ currentBrewRendererPageNum : 1,
+ });
- componentWillUnmount : function() {
- document.removeEventListener('keydown', this.handleControlKeys);
- },
+ const handleBrewRendererPageChange = useCallback((pageNumber)=>{
+ setState((prevState)=>({
+ currentBrewRendererPageNum : pageNumber,
+ ...prevState }));
+ }, []);
- handleControlKeys : function(e){
+ const handleControlKeys = (e)=>{
if(!(e.ctrlKey || e.metaKey)) return;
const P_KEY = 80;
- if(e.keyCode == P_KEY){
- if(e.keyCode == P_KEY) printCurrentBrew();
+ if(e.keyCode === P_KEY) {
+ printCurrentBrew();
e.stopPropagation();
e.preventDefault();
}
- },
+ };
- processShareId : function() {
- return this.props.brew.googleId && !this.props.brew.stubbed ?
- this.props.brew.googleId + this.props.brew.shareId :
- this.props.brew.shareId;
- },
+ useEffect(()=>{
+ document.addEventListener('keydown', handleControlKeys);
+ fetchThemeBundle(
+ { setState },
+ brew.renderer,
+ brew.theme
+ );
- renderEditLink : function(){
- if(!this.props.brew.editId) return;
+ return ()=>{
+ document.removeEventListener('keydown', handleControlKeys);
+ };
+ }, []);
- let editLink = this.props.brew.editId;
- if(this.props.brew.googleId && !this.props.brew.stubbed) {
- editLink = this.props.brew.googleId + editLink;
- }
+ const processShareId = ()=>{
+ return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId;
+ };
- return
- edit
- ;
- },
+ const renderEditLink = ()=>{
+ if(!brew.editId) return null;
- render : function(){
- return
+ const editLink = brew.googleId && ! brew.stubbed ? brew.googleId + brew.editId : brew.editId;
+
+ return (
+
+ edit
+
+ );
+ };
+
+ const titleEl = (
+
+ {brew.title}
+
+ );
+
+ return (
+
-
- {this.props.brew.title}
-
+ {disableMeta ? titleEl : {titleEl} }
- {this.props.brew.shareId && <>
-
-
-
- source
-
-
- view
-
- {this.renderEditLink()}
-
- download
-
-
- clone to new
-
-
- >}
-
+ {brew.shareId && (
+ <>
+
+
+
+ source
+
+
+ view
+
+ {renderEditLink()}
+
+ download
+
+
+ clone to new
+
+
+ >
+ )}
+
-
;
- }
-});
+
+ );
+};
module.exports = SharePage;
diff --git a/client/homebrew/pages/sharePage/sharePage.less b/client/homebrew/pages/sharePage/sharePage.less
index 83e784c49..b76dc50f9 100644
--- a/client/homebrew/pages/sharePage/sharePage.less
+++ b/client/homebrew/pages/sharePage/sharePage.less
@@ -1,9 +1,7 @@
-.sharePage{
- .navContent .navSection.titleSection {
- flex-grow: 1;
- justify-content: center;
- }
- .content{
- overflow-y : hidden;
+.sharePage {
+ nav .navSection.titleSection {
+ flex-grow : 1;
+ justify-content : center;
}
+ .content { overflow-y : hidden; }
}
diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx
index 01778be44..f6fae639d 100644
--- a/client/homebrew/pages/userPage/userPage.jsx
+++ b/client/homebrew/pages/userPage/userPage.jsx
@@ -1,80 +1,60 @@
const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
+const { useState } = React;
+const _ = require('lodash');
const ListPage = require('../basePages/listPage/listPage.jsx');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
-
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const Account = require('../../navbar/account.navitem.jsx');
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
+const VaultNavitem = require('../../navbar/vault.navitem.jsx');
-const UserPage = createClass({
- displayName : 'UserPage',
- getDefaultProps : function() {
- return {
- username : '',
- brews : [],
- query : '',
- error : null
- };
- },
- getInitialState : function() {
- const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `’` : `’s`);
+const UserPage = (props)=>{
+ props = {
+ username : '',
+ brews : [],
+ query : '',
+ ...props
+ };
- const brews = _.groupBy(this.props.brews, (brew)=>{
- return (brew.published ? 'published' : 'private');
- });
+ const [error, setError] = useState(null);
- const brewCollection = [
- {
- title : `${usernameWithS} published brews`,
- class : 'published',
- brews : brews.published
- }
- ];
- if(this.props.username == global.account?.username){
- brewCollection.push(
- {
- title : `${usernameWithS} unpublished brews`,
- class : 'unpublished',
- brews : brews.private
- }
- );
- }
+ const usernameWithS = props.username + (props.username.endsWith('s') ? `’` : `’s`);
+ const groupedBrews = _.groupBy(props.brews, (brew)=>brew.published ? 'published' : 'private');
- return {
- brewCollection : brewCollection
- };
- },
- errorReported : function(error) {
- this.setState({
- error
- });
- },
+ const brewCollection = [
+ {
+ title : `${usernameWithS} published brews`,
+ class : 'published',
+ brews : groupedBrews.published || []
+ },
+ ...(props.username === global.account?.username ? [{
+ title : `${usernameWithS} unpublished brews`,
+ class : 'unpublished',
+ brews : groupedBrews.private || []
+ }] : [])
+ ];
- navItems : function() {
- return
+ const navItems = (
+
- {this.state.error ?
- :
- null
- }
+ {error && ( )}
+
- ;
- },
+
+ );
- render : function(){
- return
;
- }
-});
+ return (
+
setError(err)} />
+ );
+};
module.exports = UserPage;
diff --git a/client/homebrew/pages/vaultPage/vaultPage.jsx b/client/homebrew/pages/vaultPage/vaultPage.jsx
new file mode 100644
index 000000000..e098bb1a2
--- /dev/null
+++ b/client/homebrew/pages/vaultPage/vaultPage.jsx
@@ -0,0 +1,432 @@
+/*eslint max-lines: ["warn", {"max": 400, "skipBlankLines": true, "skipComments": true}]*/
+/*eslint max-params:["warn", { max: 10 }], */
+require('./vaultPage.less');
+
+const React = require('react');
+const { useState, useEffect, useRef } = React;
+
+const Nav = require('naturalcrit/nav/nav.jsx');
+const Navbar = require('../../navbar/navbar.jsx');
+const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
+const Account = require('../../navbar/account.navitem.jsx');
+const NewBrew = require('../../navbar/newbrew.navitem.jsx');
+const HelpNavItem = require('../../navbar/help.navitem.jsx');
+const BrewItem = require('../basePages/listPage/brewItem/brewItem.jsx');
+const SplitPane = require('client/components/splitPane/splitPane.jsx');
+const ErrorIndex = require('../errorPage/errors/errorIndex.js');
+
+import request from '../../utils/request-middleware.js';
+
+const VaultPage = (props)=>{
+ const [pageState, setPageState] = useState(parseInt(props.query.page) || 1);
+
+ const [sortState, setSort] = useState(props.query.sort || 'title');
+ const [dirState, setdir] = useState(props.query.dir || 'asc');
+
+ //Response state
+ const [brewCollection, setBrewCollection] = useState(null);
+ const [totalBrews, setTotalBrews] = useState(null);
+ const [searching, setSearching] = useState(false);
+ const [error, setError] = useState(null);
+
+ const titleRef = useRef(null);
+ const authorRef = useRef(null);
+ const countRef = useRef(null);
+ const v3Ref = useRef(null);
+ const legacyRef = useRef(null);
+ const submitButtonRef = useRef(null);
+
+ useEffect(()=>{
+ disableSubmitIfFormInvalid();
+ loadPage(pageState, true, props.query.sort, props.query.dir);
+ }, []);
+
+ const updateStateWithBrews = (brews, page)=>{
+ setBrewCollection(brews || null);
+ setPageState(parseInt(page) || 1);
+ setSearching(false);
+ };
+
+ const updateUrl = (titleValue, authorValue, countValue, v3Value, legacyValue, page, sort, dir)=>{
+ const url = new URL(window.location.href);
+ const urlParams = new URLSearchParams(url.search);
+
+ urlParams.set('title', titleValue);
+ urlParams.set('author', authorValue);
+ urlParams.set('count', countValue);
+ urlParams.set('v3', v3Value);
+ urlParams.set('legacy', legacyValue);
+ urlParams.set('page', page);
+ urlParams.set('sort', sort);
+ urlParams.set('dir', dir);
+
+ url.search = urlParams.toString();
+ window.history.replaceState(null, '', url.toString());
+ };
+
+ const performSearch = async (title, author, count, v3, legacy, page, sort, dir)=>{
+ updateUrl(title, author, count, v3, legacy, page, sort, dir);
+
+ const response = await request
+ .get(`/api/vault?title=${title}&author=${author}&v3=${v3}&legacy=${legacy}&count=${count}&page=${page}&sort=${sort}&dir=${dir}`)
+ .catch((error)=>{
+ console.log('error at loadPage: ', error);
+ setError(error);
+ updateStateWithBrews([], 1);
+ });
+
+ if(response.ok)
+ updateStateWithBrews(response.body.brews, page);
+ };
+
+ const loadTotal = async (title, author, v3, legacy)=>{
+ setTotalBrews(null);
+
+ const response = await request.get(`/api/vault/total?title=${title}&author=${author}&v3=${v3}&legacy=${legacy}`)
+ .catch((error)=>{
+ console.log('error at loadTotal: ', error);
+ setError(error);
+ updateStateWithBrews([], 1);
+ });
+
+ if(response.ok)
+ setTotalBrews(response.body.totalBrews);
+ };
+
+ const loadPage = async (page, updateTotal, sort, dir)=>{
+ if(!validateForm()) return;
+
+ setSearching(true);
+ setError(null);
+
+ const title = titleRef.current.value || '';
+ const author = authorRef.current.value || '';
+ const count = countRef.current.value || 10;
+ const v3 = v3Ref.current.checked != false;
+ const legacy = legacyRef.current.checked != false;
+ const sortOption = sort || 'title';
+ const dirOption = dir || 'asc';
+ const pageProp = page || 1;
+
+ setSort(sortOption);
+ setdir(dirOption);
+
+ performSearch(title, author, count, v3, legacy, pageProp, sortOption, dirOption);
+
+ if(updateTotal)
+ loadTotal(title, author, v3, legacy);
+ };
+
+ const renderNavItems = ()=>(
+
+
+
+ Vault: Search for brews
+
+
+
+
+
+
+
+
+
+ );
+
+ const validateForm = ()=>{
+ //form validity: title or author must be written, and at least one renderer set
+ const isTitleValid = titleRef.current.validity.valid && titleRef.current.value;
+ const isAuthorValid = authorRef.current.validity.valid && authorRef.current.value;
+ const isCheckboxChecked = legacyRef.current.checked || v3Ref.current.checked;
+
+ const isFormValid = (isTitleValid || isAuthorValid) && isCheckboxChecked;
+
+ return isFormValid;
+ };
+
+ const disableSubmitIfFormInvalid = ()=>{
+ submitButtonRef.current.disabled = !validateForm();
+ };
+
+ const renderForm = ()=>(
+
+
Brew Lookup
+
+
+ Title of the brew
+ {
+ if(e.key === 'Enter' && !submitButtonRef.current.disabled)
+ loadPage(1, true);
+ }}
+ placeholder='v3 Reference Document'
+ />
+
+
+
+ Author of the brew
+ {
+ if(e.key === 'Enter' && !submitButtonRef.current.disabled)
+ loadPage(1, true);
+ }}
+ placeholder='Username'
+ />
+
+
+
+ Results per page
+
+ 10
+ 20
+ 40
+ 60
+
+
+
+
+
+ Search for v3 brews
+
+
+
+
+ Search for legacy brews
+
+
+ {
+ loadPage(1, true);
+ }}
+ >
+ Search
+
+
+
+
+ Tips and tricks
+
+
+ Only published brews are searchable via this tool
+
+
+ Usernames are case-sensitive
+
+
+ Use "word" to match an exact string,
+ and - to exclude words (at least one word must not be negated)
+
+
+ Some common words like "a", "after", "through", "itself", "here", etc.,
+ are ignored in searches. The full list can be found
+
+ here
+
+
+
+ New features will be coming, such as filters and search by tags.
+
+
+ );
+
+ const renderSortOption = (optionTitle, optionValue)=>{
+ const oppositeDir = dirState === 'asc' ? 'desc' : 'asc';
+
+ return (
+
+ loadPage(1, false, optionValue, oppositeDir)}>
+ {optionTitle}
+
+ {sortState === optionValue && (
+
+ )}
+
+ );
+ };
+
+ const renderSortBar = ()=>{
+
+ return (
+
+ {renderSortOption('Title', 'title', props.query.dir)}
+ {renderSortOption('Created Date', 'createdAt', props.query.dir)}
+ {renderSortOption('Updated Date', 'updatedAt', props.query.dir)}
+ {renderSortOption('Views', 'views', props.query.dir)}
+
+ );
+ };
+
+ const renderPaginationControls = ()=>{
+ if(!totalBrews || totalBrews < 10) return null;
+
+ const countInt = parseInt(brewCollection.length || 20);
+ const totalPages = Math.ceil(totalBrews / countInt);
+
+ let startPage, endPage;
+ if(pageState <= 6) {
+ startPage = 1;
+ endPage = Math.min(totalPages, 10);
+ } else if(pageState + 4 >= totalPages) {
+ startPage = Math.max(1, totalPages - 9);
+ endPage = totalPages;
+ } else {
+ startPage = pageState - 5;
+ endPage = pageState + 4;
+ }
+
+ const pagesAroundCurrent = new Array(endPage - startPage + 1)
+ .fill()
+ .map((_, index)=>(
+ loadPage(startPage + index, false, sortState, dirState)}
+ >
+ {startPage + index}
+
+ ));
+
+ return (
+
+
loadPage(pageState - 1, false, sortState, dirState)}
+ disabled={pageState === startPage}
+ >
+
+
+
+ {startPage > 1 && (
+ loadPage(1, false, sortState, dirState)}
+ >
+ 1 ...
+
+ )}
+ {pagesAroundCurrent}
+ {endPage < totalPages && (
+ loadPage(totalPages, false, sortState, dirState)}
+ >
+ ... {totalPages}
+
+ )}
+
+
loadPage(pageState + 1, false, sortState, dirState)}
+ disabled={pageState === totalPages}
+ >
+
+
+
+ );
+ };
+
+ const renderFoundBrews = ()=>{
+ if(searching && !brewCollection) {
+ return (
+
+
Searching
+
+ );
+ }
+
+ if(error) {
+ const errorText = ErrorIndex()[error.HBErrorCode.toString()] || '';
+
+ return (
+
+
Error: {errorText}
+
+ );
+ }
+
+ if(!brewCollection) {
+ return (
+
+
No search yet
+
+ );
+ }
+
+ if(brewCollection.length === 0) {
+ return (
+
+
No brews found
+
+ );
+ }
+
+ return (
+
+
+ {`Brews found: `}
+ {totalBrews}
+
+ {brewCollection.length > 10 && renderPaginationControls()}
+ {brewCollection.map((brew, index)=>{
+ return (
+
+ );
+ })}
+ {renderPaginationControls()}
+
+ );
+ };
+
+ return (
+
+
+
+ {renderNavItems()}
+
+
+ {renderForm()}
+
+ {renderSortBar()}
+ {renderFoundBrews()}
+
+
+
+
+ );
+};
+
+module.exports = VaultPage;
diff --git a/client/homebrew/pages/vaultPage/vaultPage.less b/client/homebrew/pages/vaultPage/vaultPage.less
new file mode 100644
index 000000000..8a5f3a714
--- /dev/null
+++ b/client/homebrew/pages/vaultPage/vaultPage.less
@@ -0,0 +1,365 @@
+.vaultPage {
+ height : 100%;
+ overflow-y : hidden;
+ background-color : #2C3E50;
+
+ *:not(input) { user-select : none; }
+
+ :where(.content .dataGroup) {
+ width : 100%;
+ height : 100%;
+ background : white;
+
+ &.form .brewLookup {
+ position : relative;
+ padding : 50px clamp(20px, 4vw, 50px);
+
+ small {
+ font-size : 10pt;
+ color : #555555;
+
+ a { color : #333333; }
+ }
+
+ code {
+ padding-inline : 5px;
+ font-family : monospace;
+ background : lightgrey;
+ border-radius : 5px;
+ }
+
+ h1, h2, h3, h4 {
+ font-family : 'CodeBold';
+ letter-spacing : 2px;
+ }
+
+ legend {
+ h3 {
+ margin-block : 30px 20px;
+ font-size : 20px;
+ text-align : center;
+ border-bottom : 2px solid;
+ }
+ ul {
+ padding-inline : 30px 10px;
+ li {
+ margin-block : 5px;
+ line-height : calc(1em + 5px);
+ list-style : disc;
+ }
+ }
+ }
+
+ &::after {
+ position : absolute;
+ top : 0;
+ right : 0;
+ left : 0;
+ display : block;
+ padding : 10px;
+ font-weight : 900;
+ color : white;
+ white-space : pre-wrap;
+ content : 'Error:\A At least one renderer should be enabled to make a search';
+ background : rgb(255, 60, 60);
+ opacity : 0;
+ transition : opacity 0.5s;
+ }
+ &:not(:has(input[type='checkbox']:checked))::after { opacity : 1; }
+
+ .formTitle {
+ margin : 20px 0;
+ font-size : 30px;
+ color : black;
+ text-align : center;
+ border-bottom : 2px solid;
+ }
+
+ .formContents {
+ position : relative;
+ display : flex;
+ flex-direction : column;
+
+ label {
+ display : flex;
+ align-items : center;
+ margin : 10px 0;
+ }
+ select { margin : 0 10px; }
+
+ input {
+ margin : 0 10px;
+
+ &:invalid { background : rgb(255, 188, 181); }
+
+
+ }
+
+ #searchButton {
+ .colorButton(@green);
+ position : absolute;
+ right : 20px;
+ bottom : 0;
+
+ i {
+ margin-left : 10px;
+ animation-duration : 1000s;
+ }
+ }
+ }
+ }
+
+ &.resultsContainer {
+ display : flex;
+ flex-direction : column;
+ height : 100%;
+ overflow-y : auto;
+ font-size : 0.34cm;
+
+ h3 {
+ font-family : 'Open Sans';
+ font-weight : 900;
+ color : white;
+ }
+
+ .sort-container {
+ display : flex;
+ flex-wrap : wrap;
+ column-gap : 15px;
+ justify-content : center;
+ height : 30px;
+ color : white;
+ background-color : #555555;
+ border-top : 1px solid #666666;
+ border-bottom : 1px solid #666666;
+
+ .sort-option {
+ display : flex;
+ align-items : center;
+ padding : 0 8px;
+
+ &:hover { background-color : #444444; }
+
+ &.active {
+ background-color : #333333;
+
+ button {
+ font-weight : 800;
+ color : white;
+
+ & + .sortDir { padding-left : 5px; }
+ }
+ }
+
+ button {
+ padding : 0;
+ font-size : 11px;
+ font-weight : normal;
+ color : #CCCCCC;
+ text-transform : uppercase;
+ background-color : transparent;
+
+ &:hover { background : none; }
+ }
+ }
+ }
+
+ .foundBrews {
+ position : relative;
+ width : 100%;
+ height : 100%;
+ max-height : 100%;
+ padding : 70px 50px;
+ overflow-y : scroll;
+ background-color : #2C3E50;
+ container-type : inline-size;
+
+ h3 { font-size : 25px; }
+
+ &.noBrews {
+ display : grid;
+ place-items : center;
+ color : white;
+ }
+
+ &.searching {
+ display : grid;
+ place-items : center;
+ color : white;
+
+ h3 { position : relative; }
+
+ h3.searchAnim::after {
+ position : absolute;
+ top : 50%;
+ right : 0;
+ width : max-content;
+ height : 1em;
+ content : '';
+ translate : calc(100% + 5px) -50%;
+ animation : trailingDots 2s ease infinite;
+ }
+ }
+
+ .totalBrews {
+ position : fixed;
+ right : 0;
+ bottom : 0;
+ z-index : 1000;
+ padding : 8px 10px;
+ font-family : 'Open Sans';
+ font-size : 11px;
+ font-weight : 800;
+ color : white;
+ background-color : #333333;
+
+ .searchAnim {
+ position : relative;
+ display : inline-block;
+ width : 3ch;
+ height : 1em;
+ }
+
+ .searchAnim::after {
+ position : absolute;
+ top : 50%;
+ right : 0;
+ width : max-content;
+ height : 1em;
+ content : '';
+ translate : -50% -50%;
+ animation : trailingDots 2s ease infinite;
+ }
+ }
+
+ .brewItem {
+ width : 47%;
+ margin-right : 40px;
+ color : black;
+ isolation : isolate;
+ transition : width 0.5s;
+
+ &::after {
+ position : absolute;
+ inset : 0;
+ z-index : -2;
+ display : block;
+ content : '';
+ background-image : url('/assets/parchmentBackground.jpg');
+ }
+
+ &:nth-child(even of .brewItem) { margin-right : 0; }
+
+ h2 {
+ font-family : 'MrEavesRemake';
+ font-size : 0.75cm;
+ font-weight : 800;
+ line-height : 0.988em;
+ color : var(--HB_Color_HeaderText);
+ }
+ .info {
+ position : relative;
+ z-index : 2;
+ font-family : 'ScalySansRemake';
+ font-size : 1.2em;
+
+ >span {
+ margin-right : 12px;
+ line-height : 1.5em;
+ }
+ }
+ .links { z-index : 2; }
+
+ hr {
+ visibility : hidden;
+ margin : 0px;
+ }
+
+ .thumbnail { z-index : -1; }
+ }
+
+ .paginationControls {
+ position : absolute;
+ top : 35px;
+ left : 50%;
+ display : grid;
+ grid-template-areas : 'previousPage currentPage nextPage';
+ grid-template-columns : 50px 1fr 50px;
+ gap : 20px;
+ place-items : center;
+ width : auto;
+ font-size : 15px;
+ translate : -50%;
+
+ &:last-child { top : unset; }
+
+ .pages {
+ display : flex;
+ grid-area : currentPage;
+ gap : 1em;
+ justify-content : space-evenly;
+ width : 100%;
+ height : 100%;
+ text-align : center;
+
+ .pageNumber {
+ place-content : center;
+ width : fit-content;
+ min-width : 2em;
+ font-family : 'Open Sans';
+ font-weight : 900;
+ color : white;
+ text-wrap : nowrap;
+ text-underline-position : under;
+ cursor : pointer;
+
+ &.currentPage {
+ color : gold;
+ text-decoration : underline;
+ pointer-events : none;
+ }
+
+ &.firstPage { margin-right : -5px; }
+
+ &.lastPage { margin-left : -5px; }
+ }
+ }
+
+ button {
+ .colorButton(@green);
+ width : max-content;
+
+ &.previousPage { grid-area : previousPage; }
+
+ &.nextPage { grid-area : nextPage; }
+ }
+
+ }
+ }
+ }
+ }
+}
+
+@keyframes trailingDots {
+
+ 0%,
+ 32% { content : ' .'; }
+
+ 33%,
+ 65% { content : ' ..'; }
+
+ 66%,
+ 100% { content : ' ...'; }
+}
+
+@container (width < 670px) {
+ .vaultPage {
+
+ .dataGroup.form .brewLookup { padding : 1px 20px 20px 10px; }
+
+ .dataGroup.resultsContainer .foundBrews .brewItem {
+ width : 100%;
+ margin-inline : auto;
+ }
+ }
+}
diff --git a/client/homebrew/thumbnail.svg b/client/homebrew/thumbnail.svg
new file mode 100644
index 000000000..d9422909d
--- /dev/null
+++ b/client/homebrew/thumbnail.svg
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ NaturalCritLogo
+
+
+
+
+
+
+
+
+ NaturalCritLogo
+
+
+
+
diff --git a/client/homebrew/utils/customIDBStore.js b/client/homebrew/utils/customIDBStore.js
new file mode 100644
index 000000000..6a3c84400
--- /dev/null
+++ b/client/homebrew/utils/customIDBStore.js
@@ -0,0 +1,19 @@
+import * as IDB from 'idb-keyval/dist/index.js';
+
+export function initCustomStore(db, store){
+ const createCustomStore = async ()=>IDB.createStore(db, store);
+
+ return {
+ entries : async ()=>IDB.entries(await createCustomStore()),
+ keys : async ()=>IDB.keys(await createCustomStore()),
+ values : async ()=>IDB.values(await createCustomStore()),
+ clear : async ()=>IDB.clear(await createCustomStore),
+ get : async (key)=>IDB.get(key, await createCustomStore()),
+ getMany : async (keys)=>IDB.getMany(keys, await createCustomStore()),
+ set : async (key, value)=>IDB.set(key, value, await createCustomStore()),
+ setMany : async (entries)=>IDB.setMany(entries, await createCustomStore()),
+ update : async (key, updateFn)=>IDB.update(key, updateFn, await createCustomStore()),
+ del : async (key)=>IDB.del(key, await createCustomStore()),
+ delMany : async (keys)=>IDB.delMany(keys, await createCustomStore())
+ };
+};
\ No newline at end of file
diff --git a/client/homebrew/utils/request-middleware.js b/client/homebrew/utils/request-middleware.js
index f6bc2571b..01a9d2571 100644
--- a/client/homebrew/utils/request-middleware.js
+++ b/client/homebrew/utils/request-middleware.js
@@ -1,4 +1,4 @@
-const request = require('superagent');
+import request from 'superagent';
const addHeader = (request)=>request.set('Homebrewery-Version', global.version);
@@ -9,4 +9,4 @@ const requestMiddleware = {
delete : (path)=>addHeader(request.delete(path)),
};
-module.exports = requestMiddleware;
\ No newline at end of file
+export default requestMiddleware;
\ No newline at end of file
diff --git a/client/homebrew/utils/request-middleware.spec.js b/client/homebrew/utils/request-middleware.spec.js
new file mode 100644
index 000000000..d7c198394
--- /dev/null
+++ b/client/homebrew/utils/request-middleware.spec.js
@@ -0,0 +1,74 @@
+import requestMiddleware from './request-middleware';
+
+jest.mock('superagent');
+import request from 'superagent';
+
+describe('request-middleware', ()=>{
+ let version;
+
+ let setFn;
+ let testFn;
+
+ beforeEach(()=>{
+ jest.resetAllMocks();
+ version = global.version;
+
+ global.version = '999';
+
+ setFn = jest.fn();
+ testFn = jest.fn(()=>{ return { set: setFn }; });
+ });
+
+ afterEach(()=>{
+ global.version = version;
+ });
+
+ it('should add header to get', ()=>{
+ // Ensure tests functions have been reset
+ expect(testFn).not.toHaveBeenCalled();
+ expect(setFn).not.toHaveBeenCalled();
+
+ request.get = testFn;
+
+ requestMiddleware.get('path');
+
+ expect(testFn).toHaveBeenCalledWith('path');
+ expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
+ });
+
+ it('should add header to put', ()=>{
+ expect(testFn).not.toHaveBeenCalled();
+ expect(setFn).not.toHaveBeenCalled();
+
+ request.put = testFn;
+
+ requestMiddleware.put('path');
+
+ expect(testFn).toHaveBeenCalledWith('path');
+ expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
+ });
+
+ it('should add header to post', ()=>{
+ expect(testFn).not.toHaveBeenCalled();
+ expect(setFn).not.toHaveBeenCalled();
+
+ request.post = testFn;
+
+ requestMiddleware.post('path');
+
+ expect(testFn).toHaveBeenCalledWith('path');
+ expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
+ });
+
+ it('should add header to delete', ()=>{
+ expect(testFn).not.toHaveBeenCalled();
+ expect(setFn).not.toHaveBeenCalled();
+
+ request.delete = testFn;
+
+ requestMiddleware.delete('path');
+
+ expect(testFn).toHaveBeenCalledWith('path');
+ expect(setFn).toHaveBeenCalledWith('Homebrewery-Version', '999');
+ });
+});
diff --git a/client/homebrew/utils/versionHistory.js b/client/homebrew/utils/versionHistory.js
new file mode 100644
index 000000000..f3d6aa97b
--- /dev/null
+++ b/client/homebrew/utils/versionHistory.js
@@ -0,0 +1,120 @@
+import { initCustomStore } from './customIDBStore.js';
+
+export const HISTORY_PREFIX = 'HOMEBREWERY-HISTORY';
+export const HISTORY_SLOTS = 5;
+
+// History values in minutes
+const HISTORY_SAVE_DELAYS = {
+ '0' : 0,
+ '1' : 2,
+ '2' : 10,
+ '3' : 60,
+ '4' : 12 * 60,
+ '5' : 2 * 24 * 60
+};
+// const HISTORY_SAVE_DELAYS = {
+// '0' : 0,
+// '1' : 1,
+// '2' : 2,
+// '3' : 3,
+// '4' : 4,
+// '5' : 5
+// };
+
+const GARBAGE_COLLECT_DELAY = 28 * 24 * 60;
+// const GARBAGE_COLLECT_DELAY = 10;
+
+
+const HB_DB = 'HOMEBREWERY-DB';
+const HB_STORE = 'HISTORY';
+
+const IDB = initCustomStore(HB_DB, HB_STORE);
+
+function getKeyBySlot(brew, slot){
+ // Return a string representing the key for this brew and history slot
+ return `${HISTORY_PREFIX}-${brew.shareId}-${slot}`;
+};
+
+function parseBrewForStorage(brew, slot = 0) {
+ // Strip out unneeded object properties
+ // Returns an array of [ key, brew ]
+ const archiveBrew = {
+ title : brew.title,
+ text : brew.text,
+ style : brew.style,
+ snippets : brew.snippets,
+ version : brew.version,
+ shareId : brew.shareId,
+ savedAt : brew?.savedAt || new Date(),
+ expireAt : new Date()
+ };
+
+ archiveBrew.expireAt.setMinutes(archiveBrew.expireAt.getMinutes() + HISTORY_SAVE_DELAYS[slot]);
+
+ const key = getKeyBySlot(brew, slot);
+
+ return [key, archiveBrew];
+}
+
+export async function loadHistory(brew){
+ const DEFAULT_HISTORY_ITEM = { expireAt: '2000-01-01T00:00:00.000Z', shareId: brew.shareId, noData: true };
+
+ const historyKeys = [];
+
+ // Create array of all history keys
+ for (let i = 1; i <= HISTORY_SLOTS; i++){
+ historyKeys.push(getKeyBySlot(brew, i));
+ };
+
+ // Load all keys from IDB at once
+ const dataArray = await IDB.getMany(historyKeys);
+ return dataArray.map((data)=>{ return data ?? DEFAULT_HISTORY_ITEM; });
+}
+
+export async function updateHistory(brew) {
+ const history = await loadHistory(brew);
+
+ // Walk each version position
+ for (let slot = HISTORY_SLOTS - 1; slot >= 0; slot--){
+ const storedVersion = history[slot];
+
+ // If slot has expired, update all lower slots and break
+ if(new Date() >= new Date(storedVersion.expireAt)){
+
+ // Create array of arrays : [ [key1, value1], [key2, value2], ..., [keyN, valueN] ]
+ // to pass to IDB.setMany
+ const historyUpdate = [];
+
+ for (let updateSlot = slot; updateSlot > 0; updateSlot--){
+ // Move data from updateSlot to updateSlot + 1
+ if(!history[updateSlot - 1]?.noData) {
+ historyUpdate.push(parseBrewForStorage(history[updateSlot - 1], updateSlot + 1));
+ }
+ };
+
+ // Update the most recent brew
+ historyUpdate.push(parseBrewForStorage(brew, 1));
+
+ await IDB.setMany(historyUpdate);
+
+ // Break out of data checks because we found an expired value
+ break;
+ }
+ };
+};
+
+export async function versionHistoryGarbageCollection(){
+ const entries = await IDB.entries();
+
+ const expiredKeys = [];
+ for (const [key, value] of entries){
+ const expireAt = new Date(value.savedAt);
+ expireAt.setMinutes(expireAt.getMinutes() + GARBAGE_COLLECT_DELAY);
+ if(new Date() > expireAt){
+ expiredKeys.push(key);
+ };
+ };
+ if(expiredKeys.length > 0){
+ await IDB.delMany(expiredKeys);
+ }
+};
\ No newline at end of file
diff --git a/client/icons/customIcons.less b/client/icons/customIcons.less
index dd6605326..a2caffc57 100644
--- a/client/icons/customIcons.less
+++ b/client/icons/customIcons.less
@@ -1,57 +1,34 @@
.fac {
- display : inline-block;
-}
-.position-top-left {
- content: url('../icons/position-top-left.svg');
-}
-.position-top-right {
- content: url('../icons/position-top-right.svg');
-}
-.position-bottom-left {
- content: url('../icons/position-bottom-left.svg');
-}
-.position-bottom-right {
- content: url('../icons/position-bottom-right.svg');
-}
-.position-top {
- content: url('../icons/position-top.svg');
-}
-.position-right {
- content: url('../icons/position-right.svg');
-}
-.position-bottom {
- content: url('../icons/position-bottom.svg');
-}
-.position-left {
- content: url('../icons/position-left.svg');
-}
-.mask-edge {
- content: url('../icons/mask-edge.svg');
-}
-.mask-corner {
- content: url('../icons/mask-corner.svg');
-}
-.mask-center {
- content: url('../icons/mask-center.svg');
-}
-.book-front-cover {
- content: url('../icons/book-front-cover.svg');
-}
-.book-back-cover {
- content: url('../icons/book-back-cover.svg');
-}
-.book-inside-cover {
- content: url('../icons/book-inside-cover.svg');
-}
-.book-part-cover {
- content: url('../icons/book-part-cover.svg');
-}
-.davek {
- content: url('../icons/Davek.svg');
-}
-.rellanic {
- content: url('../icons/Rellanic.svg');
-}
-.iokharic {
- content: url('../icons/Iokharic.svg');
+ display : inline-block;
+ width : 1em;
+ aspect-ratio : 1;
+ background-color : currentColor;
+ mask-repeat : no-repeat;
+ mask-position : center;
+ mask-size : contain;
}
+.position-top-left { mask-image : url('../icons/position-top-left.svg'); }
+.position-top-right { mask-image : url('../icons/position-top-right.svg'); }
+.position-bottom-left { mask-image : url('../icons/position-bottom-left.svg'); }
+.position-bottom-right { mask-image : url('../icons/position-bottom-right.svg'); }
+.position-top { mask-image : url('../icons/position-top.svg'); }
+.position-right { mask-image : url('../icons/position-right.svg'); }
+.position-bottom { mask-image : url('../icons/position-bottom.svg'); }
+.position-left { mask-image : url('../icons/position-left.svg'); }
+.mask-edge { mask-image : url('../icons/mask-edge.svg'); }
+.mask-corner { mask-image : url('../icons/mask-corner.svg'); }
+.mask-center { mask-image : url('../icons/mask-center.svg'); }
+.book-front-cover { mask-image : url('../icons/book-front-cover.svg'); }
+.book-back-cover { mask-image : url('../icons/book-back-cover.svg'); }
+.book-inside-cover { mask-image : url('../icons/book-inside-cover.svg'); }
+.book-part-cover { mask-image : url('../icons/book-part-cover.svg'); }
+.image-wrap-left { mask-image : url('../icons/image-wrap-left.svg'); }
+.image-wrap-right { mask-image : url('../icons/image-wrap-right.svg'); }
+.davek { mask-image : url('../icons/Davek.svg'); }
+.rellanic { mask-image : url('../icons/Rellanic.svg'); }
+.iokharic { mask-image : url('../icons/Iokharic.svg'); }
+.zoom-to-fit { mask-image : url('../icons/zoom-to-fit.svg'); }
+.fit-width { mask-image : url('../icons/fit-width.svg'); }
+.single-spread { mask-image : url('../icons/single-spread.svg'); }
+.facing-spread { mask-image : url('../icons/facing-spread.svg'); }
+.flow-spread { mask-image : url('../icons/flow-spread.svg'); }
diff --git a/client/icons/facing-spread.svg b/client/icons/facing-spread.svg
new file mode 100644
index 000000000..fbff1c948
--- /dev/null
+++ b/client/icons/facing-spread.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/client/icons/fit-width.svg b/client/icons/fit-width.svg
new file mode 100644
index 000000000..dd3e52f75
--- /dev/null
+++ b/client/icons/fit-width.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/icons/flow-spread.svg b/client/icons/flow-spread.svg
new file mode 100644
index 000000000..28193cb0b
--- /dev/null
+++ b/client/icons/flow-spread.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/icons/image-wrap-left.svg b/client/icons/image-wrap-left.svg
new file mode 100644
index 000000000..fe1024e43
--- /dev/null
+++ b/client/icons/image-wrap-left.svg
@@ -0,0 +1,58 @@
+
+
diff --git a/client/icons/image-wrap-right.svg b/client/icons/image-wrap-right.svg
new file mode 100644
index 000000000..336a20b64
--- /dev/null
+++ b/client/icons/image-wrap-right.svg
@@ -0,0 +1,58 @@
+
+
diff --git a/client/icons/single-spread.svg b/client/icons/single-spread.svg
new file mode 100644
index 000000000..06396e589
--- /dev/null
+++ b/client/icons/single-spread.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/client/icons/zoom-to-fit.svg b/client/icons/zoom-to-fit.svg
new file mode 100644
index 000000000..5179ec45e
--- /dev/null
+++ b/client/icons/zoom-to-fit.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/template.js b/client/template.js
index c77f953ff..537be6748 100644
--- a/client/template.js
+++ b/client/template.js
@@ -8,11 +8,12 @@ const template = async function(name, title='', props = {}){
});
const ogMetaTags = ogTags.join('\n');
+ const ssrModule = await import(`../build/${name}/ssr.cjs`);
+
return `
-
@@ -21,7 +22,7 @@ const template = async function(name, title='', props = {}){
${title.length ? `${title} - The Homebrewery`: 'The Homebrewery - NaturalCrit'}
- ${require(`../build/${name}/ssr.js`)(props)}
+ ${ssrModule.default(props)}
@@ -29,4 +30,4 @@ const template = async function(name, title='', props = {}){
`;
};
-module.exports = template;
\ No newline at end of file
+export default template;
\ No newline at end of file
diff --git a/config/default.json b/config/default.json
index 70c90593e..bea3b2663 100644
--- a/config/default.json
+++ b/config/default.json
@@ -4,6 +4,9 @@
"secret" : "secret",
"web_port" : 8000,
"enable_v3" : true,
+ "enable_themes" : true,
"local_environments" : ["docker", "local"],
- "publicUrl" : "https://homebrewery.naturalcrit.com"
+ "publicUrl" : "https://homebrewery.naturalcrit.com",
+ "hb_images" : null,
+ "hb_fonts" : null
}
diff --git a/docker-compose.yml b/docker-compose.yml
index f74fadc0a..d7e5f3b90 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,3 @@
-version: '2'
services:
mongodb:
image: mongo:latest
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 000000000..25d0395c7
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,71 @@
+import react from "eslint-plugin-react";
+import jest from "eslint-plugin-jest";
+import globals from "globals";
+
+export default [{
+ ignores: ["build/"]
+ },
+ {
+ files : ['**/*.js', '**/*.jsx'],
+ plugins : { react, jest },
+ languageOptions : {
+ ecmaVersion : "latest",
+ sourceType : "module",
+ parserOptions : { ecmaFeatures: { jsx: true } },
+ globals : { ...globals.browser, ...globals.node }
+ },
+ rules: {
+ /** Errors **/
+ "camelcase" : ["error", { properties: "never" }],
+ "no-array-constructor" : "error",
+ "no-iterator" : "error",
+ "no-nested-ternary" : "error",
+ "no-new-object" : "error",
+ "no-proto" : "error",
+ "react/jsx-no-bind" : ["error", { allowArrowFunctions: true }],
+ "react/jsx-uses-react" : "error",
+ "react/prefer-es6-class" : ["error", "never"],
+ "jest/valid-expect" : ["error", { maxArgs: 3 }],
+
+ /** Warnings **/
+ "max-lines" : ["warn", { max: 200, skipComments: true, skipBlankLines: true }],
+ "max-depth" : ["warn", { max: 4 }],
+ "max-params" : ["warn", { max: 5 }],
+ "no-restricted-syntax" : ["warn", "ClassDeclaration", "SwitchStatement"],
+ "no-unused-vars" : ["warn", { vars: "all", args: "none", varsIgnorePattern: "config|_|cx|createClass" }],
+ "react/jsx-uses-vars" : "warn",
+
+ /** Fixable **/
+ "arrow-parens" : ["warn", "always"],
+ "brace-style" : ["warn", "1tbs", { allowSingleLine: true }],
+ "jsx-quotes" : ["warn", "prefer-single"],
+ "no-var" : "warn",
+ "prefer-const" : "warn",
+ "prefer-template" : "warn",
+ "quotes" : ["warn", "single", { allowTemplateLiterals: true }],
+ "semi" : ["warn", "always"],
+
+ /** Whitespace **/
+ "array-bracket-spacing" : ["warn", "never"],
+ "arrow-spacing" : ["warn", { before: false, after: false }],
+ "comma-spacing" : ["warn", { before: false, after: true }],
+ "indent" : ["warn", "tab", { MemberExpression: "off" }],
+ "linebreak-style" : "off",
+ "no-trailing-spaces" : "warn",
+ "no-whitespace-before-property" : "warn",
+ "object-curly-spacing" : ["warn", "always"],
+ "react/jsx-indent-props" : ["warn", "tab"],
+ "space-in-parens" : ["warn", "never"],
+ "template-curly-spacing" : ["warn", "never"],
+ "keyword-spacing" : ["warn", {
+ before : true,
+ after : true,
+ overrides : { if: { before: false, after: false } }
+ }],
+ "key-spacing" : ["warn", {
+ multiLine : { beforeColon: true, afterColon: true, align: "colon" },
+ singleLine : { beforeColon: false, afterColon: true }
+ }]
+ }
+ }
+];
\ No newline at end of file
diff --git a/faq.md b/faq.md
index c7254952b..d3b6d24f6 100644
--- a/faq.md
+++ b/faq.md
@@ -69,7 +69,6 @@ pre {
You can check the site status here: [Everyone or Just Me](https://downforeveryoneorjustme.com/homebrewery.naturalcrit.com)
-
### Why am I getting an error when trying to save, and my account is linked to Google?
A sign-in with Google only lasts a year until the authentication expires. You must go [here](https://www.naturalcrit.com/login), click the *Log-out* button, and then sign back in using your Google account.
@@ -82,12 +81,17 @@ If you have linked your account with a Google account, you would change your pas
### Is there a way to restore a previous version of my brew?
-Currently, there is no way to do this through the site yourself. This would take too much of a toll on the amount of storage the homebrewery requires. However, we do have daily backups of our database that we keep for 8 days, and you can contact the moderators on [the subreddit](https://www.reddit.com/r/homebrewery) with your Homebrewery username, the name of the lost brew, and the last known time it was working properly. We can manually look through our backups and restore it if it exists.
+In your brew, there is an icon, :fas_clock_rotate_left:, that button opens up a menu with versions of your brew, stored in order from newer to older, up to a week old. Because of the amount of duplicates this function creates, this information is stored in **your browser**, so if you were to uninstall it or clear your cookies and site data, or change computers, the info will not be there.
+
+Also, we do have daily backups of our database that we keep for 8 days, and you can contact the moderators on [the subreddit](https://www.reddit.com/r/homebrewery) with your Homebrewery username, the name of the lost brew, and the last known time it was working properly. We can manually look through our backups and restore it if it exists.
+
### I worked on a brew for X hours, and suddenly all the text disappeared!
This usually happens if you accidentally drag-select all of your text and then start typing which overwrites the selection. Do not panic, and do not refresh the page or reload your brew quite yet as it is probably auto-saved in this state already. Simply press CTRL+Z as many times as needed to undo your last few changes and you will be back to where you were, then make sure to save your brew in the "good" state.
+You can also load a history version old enough to have all the text, using the :fas_clock_rotate_left: history versions button.
+
\column
### Why is only Chrome supported?
@@ -112,10 +116,7 @@ Once you have an image you would like to use, it is recommended to host it somew
\page
### A particular font does not work for my language, what do I do?
-The fonts used were originally created for use with the English language, though revisions since then have added more support for other languages. They are still not complete sets and may be missing a glyph/character you need. Unfortunately, the volunteer group as it stands at the time of this writing does not have a font guru, so it would be difficult to add more glyphs (especially complicated glyphs). Let us know which glyph is missing on the subreddit, but you may need to search [Google Fonts](https://fonts.google.com) for an alternative font if you need something fast.
-
-### Whenever I click on the "Get PDF" button, instead of getting a download, it opens Print Preview in another tab.
-Yes, this is by design. In the print preview, select "Save as PDF" as the Destination, and then click "Save". There will be a normal download dialog where you can save your brew as a PDF.
+The fonts used were originally created for use with the English language, though revisions since then have added more support for other languages. They are still not complete sets and may be missing a glyph/character you need. Unfortunately, the volunteer group as it stands at the time of this writing does not have a font guru, so it would be difficult to add more glyphs (especially complicated glyphs). Let us know which glyph is missing on the subreddit, but you may need to search [Google Fonts](https://fonts.google.com) for an alternative font if you need something fast.
### I have white borders on the bottom/sides of the print preview.
@@ -126,4 +127,8 @@ The Homebrewery defaults to creating US Letter page sizes. If you are printing
### Typing `#### Adhesion` in the text editor doesn't show the header at all in the completed page?
-Your ad-blocking software is mistakenly assuming your text to be an ad. Whitelist homebrewery.naturalcrit.com in your ad-blocking software.
+Your ad-blocking software is mistakenly assuming your text to be an ad. We recommend whitelisting homebrewery.naturalcrit.com in your ad-blocking software, as we have no ads.
+
+### My username appears as _hidden_ when checking my brews in the Vault, why is that?
+
+Your username is most likely your e-mail adress, and our code is picking that up and protecting your identity. This will remain as is, but you can ask for a name change by contacting the moderators on [the subreddit](https://www.reddit.com/r/homebrewery) with your Homebrewery username, and your desired new name. You will also be asked to provide details about some of your unpublished brews, to verify your identity. No information will be leaked or shared.
diff --git a/font-awesome-source/README.md b/font-awesome-source/README.md
new file mode 100644
index 000000000..fe9fa33d9
--- /dev/null
+++ b/font-awesome-source/README.md
@@ -0,0 +1,3 @@
+# About
+
+Run `deploy.bash` to download, extract, and deploy the font awesome files into place for building. Should only be needed when Font Awesome version changes and we want the new version.
\ No newline at end of file
diff --git a/font-awesome-source/deploy.bash b/font-awesome-source/deploy.bash
new file mode 100644
index 000000000..d823a9093
--- /dev/null
+++ b/font-awesome-source/deploy.bash
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# Deploys the Font Awesome files for HB self-hosting to settle various issues.
+
+THEURL=https://use.fontawesome.com/releases/v6.7.2/fontawesome-free-6.7.2-web.zip
+THEFILE=fontawesome-free-6.7.2-web.zip
+if [ ! "$(which wget)" ]; then
+ echo "Please manually download ${THEURL}"
+ exit -1
+fi
+
+wget ${THEURL}
+if [ $? -ne 0 ]; then
+ echo "Error downloading ${THEURL}"
+ exit -2
+fi
+
+if [ ! "$(which unzip)" ]; then
+ echo "Please unzip the file with your tool of choice."
+ exit -3
+fi
+
+unzip fontawesome-free-6.7.2-web.zip
+if [ $? -ne 0 ]; then
+ echo "Error extracting ${THEFILE}"
+fi
+
+echo "Copying fonts"
+cp -rv fontawesome-free-*-web/webfonts/*.woff2 ../themes/fonts/iconFonts
+echo "Copying and updating css"
+
+echo "fontawesome-free.less"
+sed 's/..\/webfonts/\/fonts\/iconFonts/g' fontawesome-free-*-web/css/fontawesome.css > ../themes/fonts/iconFonts/fontawesome-free.less
+
+echo "fontawesome-solid.less"
+sed 's/..\/webfonts/\/fonts\/iconFonts/g' fontawesome-free-*-web/css/solid.css > ../themes/fonts/iconFonts/fontawesome-solid.less
+
+echo "fontawesome-brands.less"
+sed 's/..\/webfonts/\/fonts\/iconFonts/g' fontawesome-free-*-web/css/brands.css > ../themes/fonts/iconFonts/fontawesome-brands.less
+
+echo "fontawesome-regular.less"
+sed 's/..\/webfonts/\/fonts\/iconFonts/g' fontawesome-free-*-web/css/regular.css > ../themes/fonts/iconFonts/fontawesome-regular.less
diff --git a/install/README.UBUNTU.md b/install/README.UBUNTU.md
index d14cfef46..13fa7631d 100644
--- a/install/README.UBUNTU.md
+++ b/install/README.UBUNTU.md
@@ -24,12 +24,16 @@ These instructions assume that you are installing to a completely new, fresh Ubu
These installation instructions have been tested on the following Ubuntu releases:
-- *ubuntu-20.04.3-desktop-amd64*
+ - *ubuntu-24.04.1-desktop-amd64*
+ - *ubuntu-22.04.5-desktop-amd64*
+ - *ubuntu-20.04.6-desktop-amd64*
## Final Notes
While this installation process works successfully at the time of writing (December 19, 2021), it relies on all of the Node.JS packages used in the HomeBrewery project retaining their cross-platform capabilities to continue to function. This is one of the inherent advantages of Node.JS, but it is by no means guaranteed and as such, functionality or even installation may fail without warning at some point in the future.
+Earlier versions of Ubuntu may requier an alternate Mongo setup, see https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/ for assistance.
+
Regards,
G
December 19, 2021
diff --git a/install/ubuntu/etc/systemd/system/homebrewery.service b/install/ubuntu/etc/systemd/system/homebrewery.service
index 939d11fb8..defa85a31 100644
--- a/install/ubuntu/etc/systemd/system/homebrewery.service
+++ b/install/ubuntu/etc/systemd/system/homebrewery.service
@@ -3,7 +3,8 @@ Description=Homebrewery Web Server
[Service]
User=root
-After=mongodb
+BindsTo=mongod.service
+After=mongod.service
Environment=NODE_ENV=local
WorkingDirectory=/usr/local/homebrewery
ExecStart=node server.js
diff --git a/install/ubuntu/install.sh b/install/ubuntu/install.sh
index ebad7f3f2..a0fcc8c17 100644
--- a/install/ubuntu/install.sh
+++ b/install/ubuntu/install.sh
@@ -1,14 +1,60 @@
#!/bin/sh
+# Detect Ubuntu Version
+export DISTRO=$(grep "^NAME=" /etc/os-release | awk -F '=' '{print $2}' | sed 's/"//g')
+export DISTRO_VER=$(grep "VERSION_ID=" /etc/os-release | awk -F '=' '{print $2}' | sed 's/"//g')
+export MATCHED="Yes"
+
+if [ "${DISTRO}" != "Ubuntu" ];
+then
+ echo :: Ubuntu not detected. Are you using an alternate spin or derivative?
+ echo :: Detected - ${DISTRO}
+ read -p [y/N] YESNO
+ if [ "${YESNO}" != "Y" ] && [ ]"${YESNO}" != "y" ]; then
+ exit
+ fi
+
+ MATCHED="No"
+fi
+
# Install CURL and add required NodeJS source to package repo
echo ::Install CURL
apt install -y curl
echo ::Add NodeJS source to package repo
-curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
+curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
+# Add Mongo CE Source
+if [ ${DISTRO} = "Ubuntu" ];
+ then
+ echo ::Add Mongo CE source to package repo
+ curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
+ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
+ --dearmor
+ if [ "${DISTRO_VER}" == "24.04" ]; then
+ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
+ elif [ "${DISTRO_VER}" == "22.04" ]; then
+ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
+ elif [ "${DISTRO_VER}" == "20.04" ]; then
+ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
+ else
+ MATCHED="No"
+ fi
+ sudo apt-get update
+fi
+
+if [ ${MATCHED} == "No" ]; then
+ echo :: WARNING
+ echo :: Unable to determine Ubuntu version for Mongo installation purposes.
+ echo :: Please check your spin/distro documentation to install Mongo CE and enable it on startup.
+fi
+
# Install required packages
echo ::Install Homebrewery requirements
-apt satisfy -y git nodejs npm mongodb
+apt satisfy -y git nodejs npm mongodb-org
+
+# Enable and start Mongo
+systemctl enable mongod
+systemctl start mongod
# Clone Homebrewery repo
echo ::Get Homebrewery files
diff --git a/package-lock.json b/package-lock.json
index cce4d5577..430fb6778 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,128 +1,138 @@
{
"name": "homebrewery",
- "version": "3.13.1",
+ "version": "3.19.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "homebrewery",
- "version": "3.13.1",
+ "version": "3.19.3",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@babel/core": "^7.24.7",
- "@babel/plugin-transform-runtime": "^7.24.7",
- "@babel/preset-env": "^7.24.7",
- "@babel/preset-react": "^7.24.7",
- "@googleapis/drive": "^8.11.0",
- "body-parser": "^1.20.2",
+ "@babel/core": "^7.27.1",
+ "@babel/plugin-transform-runtime": "^7.28.0",
+ "@babel/preset-env": "^7.28.0",
+ "@babel/preset-react": "^7.27.1",
+ "@babel/runtime": "^7.27.6",
+ "@dmsnell/diff-match-patch": "^1.1.0",
+ "@googleapis/drive": "^13.0.1",
+ "@sanity/diff-match-patch": "^3.2.0",
+ "body-parser": "^2.2.0",
"classnames": "^2.5.1",
"codemirror": "^5.65.6",
- "cookie-parser": "^1.4.6",
+ "cookie-parser": "^1.4.7",
+ "core-js": "^3.44.0",
+ "cors": "^2.8.5",
"create-react-class": "^15.7.0",
"dedent-tabs": "^0.10.3",
- "dompurify": "^3.1.5",
"expr-eval": "^2.0.2",
- "express": "^4.19.2",
+ "express": "^5.1.0",
"express-async-handler": "^1.2.0",
- "express-static-gzip": "2.1.7",
- "fs-extra": "11.2.0",
+ "express-static-gzip": "3.0.0",
+ "fflate": "^0.8.2",
+ "fs-extra": "11.3.0",
+ "hash-wasm": "^4.12.0",
+ "idb-keyval": "^6.2.2",
"js-yaml": "^4.1.0",
"jwt-simple": "^0.5.6",
"less": "^3.13.1",
"lodash": "^4.17.21",
- "marked": "11.2.0",
- "marked-emoji": "^1.4.1",
- "marked-extended-tables": "^1.0.8",
- "marked-gfm-heading-id": "^3.2.0",
- "marked-smartypants-lite": "^1.0.2",
+ "marked": "15.0.12",
+ "marked-alignment-paragraphs": "^1.0.0",
+ "marked-definition-lists": "^1.0.1",
+ "marked-emoji": "^2.0.1",
+ "marked-extended-tables": "^2.0.1",
+ "marked-gfm-heading-id": "^4.1.2",
+ "marked-nonbreaking-spaces": "^1.0.1",
+ "marked-smartypants-lite": "^1.0.3",
+ "marked-subsuper-text": "^1.0.3",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.30.1",
- "mongoose": "^8.4.5",
- "nanoid": "3.3.4",
- "nconf": "^0.12.1",
+ "mongoose": "^8.16.3",
+ "nanoid": "5.1.5",
+ "nconf": "^0.13.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-frame-component": "^4.1.3",
- "react-router-dom": "6.24.1",
+ "react-router": "^7.6.3",
+ "romans": "^3.1.0",
"sanitize-filename": "1.6.3",
- "superagent": "^9.0.2",
- "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
+ "superagent": "^10.2.1",
+ "vitreum": "git+https://git@github.com/calculuschild/vitreum.git",
+ "written-number": "^0.11.1"
},
"devDependencies": {
- "eslint": "^8.57.0",
- "eslint-plugin-jest": "^28.6.0",
- "eslint-plugin-react": "^7.34.3",
- "jest": "^29.7.0",
+ "@stylistic/stylelint-plugin": "^4.0.0",
+ "babel-plugin-transform-import-meta": "^2.3.3",
+ "eslint": "^9.34.0",
+ "eslint-plugin-jest": "^29.0.1",
+ "eslint-plugin-react": "^7.37.5",
+ "globals": "^16.3.0",
+ "jest": "^30.0.5",
"jest-expect-message": "^1.1.3",
+ "jsdom-global": "^3.0.2",
"postcss-less": "^6.0.0",
- "stylelint": "^15.11.0",
- "stylelint-config-recess-order": "^4.6.0",
- "stylelint-config-recommended": "^13.0.0",
- "stylelint-stylistic": "^0.4.3",
- "supertest": "^7.0.0"
+ "stylelint": "^16.23.1",
+ "stylelint-config-recess-order": "^7.2.0",
+ "stylelint-config-recommended": "^17.0.0",
+ "supertest": "^7.1.4"
},
"engines": {
- "node": "^20.8.x",
- "npm": "^10.2.x"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": "^20.18.x",
+ "npm": "^10.8.x"
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "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.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "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/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
- "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz",
+ "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
- "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz",
+ "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helpers": "^7.24.7",
- "@babel/parser": "^7.24.7",
- "@babel/template": "^7.24.7",
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.0",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.27.3",
+ "@babel/helpers": "^7.27.6",
+ "@babel/parser": "^7.28.0",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.0",
+ "@babel/types": "^7.28.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -137,69 +147,41 @@
"url": "https://opencollective.com/babel"
}
},
- "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=="
- },
"node_modules/@babel/generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
- "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz",
+ "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==",
"dependencies": {
- "@babel/types": "^7.24.7",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
+ "@babel/parser": "^7.28.0",
+ "@babel/types": "^7.28.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
+ "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==",
"dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.27.3"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
- "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
+ "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.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "browserslist": "^4.22.2",
+ "@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"
},
@@ -208,18 +190,17 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz",
- "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
+ "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.7",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/traverse": "^7.27.1",
"semver": "^6.3.1"
},
"engines": {
@@ -230,12 +211,13 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz",
- "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz",
+ "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "regexpu-core": "^6.2.0",
"semver": "^6.3.1"
},
"engines": {
@@ -246,88 +228,62 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz",
- "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
+ "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "debug": "^4.4.1",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
+ "resolve": "^1.22.10"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
- "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
- "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
- "dependencies": {
- "@babel/template": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
- "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
+ "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==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz",
- "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
+ "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
+ "license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "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.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
- "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
+ "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7"
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.27.3"
},
"engines": {
"node": ">=6.9.0"
@@ -337,32 +293,35 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+ "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz",
- "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
+ "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-wrap-function": "^7.24.7"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-wrap-function": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -372,13 +331,14 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz",
- "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
+ "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.7",
- "@babel/helper-optimise-call-expression": "^7.24.7"
+ "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -387,109 +347,79 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+ "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "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==",
- "dependencies": {
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
- "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
+ "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.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
- "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
+ "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/helper-wrap-function": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz",
- "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz",
+ "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-function-name": "^7.24.7",
- "@babel/template": "^7.24.7",
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/template": "^7.27.1",
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
- "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
+ "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
"dependencies": {
- "@babel/template": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
- "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz",
+ "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
+ "dependencies": {
+ "@babel/types": "^7.28.0"
+ },
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -498,12 +428,28 @@
}
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz",
- "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz",
+ "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz",
+ "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -513,11 +459,12 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz",
- "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
+ "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -527,13 +474,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
+ "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/plugin-transform-optional-chaining": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -543,12 +491,13 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz",
- "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz",
+ "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -561,6 +510,7 @@
"version": "7.21.0-placeholder-for-preset-env.2",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
"integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
},
@@ -572,6 +522,8 @@
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -584,6 +536,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
"integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -595,6 +548,8 @@
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -606,6 +561,8 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -616,34 +573,13 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
- "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
+ "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -653,11 +589,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
- "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
+ "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -670,6 +607,8 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -681,6 +620,8 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -689,11 +630,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
- "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
+ "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -706,6 +648,8 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -717,6 +661,8 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -728,6 +674,8 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -739,6 +687,8 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -750,6 +700,8 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -761,6 +713,8 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -772,6 +726,8 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -786,6 +742,8 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -797,12 +755,13 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
- "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
+ "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -815,6 +774,7 @@
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
"integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -827,11 +787,12 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
+ "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -841,14 +802,13 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz",
- "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
+ "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-remap-async-to-generator": "^7.27.1",
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -858,13 +818,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
+ "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-remap-async-to-generator": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -874,11 +835,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
+ "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -888,11 +850,11 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz",
- "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz",
+ "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -902,12 +864,13 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz",
- "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
+ "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -917,13 +880,13 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz",
+ "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -933,18 +896,16 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz",
- "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz",
+ "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
- "globals": "^11.1.0"
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -954,12 +915,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
+ "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/template": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -969,11 +931,12 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz",
- "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
+ "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -983,12 +946,13 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
+ "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -998,11 +962,12 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
+ "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1011,13 +976,44 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
+ "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz",
+ "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-explicit-resource-management": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
+ "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1027,12 +1023,12 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
+ "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1042,12 +1038,12 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz",
+ "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1057,12 +1053,13 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
+ "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1072,13 +1069,14 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz",
- "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
+ "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-compilation-targets": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1088,12 +1086,12 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
+ "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1103,11 +1101,12 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz",
- "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
+ "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1117,12 +1116,12 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz",
+ "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1132,11 +1131,12 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
+ "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1146,12 +1146,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
+ "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1161,13 +1162,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz",
- "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
+ "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7"
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1177,14 +1178,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz",
- "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz",
+ "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-hoist-variables": "^7.24.7",
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7"
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1194,12 +1196,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
+ "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1209,12 +1212,13 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
+ "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1224,11 +1228,12 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
+ "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1238,12 +1243,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
+ "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1253,12 +1258,12 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
+ "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1268,14 +1273,15 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz",
+ "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0",
+ "@babel/plugin-transform-parameters": "^7.27.7",
+ "@babel/traverse": "^7.28.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1285,12 +1291,13 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
+ "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1300,12 +1307,12 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
+ "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1315,13 +1322,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz",
+ "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1331,11 +1338,11 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
+ "version": "7.27.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
+ "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1345,12 +1352,13 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz",
- "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
+ "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1360,14 +1368,14 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
+ "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1377,11 +1385,12 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
+ "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1391,11 +1400,12 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
- "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz",
+ "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1405,15 +1415,16 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz",
- "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
+ "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-jsx": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1423,11 +1434,12 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
- "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz",
+ "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.24.7"
+ "@babel/plugin-transform-react-jsx": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1437,12 +1449,13 @@
}
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
- "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz",
+ "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1452,12 +1465,11 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz",
+ "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1466,12 +1478,29 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
+ "node_modules/@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
+ "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
+ "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1481,15 +1510,15 @@
}
},
"node_modules/@babel/plugin-transform-runtime": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz",
- "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.0.tgz",
+ "integrity": "sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA==",
"dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.1",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
"semver": "^6.3.1"
},
"engines": {
@@ -1500,11 +1529,12 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
+ "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1514,12 +1544,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
+ "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1529,11 +1560,12 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
+ "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1543,11 +1575,12 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
+ "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1557,11 +1590,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz",
- "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
+ "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1571,11 +1605,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
+ "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1585,12 +1620,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
+ "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1600,12 +1636,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
+ "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1615,12 +1652,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz",
- "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
+ "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1630,90 +1668,79 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz",
- "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz",
+ "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==",
"dependencies": {
- "@babel/compat-data": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7",
+ "@babel/compat-data": "^7.28.0",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-import-assertions": "^7.27.1",
+ "@babel/plugin-syntax-import-attributes": "^7.27.1",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.24.7",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.24.7",
- "@babel/plugin-transform-class-properties": "^7.24.7",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.24.7",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.7",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.24.7",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.24.7",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.7",
- "@babel/plugin-transform-modules-systemjs": "^7.24.7",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.24.7",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.7",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.24.7",
+ "@babel/plugin-transform-arrow-functions": "^7.27.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.28.0",
+ "@babel/plugin-transform-async-to-generator": "^7.27.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
+ "@babel/plugin-transform-block-scoping": "^7.28.0",
+ "@babel/plugin-transform-class-properties": "^7.27.1",
+ "@babel/plugin-transform-class-static-block": "^7.27.1",
+ "@babel/plugin-transform-classes": "^7.28.0",
+ "@babel/plugin-transform-computed-properties": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0",
+ "@babel/plugin-transform-dotall-regex": "^7.27.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.27.1",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-dynamic-import": "^7.27.1",
+ "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.27.1",
+ "@babel/plugin-transform-export-namespace-from": "^7.27.1",
+ "@babel/plugin-transform-for-of": "^7.27.1",
+ "@babel/plugin-transform-function-name": "^7.27.1",
+ "@babel/plugin-transform-json-strings": "^7.27.1",
+ "@babel/plugin-transform-literals": "^7.27.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.27.1",
+ "@babel/plugin-transform-member-expression-literals": "^7.27.1",
+ "@babel/plugin-transform-modules-amd": "^7.27.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.27.1",
+ "@babel/plugin-transform-modules-umd": "^7.27.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-new-target": "^7.27.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
+ "@babel/plugin-transform-numeric-separator": "^7.27.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.28.0",
+ "@babel/plugin-transform-object-super": "^7.27.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
+ "@babel/plugin-transform-optional-chaining": "^7.27.1",
+ "@babel/plugin-transform-parameters": "^7.27.7",
+ "@babel/plugin-transform-private-methods": "^7.27.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.27.1",
+ "@babel/plugin-transform-property-literals": "^7.27.1",
+ "@babel/plugin-transform-regenerator": "^7.28.0",
+ "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
+ "@babel/plugin-transform-reserved-words": "^7.27.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.27.1",
+ "@babel/plugin-transform-spread": "^7.27.1",
+ "@babel/plugin-transform-sticky-regex": "^7.27.1",
+ "@babel/plugin-transform-template-literals": "^7.27.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.27.1",
+ "@babel/plugin-transform-unicode-escapes": "^7.27.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.4",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.31.0",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
+ "core-js-compat": "^3.43.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1727,6 +1754,7 @@
"version": "0.1.6-no-external-plugins",
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
"integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/types": "^7.4.4",
@@ -1737,16 +1765,17 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz",
- "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz",
+ "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "@babel/plugin-transform-react-display-name": "^7.24.7",
- "@babel/plugin-transform-react-jsx": "^7.24.7",
- "@babel/plugin-transform-react-jsx-development": "^7.24.7",
- "@babel/plugin-transform-react-pure-annotations": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-transform-react-display-name": "^7.27.1",
+ "@babel/plugin-transform-react-jsx": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-development": "^7.27.1",
+ "@babel/plugin-transform-react-pure-annotations": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1755,63 +1784,52 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
- },
"node_modules/@babel/runtime": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz",
- "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
+ "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
- "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
+ "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.24.7",
- "@babel/parser": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
- "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz",
+ "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==",
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.7",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-hoist-variables": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
- "@babel/parser": "^7.24.7",
- "@babel/types": "^7.24.7",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.0",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.0",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
- "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz",
+ "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1821,12 +1839,13 @@
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
- "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
+ "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,
"funding": [
{
@@ -1839,16 +1858,16 @@
}
],
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.2.0"
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
"node_modules/@csstools/css-tokenizer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
- "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
+ "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,
"funding": [
{
@@ -1861,13 +1880,13 @@
}
],
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz",
- "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==",
+ "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,
"funding": [
{
@@ -1879,41 +1898,96 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.3.1",
- "@csstools/css-tokenizer": "^2.2.0"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz",
- "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==",
+ "node_modules/@dmsnell/diff-match-patch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@dmsnell/diff-match-patch/-/diff-match-patch-1.1.0.tgz",
+ "integrity": "sha512-yejLPmM5pjsGvxS9gXablUSbInW7H976c/FJ4iQxWIm7/38xBySRemTPDe34lhg1gVLbJntX0+sH0jYfU+PN9A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@dual-bundle/import-meta-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "engines": {
- "node": "^14 || ^16 || >=18"
- },
- "peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/@emnapi/core": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz",
+ "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.0.4",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/core/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz",
+ "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz",
+ "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
"integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.3.0"
},
@@ -1925,24 +1999,62 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz",
+ "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==",
"dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.6",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz",
+ "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz",
+ "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "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,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -1950,71 +2062,105 @@
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.23.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
- "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/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,
- "engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "version": "9.34.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz",
+ "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
"dev": true,
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz",
+ "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.15.2",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@googleapis/drive": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@googleapis/drive/-/drive-8.11.0.tgz",
- "integrity": "sha512-HW6/2oThc4X086mGkZxpdP4P+aHpYbjHa6wr9l1F/R+snpk6G8/EuRXEcTkgQUl2t/NdNz3lj8re0AQBG5faSA==",
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/@googleapis/drive/-/drive-13.0.1.tgz",
+ "integrity": "sha512-n6smJQyKTllRbXI8Xe/9IsCI+tuY20bhs9lircO+t2+a4k2t08NCZuujsBgIBTiE29v2kDzrrKdsuPxg5lUmXw==",
"dependencies": {
- "googleapis-common": "^7.0.0"
+ "googleapis-common": "^8.0.2-rc.0"
},
"engines": {
"node": ">=12.0.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "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,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "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,
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -2022,6 +2168,7 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.22"
},
@@ -2030,17 +2177,129 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
- "dev": true
+ "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,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "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"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "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"
+ },
+ "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,
+ "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/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "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/@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,
+ "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/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
"integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^5.3.1",
"find-up": "^4.1.0",
@@ -2057,6 +2316,7 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
@@ -2066,6 +2326,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -2079,6 +2340,7 @@
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -2092,6 +2354,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -2104,6 +2367,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -2119,6 +2383,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -2131,6 +2396,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -2140,699 +2406,479 @@
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@jest/console": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.5.tgz",
+ "integrity": "sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
+ "chalk": "^4.1.2",
+ "jest-message-util": "30.0.5",
+ "jest-util": "30.0.5",
"slash": "^3.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/console/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/console/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,
- "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/@jest/console/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/console/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@jest/console/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/@jest/core": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.5.tgz",
+ "integrity": "sha512-fKD0OulvRsXF1hmaFgHhVJzczWzA1RXMMo9LTPuFXo9q/alDbME3JIyWYqovWsUBWSoBcsHaGPSLF9rz4l9Qeg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/reporters": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/console": "30.0.5",
+ "@jest/pattern": "30.0.1",
+ "@jest/reporters": "30.0.5",
+ "@jest/test-result": "30.0.5",
+ "@jest/transform": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.7.0",
- "jest-config": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-resolve-dependencies": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/core/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/core/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,
- "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/@jest/core/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/core/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@jest/core/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/core/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/environment": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
- "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
- "dev": true,
- "dependencies": {
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-mock": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
- "dev": true,
- "dependencies": {
- "expect": "^29.7.0",
- "jest-snapshot": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
- "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
- "dev": true,
- "dependencies": {
- "jest-get-type": "^29.6.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/fake-timers": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
- "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/globals": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
- "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/types": "^29.6.3",
- "jest-mock": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
- "dev": true,
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^6.0.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/reporters/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/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,
- "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/@jest/reporters/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/reporters/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@jest/reporters/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/reporters/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@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,
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/source-map": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.18",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
- "dev": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
- "dev": true,
- "dependencies": {
- "@jest/test-result": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "exit-x": "^0.2.2",
+ "graceful-fs": "^4.2.11",
+ "jest-changed-files": "30.0.5",
+ "jest-config": "30.0.5",
+ "jest-haste-map": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.0.5",
+ "jest-resolve-dependencies": "30.0.5",
+ "jest-runner": "30.0.5",
+ "jest-runtime": "30.0.5",
+ "jest-snapshot": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-validate": "30.0.5",
+ "jest-watcher": "30.0.5",
+ "micromatch": "^4.0.8",
+ "pretty-format": "30.0.5",
"slash": "^3.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/diff-sequences": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz",
+ "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz",
+ "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/fake-timers": "30.0.5",
+ "@jest/types": "30.0.5",
+ "@types/node": "*",
+ "jest-mock": "30.0.5"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.5.tgz",
+ "integrity": "sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "expect": "30.0.5",
+ "jest-snapshot": "30.0.5"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.5.tgz",
+ "integrity": "sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz",
+ "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "30.0.5",
+ "@sinonjs/fake-timers": "^13.0.0",
+ "@types/node": "*",
+ "jest-message-util": "30.0.5",
+ "jest-mock": "30.0.5",
+ "jest-util": "30.0.5"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/get-type": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz",
+ "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.5.tgz",
+ "integrity": "sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.0.5",
+ "@jest/expect": "30.0.5",
+ "@jest/types": "30.0.5",
+ "jest-mock": "30.0.5"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/pattern": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
+ "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "jest-regex-util": "30.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.5.tgz",
+ "integrity": "sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "30.0.5",
+ "@jest/test-result": "30.0.5",
+ "@jest/transform": "30.0.5",
+ "@jest/types": "30.0.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "collect-v8-coverage": "^1.0.2",
+ "exit-x": "^0.2.2",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^6.0.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^5.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-worker": "30.0.5",
+ "slash": "^3.0.0",
+ "string-length": "^4.0.2",
+ "v8-to-istanbul": "^9.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
+ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.34.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/snapshot-utils": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.5.tgz",
+ "integrity": "sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "30.0.5",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "natural-compare": "^1.4.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz",
+ "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "callsites": "^3.1.0",
+ "graceful-fs": "^4.2.11"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.5.tgz",
+ "integrity": "sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "30.0.5",
+ "@jest/types": "30.0.5",
+ "@types/istanbul-lib-coverage": "^2.0.6",
+ "collect-v8-coverage": "^1.0.2"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.5.tgz",
+ "integrity": "sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "30.0.5",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.0.5",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/@jest/transform": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
- "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.5.tgz",
+ "integrity": "sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
+ "@babel/core": "^7.27.4",
+ "@jest/types": "30.0.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "babel-plugin-istanbul": "^7.0.0",
+ "chalk": "^4.1.2",
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.0.5",
+ "jest-regex-util": "30.0.1",
+ "jest-util": "30.0.5",
+ "micromatch": "^4.0.8",
+ "pirates": "^4.0.7",
"slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
+ "write-file-atomic": "^5.0.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/transform/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/transform/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,
- "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/@jest/transform/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/transform/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@jest/transform/node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "node_modules/@jest/transform/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/transform/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/@jest/types": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz",
+ "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
+ "@jest/pattern": "30.0.1",
+ "@jest/schemas": "30.0.5",
+ "@types/istanbul-lib-coverage": "^2.0.6",
+ "@types/istanbul-reports": "^3.0.4",
"@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
+ "@types/yargs": "^17.0.33",
+ "chalk": "^4.1.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/types/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/types/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,
- "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/@jest/types/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/types/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@jest/types/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/types/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
+ "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==",
"dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- },
- "engines": {
- "node": ">=6.0.0"
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "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.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "version": "0.3.29",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz",
+ "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@keyv/serialize": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz",
+ "integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@mongodb-js/saslprep": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz",
- "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz",
+ "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==",
"dependencies": {
"sparse-bitfield": "^3.0.3"
}
},
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
+ "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@tybys/wasm-util": "^0.10.0"
+ }
+ },
+ "node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"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"
@@ -2846,6 +2892,7 @@
"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"
}
@@ -2855,6 +2902,7 @@
"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"
@@ -2863,43 +2911,122 @@
"node": ">= 8"
}
},
- "node_modules/@remix-run/router": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.1.tgz",
- "integrity": "sha512-mCOMec4BKd6BRGBZeSnGiIgwsbLGp3yhVqAD8H+PxiRNEHgDpZb8J1TnrSDlg97t0ySKMQJTHCWBCmBpSmkF6Q==",
+ "node_modules/@paralleldrive/cuid2": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
+ "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^1.1.5"
+ }
+ },
+ "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.0.0"
+ "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/@sanity/diff-match-patch": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@sanity/diff-match-patch/-/diff-match-patch-3.2.0.tgz",
+ "integrity": "sha512-4hPADs0qUThFZkBK/crnfKKHg71qkRowfktBljH2UIxGHHTxIzt8g8fBiXItyCjxkuNy+zpYOdRMifQNv8+Yww==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
}
},
"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
+ "version": "0.34.38",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.38.tgz",
+ "integrity": "sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "version": "13.0.5",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
+ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "@sinonjs/commons": "^3.0.0"
+ "@sinonjs/commons": "^3.0.1"
}
},
- "node_modules/@types/babel__core": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
- "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
+ "node_modules/@stylistic/stylelint-plugin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-4.0.0.tgz",
+ "integrity": "sha512-CFwt3K4Y/7bygNCLCQ8Sy4Hzgbhxq3BsNW0FIuYxl17HD3ywptm54ocyeiLVRrk5jtz1Zwks7Xr9eiZt8SWHAw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3",
+ "postcss": "^8.5.6",
+ "postcss-selector-parser": "^7.1.0",
+ "postcss-value-parser": "^4.2.0",
+ "style-search": "^0.1.0"
+ },
+ "engines": {
+ "node": "^18.12 || >=20.9"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.22.0"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz",
+ "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tybys/wasm-util/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/@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==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
@@ -2909,62 +3036,65 @@
}
},
"node_modules/@types/babel__generator": {
- "version": "7.6.4",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
- "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__template": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
- "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
- "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.20.7"
}
},
- "node_modules/@types/graceful-fs": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
- "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true
},
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-coverage": "*"
}
},
"node_modules/@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-report": "*"
}
@@ -2973,37 +3103,25 @@
"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
- },
- "node_modules/@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/node": {
- "version": "18.15.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
- "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==",
- "dev": true
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
+ "version": "24.1.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
+ "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.8.0"
+ }
},
"node_modules/@types/stack-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/webidl-conversions": {
"version": "7.0.3",
@@ -3019,31 +3137,34 @@
}
},
"node_modules/@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "version": "17.0.33",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
+ "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true,
+ "license": "MIT"
},
"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==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz",
+ "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0"
+ "@typescript-eslint/types": "8.2.0",
+ "@typescript-eslint/visitor-keys": "8.2.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3051,12 +3172,13 @@
}
},
"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==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz",
+ "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3064,22 +3186,23 @@
}
},
"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==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz",
+ "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
+ "@typescript-eslint/types": "8.2.0",
+ "@typescript-eslint/visitor-keys": "8.2.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"
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3096,27 +3219,17 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -3128,13 +3241,11 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -3142,81 +3253,41 @@
"node": ">=10"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@typescript-eslint/utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.2.0.tgz",
+ "integrity": "sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.12",
- "@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "semver": "^7.5.4"
+ "@typescript-eslint/scope-manager": "8.2.0",
+ "@typescript-eslint/types": "8.2.0",
+ "@typescript-eslint/typescript-estree": "8.2.0"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0"
}
},
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@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==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz",
+ "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "eslint-visitor-keys": "^3.4.1"
+ "@typescript-eslint/types": "8.2.0",
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3224,32 +3295,319 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ "node_modules/@unrs/resolver-binding-android-arm-eabi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
+ "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-android-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
+ "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
+ "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
+ "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-freebsd-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
+ "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
+ "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
+ "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
+ "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
+ "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
+ "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
+ "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
+ "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
+ "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
+ "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
+ "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-wasm32-wasi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
+ "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
+ "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
+ "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-x64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
+ "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
"node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
"dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/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==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -3263,6 +3621,7 @@
"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"
}
@@ -3271,6 +3630,7 @@
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
+ "license": "Apache-2.0",
"dependencies": {
"acorn": "^7.0.0",
"acorn-walk": "^7.0.0",
@@ -3281,6 +3641,7 @@
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -3292,14 +3653,16 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/agent-base": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
- "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -3312,6 +3675,7 @@
"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",
@@ -3328,6 +3692,7 @@
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -3342,25 +3707,31 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
- "color-convert": "^1.9.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -3372,12 +3743,14 @@
"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=="
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
},
"node_modules/arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
"integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3386,6 +3759,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3394,18 +3768,20 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
"integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/array-buffer-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
- "is-array-buffer": "^3.0.4"
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
},
"engines": {
"node": ">= 0.4"
@@ -3414,16 +3790,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
"node_modules/array-includes": {
"version": "3.1.8",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
"integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -3444,6 +3816,7 @@
"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"
}
@@ -3452,6 +3825,7 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3461,6 +3835,7 @@
"resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
"integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -3476,11 +3851,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.flatmap": {
+ "node_modules/array.prototype.flat": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -3494,16 +3870,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.toreversed": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
- "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/array.prototype.tosorted": {
@@ -3511,6 +3894,7 @@
"resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
"integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -3523,19 +3907,19 @@
}
},
"node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.2.1",
- "get-intrinsic": "^1.2.3",
- "is-array-buffer": "^3.0.4",
- "is-shared-array-buffer": "^1.0.2"
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -3547,50 +3931,41 @@
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "license": "MIT"
},
"node_modules/asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
+ "minimalistic-assert": "^1.0.0"
}
},
"node_modules/asn1.js/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
},
"node_modules/assert": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
- "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz",
+ "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==",
+ "license": "MIT",
"dependencies": {
- "object-assign": "^4.1.1",
- "util": "0.10.3"
- }
- },
- "node_modules/assert/node_modules/inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA=="
- },
- "node_modules/assert/node_modules/util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
- "dependencies": {
- "inherits": "2.0.1"
+ "object.assign": "^4.1.4",
+ "util": "^0.10.4"
}
},
"node_modules/assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3600,14 +3975,16 @@
"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/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+ "license": "MIT"
},
"node_modules/async-each": {
"version": "1.0.6",
@@ -3618,17 +3995,20 @@
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
},
"node_modules/at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "license": "ISC",
"engines": {
"node": ">= 4.0.0"
}
@@ -3637,6 +4017,7 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "license": "(MIT OR Apache-2.0)",
"bin": {
"atob": "bin/atob.js"
},
@@ -3648,7 +4029,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
@@ -3660,150 +4041,66 @@
}
},
"node_modules/babel-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
- "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.5.tgz",
+ "integrity": "sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/transform": "^29.7.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.6.3",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
+ "@jest/transform": "30.0.5",
+ "@types/babel__core": "^7.20.5",
+ "babel-plugin-istanbul": "^7.0.0",
+ "babel-preset-jest": "30.0.1",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
"slash": "^3.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
- "@babel/core": "^7.8.0"
- }
- },
- "node_modules/babel-jest/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/babel-jest/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,
- "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/babel-jest/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/babel-jest/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/babel-jest/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-jest/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "@babel/core": "^7.11.0"
}
},
"node_modules/babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz",
+ "integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-instrument": "^6.0.2",
"test-exclude": "^6.0.0"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
"node_modules/babel-plugin-jest-hoist": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
- "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz",
+ "integrity": "sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.3",
+ "@types/babel__core": "^7.20.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.10",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz",
- "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==",
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
+ "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
"dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.1",
+ "@babel/compat-data": "^7.27.7",
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -3811,76 +4108,103 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz",
- "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+ "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.1",
- "core-js-compat": "^3.36.1"
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "core-js-compat": "^3.43.0"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz",
- "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==",
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
+ "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.1"
+ "@babel/helper-define-polyfill-provider": "^0.6.5"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "node_modules/babel-plugin-transform-import-meta": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.3.tgz",
+ "integrity": "sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==",
"dev": true,
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "tslib": "^2.8.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.10.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-import-meta/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
+ "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/babel-preset-jest": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
- "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz",
+ "integrity": "sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "babel-plugin-jest-hoist": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0"
+ "babel-plugin-jest-hoist": "30.0.1",
+ "babel-preset-current-node-syntax": "^1.1.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.11.0"
}
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
},
"node_modules/base": {
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "license": "MIT",
"dependencies": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
@@ -3898,6 +4222,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.0"
},
@@ -3905,47 +4230,17 @@
"node": ">=0.10.0"
}
},
- "node_modules/base/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/base/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/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==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/base64-js": {
@@ -3965,28 +4260,35 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/bignumber.js": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
"integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"file-uri-to-path": "1.0.0"
@@ -3995,59 +4297,46 @@
"node_modules/bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "license": "MIT"
},
"node_modules/body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "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==",
+ "license": "MIT",
"dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "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": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=18"
}
},
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -4056,12 +4345,14 @@
"node_modules/brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "license": "MIT"
},
"node_modules/browser-pack": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
"integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
+ "license": "MIT",
"dependencies": {
"combine-source-map": "~0.8.0",
"defined": "^1.0.0",
@@ -4074,37 +4365,11 @@
"browser-pack": "bin/cmd.js"
}
},
- "node_modules/browser-pack/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/browser-pack/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/browser-pack/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/browser-pack/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
@@ -4114,6 +4379,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
"integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+ "license": "MIT",
"dependencies": {
"resolve": "^1.17.0"
}
@@ -4122,6 +4388,7 @@
"version": "16.5.2",
"resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz",
"integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==",
+ "license": "MIT",
"dependencies": {
"assert": "^1.4.0",
"browser-pack": "^6.0.1",
@@ -4183,6 +4450,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "license": "MIT",
"dependencies": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -4196,6 +4464,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "license": "MIT",
"dependencies": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -4206,6 +4475,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "license": "MIT",
"dependencies": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -4217,34 +4487,38 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
"integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^5.0.0",
"randombytes": "^2.0.1"
}
},
"node_modules/browserify-sign": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
- "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz",
+ "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
+ "license": "ISC",
"dependencies": {
"bn.js": "^5.2.1",
"browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.4",
+ "elliptic": "^6.5.5",
+ "hash-base": "~3.0",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.6",
- "readable-stream": "^3.6.2",
+ "parse-asn1": "^5.1.7",
+ "readable-stream": "^2.3.8",
"safe-buffer": "^5.2.1"
},
"engines": {
- "node": ">= 4"
+ "node": ">= 0.12"
}
},
"node_modules/browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "license": "MIT",
"dependencies": {
"pako": "~1.0.5"
}
@@ -4252,48 +4526,23 @@
"node_modules/browserify/node_modules/punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
- },
- "node_modules/browserify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/browserify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/browserify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "license": "MIT"
},
"node_modules/browserify/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.25.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
+ "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
"funding": [
{
"type": "opencollective",
@@ -4309,10 +4558,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001726",
+ "electron-to-chromium": "^1.5.173",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.3"
},
"bin": {
"browserslist": "cli.js"
@@ -4326,14 +4575,15 @@
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
"integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"node-int64": "^0.4.0"
}
},
"node_modules/bson": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz",
- "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==",
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
+ "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
"engines": {
"node": ">=16.20.1"
}
@@ -4342,6 +4592,7 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
"integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
@@ -4355,22 +4606,26 @@
"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=="
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
},
"node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "license": "MIT"
},
"node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ=="
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "license": "MIT"
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -4379,6 +4634,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "license": "MIT",
"dependencies": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
@@ -4394,21 +4650,72 @@
"node": ">=0.10.0"
}
},
+ "node_modules/cacheable": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz",
+ "integrity": "sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hookified": "^1.10.0",
+ "keyv": "^5.4.0"
+ }
+ },
+ "node_modules/cacheable/node_modules/keyv": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.0.tgz",
+ "integrity": "sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@keyv/serialize": "^1.1.0"
+ }
+ },
"node_modules/cached-path-relative": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz",
- "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA=="
+ "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==",
+ "license": "MIT"
},
"node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "license": "MIT",
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
"es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
@@ -4422,6 +4729,7 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -4431,56 +4739,15 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/camelcase-keys": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
- "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^6.3.0",
- "map-obj": "^4.1.0",
- "quick-lru": "^5.1.1",
- "type-fest": "^1.2.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/camelcase-keys/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/camelcase-keys/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/caniuse-lite": {
- "version": "1.0.30001599",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz",
- "integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==",
+ "version": "1.0.30001726",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz",
+ "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==",
"funding": [
{
"type": "opencollective",
@@ -4497,460 +4764,6 @@
]
},
"node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/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==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/cjs-module-lexer": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
- "dev": true
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/classnames": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
- "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
- },
- "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,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/codemirror": {
- "version": "5.65.12",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.12.tgz",
- "integrity": "sha512-z2jlHBocElRnPYysN2HAuhXbO3DNB0bcSKmNz3hcWR2Js2Dkhc1bEOxG93Z3DeUrnm+qx56XOY5wQmbP5KY0sw=="
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
- "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
- "dev": true
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "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
- },
- "node_modules/combine-source-map": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
- "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==",
- "dependencies": {
- "convert-source-map": "~1.1.0",
- "inline-source-map": "~0.6.0",
- "lodash.memoize": "~3.0.3",
- "source-map": "~0.5.3"
- }
- },
- "node_modules/combine-source-map/node_modules/convert-source-map": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
- "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg=="
- },
- "node_modules/combine-source-map/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concat-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/concat-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/concat-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/console-browserify": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
- },
- "node_modules/constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "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==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
- "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
- "dependencies": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/cookiejar": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
- "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
- },
- "node_modules/copy-anything": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
- "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
- "dependencies": {
- "is-what": "^3.14.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.36.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz",
- "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==",
- "dependencies": {
- "browserslist": "^4.23.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
- },
- "node_modules/cosmiconfig": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
- "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
- "dev": true,
- "dependencies": {
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- }
- },
- "node_modules/create-ecdh": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dependencies": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- }
- },
- "node_modules/create-ecdh/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dependencies": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "node_modules/create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dependencies": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "node_modules/create-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "prompts": "^2.0.1"
- },
- "bin": {
- "create-jest": "bin/create-jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/create-jest/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/create-jest/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
@@ -4966,25 +4779,7 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/create-jest/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/create-jest/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/create-jest/node_modules/has-flag": {
+ "node_modules/chalk/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==",
@@ -4993,7 +4788,7 @@
"node": ">=8"
}
},
- "node_modules/create-jest/node_modules/supports-color": {
+ "node_modules/chalk/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==",
@@ -5005,20 +4800,474 @@
"node": ">=8"
}
},
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/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==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz",
+ "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cipher-base": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz",
+ "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz",
+ "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "license": "MIT",
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/classnames": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
+ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==",
+ "license": "MIT"
+ },
+ "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/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/codemirror": {
+ "version": "5.65.17",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
+ "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==",
+ "license": "MIT"
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "license": "MIT",
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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/combine-source-map": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
+ "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==",
+ "license": "MIT",
+ "dependencies": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "node_modules/combine-source-map/node_modules/convert-source-map": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
+ "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==",
+ "license": "MIT"
+ },
+ "node_modules/combine-source-map/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "engines": [
+ "node >= 0.8"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
+ },
+ "node_modules/constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-parser": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
+ "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
+ "dependencies": {
+ "cookie": "0.7.2",
+ "cookie-signature": "1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
+ },
+ "node_modules/cookiejar": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+ "license": "MIT"
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^3.14.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.44.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.44.0.tgz",
+ "integrity": "sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.43.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz",
+ "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==",
+ "dependencies": {
+ "browserslist": "^4.25.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
+ "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==",
+ "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/create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "license": "MIT",
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ }
+ },
+ "node_modules/create-ecdh/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
+ },
+ "node_modules/create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "license": "MIT",
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "node_modules/create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "license": "MIT",
+ "dependencies": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
"node_modules/create-react-class": {
"version": "15.7.0",
"resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
"integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.3.1",
"object-assign": "^4.1.1"
}
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -5032,6 +5281,7 @@
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "license": "MIT",
"dependencies": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
@@ -5050,21 +5300,22 @@
}
},
"node_modules/css-functions-list": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",
- "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==",
+ "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,
"engines": {
"node": ">=12 || >=16"
}
},
"node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "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.0.30",
+ "mdn-data": "2.12.2",
"source-map-js": "^1.0.1"
},
"engines": {
@@ -5076,6 +5327,7 @@
"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"
},
@@ -5083,20 +5335,99 @@
"node": ">=4"
}
},
+ "node_modules/cssstyle": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz",
+ "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "rrweb-cssom": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/dash-ast": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
- "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA=="
+ "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-urls/node_modules/tr46": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
+ "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-urls/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/data-urls/node_modules/whatwg-url": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
+ "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "tr46": "^5.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/data-view-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
+ "is-data-view": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -5106,29 +5437,31 @@
}
},
"node_modules/data-view-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
+ "is-data-view": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/inspect-js"
}
},
"node_modules/data-view-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"is-data-view": "^1.0.1"
},
@@ -5140,11 +5473,11 @@
}
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5155,65 +5488,29 @@
}
}
},
- "node_modules/decamelize": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
- "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
"dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys/node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT",
+ "peer": true
},
"node_modules/decode-uri-component": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/dedent": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
- "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz",
+ "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"babel-plugin-macros": "^3.1.0"
},
@@ -5226,19 +5523,23 @@
"node_modules/dedent-tabs": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/dedent-tabs/-/dedent-tabs-0.10.3.tgz",
- "integrity": "sha512-RYq1ewj+FDOEKxjhU9a2xwSJX+ODruTeIcMwt3KVAuUpOGFLDzmQWU3ByXRLVFHYAg584gcYSv1k+KheoLExsw=="
+ "integrity": "sha512-RYq1ewj+FDOEKxjhU9a2xwSJX+ODruTeIcMwt3KVAuUpOGFLDzmQWU3ByXRLVFHYAg584gcYSv1k+KheoLExsw==",
+ "deprecated": "The dedent package is maintained again, so this one isn't necessary anymore. Please use dedent again. All features from this package should now be included.",
+ "license": "MIT"
},
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -5247,6 +5548,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -5263,7 +5565,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
@@ -5280,6 +5582,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^0.1.0"
},
@@ -5291,6 +5594,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
"integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5299,6 +5603,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -5307,6 +5612,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -5315,6 +5621,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz",
"integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==",
+ "license": "MIT",
"dependencies": {
"JSONStream": "^1.0.3",
"shasum-object": "^1.0.0",
@@ -5325,65 +5632,32 @@
"deps-sort": "bin/cmd.js"
}
},
- "node_modules/deps-sort/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/deps-sort/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/deps-sort/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/deps-sort/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
"node_modules/des.js": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
- "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
+ "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
"node_modules/detect-newline": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -5392,6 +5666,7 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
+ "license": "MIT",
"dependencies": {
"acorn-node": "^1.8.2",
"defined": "^1.0.0",
@@ -5408,24 +5683,17 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+ "license": "ISC",
"dependencies": {
"asap": "^2.0.0",
"wrappy": "1"
}
},
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -5435,13 +5703,15 @@
"node_modules/diffie-hellman/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
},
"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"
},
@@ -5449,66 +5719,45 @@
"node": ">=8"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "license": "MIT",
"engines": {
"node": ">=0.4",
"npm": ">=1.2"
}
},
- "node_modules/dompurify": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz",
- "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA=="
+ "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==",
+ "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/duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
+ "license": "BSD-3-Clause",
"dependencies": {
"readable-stream": "^2.0.2"
}
},
- "node_modules/duplexer2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexer2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/duplexer2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
+ "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/ecdsa-sig-formatter": {
"version": "1.0.11",
@@ -5521,17 +5770,18 @@
"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=="
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.4.711",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz",
- "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w=="
+ "version": "1.5.179",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz",
+ "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ=="
},
"node_modules/elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz",
+ "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==",
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -5545,13 +5795,15 @@
"node_modules/elliptic/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
},
"node_modules/emittery": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
"integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -5562,20 +5814,46 @@
"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=="
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
},
"node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"engines": {
"node": ">= 0.8"
}
},
+ "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",
+ "peer": true,
+ "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/errno": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
"integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"prr": "~1.0.1"
@@ -5589,62 +5867,65 @@
"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-abstract": {
- "version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "version": "1.23.7",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz",
+ "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "arraybuffer.prototype.slice": "^1.0.3",
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "data-view-buffer": "^1.0.1",
- "data-view-byte-length": "^1.0.1",
- "data-view-byte-offset": "^1.0.0",
- "es-define-property": "^1.0.0",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"es-set-tostringtag": "^2.0.3",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.4",
- "get-symbol-description": "^1.0.2",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.2.6",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
"has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
"hasown": "^2.0.2",
- "internal-slot": "^1.0.7",
- "is-array-buffer": "^3.0.4",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
"is-callable": "^1.2.7",
- "is-data-view": "^1.0.1",
- "is-negative-zero": "^2.0.3",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.3",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.13",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
+ "is-data-view": "^1.0.2",
+ "is-regex": "^1.2.1",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.0",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.3",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.5",
- "regexp.prototype.flags": "^1.5.2",
- "safe-array-concat": "^1.1.2",
- "safe-regex-test": "^1.0.3",
- "string.prototype.trim": "^1.2.9",
- "string.prototype.trimend": "^1.0.8",
+ "object.assign": "^4.1.7",
+ "regexp.prototype.flags": "^1.5.3",
+ "safe-array-concat": "^1.1.3",
+ "safe-regex-test": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
"string.prototype.trimstart": "^1.0.8",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-length": "^1.0.1",
- "typed-array-byte-offset": "^1.0.2",
- "typed-array-length": "^1.0.6",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.15"
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.18"
},
"engines": {
"node": ">= 0.4"
@@ -5654,12 +5935,10 @@
}
},
"node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -5668,40 +5947,44 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
- "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz",
+ "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.3",
+ "es-abstract": "^1.23.6",
"es-errors": "^1.3.0",
"es-set-tostringtag": "^2.0.3",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "globalthis": "^1.0.3",
+ "get-intrinsic": "^1.2.6",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
"has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.1.2"
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "internal-slot": "^1.1.0",
+ "iterator.prototype": "^1.1.4",
+ "safe-array-concat": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
}
},
"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,
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
@@ -5710,14 +5993,15 @@
}
},
"node_modules/es-set-tostringtag": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
- "dev": true,
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.4",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
- "hasown": "^2.0.1"
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -5728,19 +6012,21 @@
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
"integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
}
},
"node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -5750,9 +6036,10 @@
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -5760,85 +6047,94 @@
"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=="
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
},
"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==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.8.0"
+ "node": ">=8"
}
},
"node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "version": "9.34.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz",
+ "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==",
"dev": true,
+ "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.0",
- "@humanwhocodes/config-array": "^0.11.14",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.0",
+ "@eslint/config-helpers": "^0.3.1",
+ "@eslint/core": "^0.15.2",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.34.0",
+ "@eslint/plugin-kit": "^0.3.5",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "cross-spawn": "^7.0.6",
"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",
+ "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": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"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"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-jest": {
- "version": "28.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz",
- "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==",
+ "version": "29.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz",
+ "integrity": "sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/utils": "^6.0.0 || ^7.0.0"
+ "@typescript-eslint/utils": "^8.0.0"
},
"engines": {
- "node": "^16.10.0 || ^18.12.0 || >=20.0.0"
+ "node": "^20.12.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0",
- "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0",
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"jest": "*"
},
"peerDependenciesMeta": {
@@ -5851,35 +6147,36 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.34.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz",
- "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==",
+ "version": "7.37.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz",
+ "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-includes": "^3.1.8",
"array.prototype.findlast": "^1.2.5",
- "array.prototype.flatmap": "^1.3.2",
- "array.prototype.toreversed": "^1.1.2",
+ "array.prototype.flatmap": "^1.3.3",
"array.prototype.tosorted": "^1.1.4",
"doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.19",
+ "es-iterator-helpers": "^1.2.1",
"estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.1.2",
- "object.entries": "^1.1.8",
+ "object.entries": "^1.1.9",
"object.fromentries": "^2.0.8",
- "object.hasown": "^1.1.4",
- "object.values": "^1.2.0",
+ "object.values": "^1.2.1",
"prop-types": "^15.8.1",
"resolve": "^2.0.0-next.5",
"semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.11"
+ "string.prototype.matchall": "^4.0.12",
+ "string.prototype.repeat": "^1.0.0"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
@@ -5887,6 +6184,7 @@
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -5899,6 +6197,7 @@
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
"integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -5912,16 +6211,16 @@
}
},
"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==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -5932,6 +6231,7 @@
"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"
},
@@ -5939,60 +6239,12 @@
"url": "https://opencollective.com/eslint"
}
},
- "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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=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,
- "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/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/eslint/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
"node_modules/eslint/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"
},
@@ -6000,66 +6252,42 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "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,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/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==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "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,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -6070,6 +6298,7 @@
"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"
@@ -6079,10 +6308,11 @@
}
},
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.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"
},
@@ -6107,6 +6337,7 @@
"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"
}
@@ -6115,6 +6346,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -6123,6 +6355,7 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6131,6 +6364,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz",
"integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.x"
}
@@ -6139,6 +6373,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "license": "MIT",
"dependencies": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -6149,6 +6384,7 @@
"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",
@@ -6167,11 +6403,12 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "node_modules/exit-x": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz",
+ "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
@@ -6180,6 +6417,7 @@
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "license": "MIT",
"dependencies": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
@@ -6197,6 +6435,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -6204,113 +6443,154 @@
"node_modules/expand-brackets/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.5.tgz",
+ "integrity": "sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/expect-utils": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0"
+ "@jest/expect-utils": "30.0.5",
+ "@jest/get-type": "30.0.1",
+ "jest-matcher-utils": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-mock": "30.0.5",
+ "jest-util": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/expr-eval": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/expr-eval/-/expr-eval-2.0.2.tgz",
- "integrity": "sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg=="
+ "integrity": "sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==",
+ "license": "MIT"
},
"node_modules/express": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
- "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
+ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
+ "license": "MIT",
"dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.2",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.6.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "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": ">= 0.10.0"
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/express-async-handler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/express-async-handler/-/express-async-handler-1.2.0.tgz",
- "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
+ "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w==",
+ "license": "MIT"
},
"node_modules/express-static-gzip": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.7.tgz",
- "integrity": "sha512-QOCZUC+lhPPCjIJKpQGu1Oa61Axg9Mq09Qvit8Of7kzpMuwDeMSqjjQteQS3OVw/GkENBoSBheuQDWPlngImvw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-3.0.0.tgz",
+ "integrity": "sha512-36O10S0asHl3QojOBQQ0ZjXNtElmhgPS6erSUCCZymXkB/CK1mnGqOj4BTJN+FYRDIzVFnzo3wLFCZJvAk6rQQ==",
+ "license": "MIT",
"dependencies": {
- "serve-static": "^1.14.1"
+ "mime-types": "^3.0.1",
+ "parseurl": "^1.3.3",
+ "serve-static": "^2.2.0"
}
},
- "node_modules/express/node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "node_modules/express-static-gzip/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==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/express-static-gzip/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==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "node_modules/express/node_modules/cookie-signature": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/express/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/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==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
},
"node_modules/extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "license": "MIT",
"dependencies": {
"is-extendable": "^0.1.0"
},
@@ -6322,6 +6602,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "license": "MIT",
"dependencies": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
@@ -6340,6 +6621,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.0"
},
@@ -6347,66 +6629,38 @@
"node": ">=0.10.0"
}
},
- "node_modules/extglob/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extglob/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/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==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "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.4"
+ "micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
@@ -6417,6 +6671,7 @@
"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"
},
@@ -6428,33 +6683,45 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
- "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+ "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.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
@@ -6464,32 +6731,63 @@
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
"integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"bser": "2.1.1"
}
},
- "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,
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
"dependencies": {
- "flat-cache": "^3.0.4"
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
+ },
+ "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/file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "license": "MIT",
"optional": true
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -6498,40 +6796,28 @@
}
},
"node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
+ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "license": "MIT",
"dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
+ "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"
}
},
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"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"
@@ -6544,30 +6830,31 @@
}
},
"node_modules/flat-cache": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
- "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+ "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.3",
- "rimraf": "^3.0.2"
+ "keyv": "^4.5.4"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
- "dev": true
+ "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/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.1.3"
}
@@ -6576,32 +6863,81 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "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/foreground-child/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,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
- "node_modules/formidable": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz",
- "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==",
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/formidable": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz",
+ "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==",
+ "license": "MIT",
+ "dependencies": {
+ "@paralleldrive/cuid2": "^2.2.2",
"dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
"once": "^1.4.0"
},
+ "engines": {
+ "node": ">=14.0.0"
+ },
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
@@ -6610,6 +6946,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6618,6 +6955,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
"integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "license": "MIT",
"dependencies": {
"map-cache": "^0.2.2"
},
@@ -6626,17 +6964,19 @@
}
},
"node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -6649,13 +6989,15 @@
"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=="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -6668,20 +7010,24 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
},
"engines": {
"node": ">= 0.4"
@@ -6695,40 +7041,59 @@
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gaxios": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.1.tgz",
- "integrity": "sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.1.tgz",
+ "integrity": "sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==",
"dependencies": {
"extend": "^3.0.2",
"https-proxy-agent": "^7.0.1",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.9"
+ "node-fetch": "^3.3.2"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
+ }
+ },
+ "node_modules/gaxios/node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
}
},
"node_modules/gcp-metadata": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.0.0.tgz",
- "integrity": "sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-7.0.1.tgz",
+ "integrity": "sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==",
"dependencies": {
- "gaxios": "^6.0.0",
+ "gaxios": "^7.0.0",
+ "google-logging-utils": "^1.0.0",
"json-bigint": "^1.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
"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"
}
@@ -6736,26 +7101,34 @@
"node_modules/get-assigned-identifiers": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
- "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ=="
+ "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
+ "license": "Apache-2.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-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -6769,15 +7142,30 @@
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"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"
},
@@ -6786,14 +7174,15 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4"
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -6806,6 +7195,7 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6813,12 +7203,15 @@
"node_modules/github-slugger": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
- "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
+ "license": "ISC"
},
"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",
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6839,6 +7232,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -6851,6 +7245,7 @@
"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"
},
@@ -6863,6 +7258,7 @@
"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",
@@ -6876,22 +7272,15 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/global-prefix/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,
- "engines": {
- "node": ">=0.10.0"
- }
+ "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"
},
@@ -6900,20 +7289,26 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "version": "16.3.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz",
+ "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==",
+ "dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.1.3"
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -6927,6 +7322,7 @@
"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",
@@ -6946,63 +7342,56 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
"integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/google-auth-library": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz",
- "integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.1.0.tgz",
+ "integrity": "sha512-GspVjZj1RbyRWpQ9FbAXMKjFGzZwDKnUHi66JJ+tcjcu5/xYAP1pdlWotCuIkMwjfVsxxDvsGZXGLzRt72D0sQ==",
"dependencies": {
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
- "gaxios": "^6.0.0",
- "gcp-metadata": "^6.0.0",
- "gtoken": "^7.0.0",
- "jws": "^4.0.0",
- "lru-cache": "^6.0.0"
+ "gaxios": "^7.0.0",
+ "gcp-metadata": "^7.0.0",
+ "google-logging-utils": "^1.0.0",
+ "gtoken": "^8.0.0",
+ "jws": "^4.0.0"
},
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/google-logging-utils": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.1.tgz",
+ "integrity": "sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==",
"engines": {
"node": ">=14"
}
},
- "node_modules/google-auth-library/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/google-auth-library/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/googleapis-common": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.0.0.tgz",
- "integrity": "sha512-58iSybJPQZ8XZNMpjrklICefuOuyJ0lMxfKmBqmaC0/xGT4SiOs4BE60LAOOGtBURy1n8fHa2X2YUNFEWWbXyQ==",
+ "version": "8.0.2-rc.0",
+ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.2-rc.0.tgz",
+ "integrity": "sha512-JTcxRvmFa9Ec1uyfMEimEMeeKq1sHNZX3vn2qmoUMtnvixXXvcqTcbDZvEZXkEWpGlPlOf4joyep6/qs0BrLyg==",
"dependencies": {
"extend": "^3.0.2",
- "gaxios": "^6.0.3",
- "google-auth-library": "^9.0.0",
+ "gaxios": "^7.0.0-rc.4",
+ "google-auth-library": "^10.0.0-rc.1",
"qs": "^6.7.0",
- "url-template": "^2.0.8",
- "uuid": "^9.0.0"
+ "url-template": "^2.0.8"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7011,51 +7400,39 @@
"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=="
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
},
"node_modules/gtoken": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.0.1.tgz",
- "integrity": "sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz",
+ "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==",
"dependencies": {
- "gaxios": "^6.0.0",
+ "gaxios": "^7.0.0",
"jws": "^4.0.0"
},
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
"node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+ "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
"dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -7064,6 +7441,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -7072,6 +7450,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -7080,9 +7459,14 @@
}
},
"node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -7091,9 +7475,10 @@
}
},
"node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7105,7 +7490,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
@@ -7120,6 +7505,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "license": "MIT",
"dependencies": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
@@ -7133,6 +7519,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
"integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "license": "MIT",
"dependencies": {
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
@@ -7145,6 +7532,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "license": "MIT",
"dependencies": {
"kind-of": "^3.0.2"
},
@@ -7156,6 +7544,19 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
@@ -7164,22 +7565,28 @@
}
},
"node_modules/hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
},
"engines": {
"node": ">=4"
}
},
+ "node_modules/hash-wasm": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.12.0.tgz",
+ "integrity": "sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ=="
+ },
"node_modules/hash.js": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
@@ -7189,6 +7596,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -7196,65 +7604,51 @@
"node": ">= 0.4"
}
},
- "node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "license": "MIT",
"dependencies": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.1"
}
},
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "node_modules/hookified": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.11.0.tgz",
+ "integrity": "sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
+ "license": "MIT"
},
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/yallist": {
+ "node_modules/html-encoding-sniffer": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "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
+ "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"
},
@@ -7266,6 +7660,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
"integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
@@ -7274,6 +7669,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -7285,15 +7681,32 @@
"node": ">= 0.8"
}
},
+ "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",
+ "peer": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "license": "MIT"
},
"node_modules/https-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -7307,21 +7720,29 @@
"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/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/idb-keyval": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz",
+ "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==",
+ "license": "Apache-2.0"
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -7339,12 +7760,13 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -7353,12 +7775,14 @@
"node_modules/ignore-by-default": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
+ "license": "ISC"
},
"node_modules/image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
"integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "license": "MIT",
"optional": true,
"bin": {
"image-size": "bin/image-size.js"
@@ -7372,6 +7796,7 @@
"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"
@@ -7383,20 +7808,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/import-lazy": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
- "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
"resolve-cwd": "^3.0.0"
@@ -7416,26 +7833,17 @@
"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": "5.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
- "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"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.",
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -7444,20 +7852,23 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
},
"node_modules/ini": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
"integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/inline-source-map": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
- "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.3.tgz",
+ "integrity": "sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==",
+ "license": "MIT",
"dependencies": {
"source-map": "~0.5.3"
}
@@ -7466,6 +7877,7 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -7474,6 +7886,7 @@
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz",
"integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==",
+ "license": "MIT",
"dependencies": {
"acorn-node": "^1.5.2",
"combine-source-map": "^0.8.0",
@@ -7490,51 +7903,26 @@
"insert-module-globals": "bin/cmd.js"
}
},
- "node_modules/insert-module-globals/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/insert-module-globals/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/insert-module-globals/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/insert-module-globals/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
"node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -7544,40 +7932,33 @@
"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==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
+ "license": "MIT",
"dependencies": {
- "kind-of": "^3.0.2"
+ "hasown": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.10"
}
},
"node_modules/is-array-buffer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -7590,13 +7971,15 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-async-function": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
"integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7608,12 +7991,16 @@
}
},
"node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-bigints": "^1.0.1"
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7623,6 +8010,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -7631,13 +8019,14 @@
}
},
"node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz",
+ "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7649,13 +8038,14 @@
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "license": "MIT"
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7664,44 +8054,40 @@
}
},
"node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"dependencies": {
- "hasown": "^2.0.0"
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
+ "license": "MIT",
"dependencies": {
- "kind-of": "^3.0.2"
+ "hasown": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/is-data-view": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
"is-typed-array": "^1.1.13"
},
"engines": {
@@ -7712,12 +8098,14 @@
}
},
"node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7727,30 +8115,23 @@
}
},
"node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -7759,17 +8140,22 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-finalizationregistry": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
- "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7779,6 +8165,7 @@
"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==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -7788,6 +8175,7 @@
"resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -7797,6 +8185,7 @@
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7811,6 +8200,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -7823,18 +8213,7 @@
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
"integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7846,17 +8225,20 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7865,43 +8247,41 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dependencies": {
- "isobject": "^3.0.1"
- },
+ "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-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",
+ "peer": true
+ },
+ "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==",
+ "license": "MIT"
+ },
"node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7915,6 +8295,7 @@
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
"integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7923,12 +8304,13 @@
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7"
+ "call-bound": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -7941,6 +8323,8 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -7949,12 +8333,14 @@
}
},
"node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7964,12 +8350,15 @@
}
},
"node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -7979,12 +8368,12 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
- "dev": true,
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "license": "MIT",
"dependencies": {
- "which-typed-array": "^1.1.14"
+ "which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
@@ -7998,6 +8387,7 @@
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
"integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8006,25 +8396,30 @@
}
},
"node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz",
+ "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bound": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-weakset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
- "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4"
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -8036,53 +8431,60 @@
"node_modules/is-what": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
- "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "license": "MIT"
},
"node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/istanbul-lib-coverage": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "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.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz",
- "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==",
+ "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.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
+ "@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"
},
@@ -8090,26 +8492,12 @@
"node": ">=10"
}
},
- "node_modules/istanbul-lib-instrument/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -8117,17 +8505,12 @@
"node": ">=10"
}
},
- "node_modules/istanbul-lib-instrument/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/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",
@@ -8142,6 +8525,7 @@
"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"
}
@@ -8151,6 +8535,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -8159,24 +8544,26 @@
}
},
"node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "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",
- "source-map": "^0.6.1"
+ "istanbul-lib-coverage": "^3.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"html-escaper": "^2.0.0",
"istanbul-lib-report": "^3.0.0"
@@ -8186,34 +8573,56 @@
}
},
"node_modules/iterator.prototype": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
- "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz",
+ "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.2.1",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "reflect.getprototypeof": "^1.0.4",
- "set-function-name": "^2.0.1"
+ "define-data-property": "^1.1.4",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "reflect.getprototypeof": "^1.0.8",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-30.0.5.tgz",
+ "integrity": "sha512-y2mfcJywuTUkvLm2Lp1/pFX8kTgMO5yyQGq/Sk/n2mN7XWYp4JsCZ/QXW34M8YScgk8bPZlREH04f6blPnoHnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/types": "^29.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^29.7.0"
+ "@jest/core": "30.0.5",
+ "@jest/types": "30.0.5",
+ "import-local": "^3.2.0",
+ "jest-cli": "30.0.5"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -8225,143 +8634,75 @@
}
},
"node_modules/jest-changed-files": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.5.tgz",
+ "integrity": "sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "execa": "^5.0.0",
- "jest-util": "^29.7.0",
+ "execa": "^5.1.1",
+ "jest-util": "30.0.5",
"p-limit": "^3.1.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-circus": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.5.tgz",
+ "integrity": "sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/environment": "30.0.5",
+ "@jest/expect": "30.0.5",
+ "@jest/test-result": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "chalk": "^4.0.0",
+ "chalk": "^4.1.2",
"co": "^4.6.0",
- "dedent": "^1.0.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.7.0",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
+ "dedent": "^1.6.0",
+ "is-generator-fn": "^2.1.0",
+ "jest-each": "30.0.5",
+ "jest-matcher-utils": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-runtime": "30.0.5",
+ "jest-snapshot": "30.0.5",
+ "jest-util": "30.0.5",
"p-limit": "^3.1.0",
- "pretty-format": "^29.7.0",
- "pure-rand": "^6.0.0",
+ "pretty-format": "30.0.5",
+ "pure-rand": "^7.0.0",
"slash": "^3.0.0",
- "stack-utils": "^2.0.3"
+ "stack-utils": "^2.0.6"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-circus/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,
- "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/jest-circus/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-circus/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-circus/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-circus/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-cli": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.5.tgz",
+ "integrity": "sha512-Sa45PGMkBZzF94HMrlX4kUyPOwUpdZasaliKN3mifvDmkhLYqLLg8HQTzn6gq7vJGahFYMQjXgyJWfYImKZzOw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "create-jest": "^29.7.0",
- "exit": "^0.1.2",
- "import-local": "^3.0.2",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "yargs": "^17.3.1"
+ "@jest/core": "30.0.5",
+ "@jest/test-result": "30.0.5",
+ "@jest/types": "30.0.5",
+ "chalk": "^4.1.2",
+ "exit-x": "^0.2.2",
+ "import-local": "^3.2.0",
+ "jest-config": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-validate": "30.0.5",
+ "yargs": "^17.7.2"
},
"bin": {
"jest": "bin/jest.js"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
@@ -8372,631 +8713,266 @@
}
}
},
- "node_modules/jest-cli/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-cli/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,
- "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/jest-cli/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-cli/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-cli/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-config": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.5.tgz",
+ "integrity": "sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-jest": "^29.7.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "micromatch": "^4.0.4",
+ "@babel/core": "^7.27.4",
+ "@jest/get-type": "30.0.1",
+ "@jest/pattern": "30.0.1",
+ "@jest/test-sequencer": "30.0.5",
+ "@jest/types": "30.0.5",
+ "babel-jest": "30.0.5",
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "deepmerge": "^4.3.1",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "jest-circus": "30.0.5",
+ "jest-docblock": "30.0.1",
+ "jest-environment-node": "30.0.5",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.0.5",
+ "jest-runner": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-validate": "30.0.5",
+ "micromatch": "^4.0.8",
"parse-json": "^5.2.0",
- "pretty-format": "^29.7.0",
+ "pretty-format": "30.0.5",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
"@types/node": "*",
+ "esbuild-register": ">=3.4.0",
"ts-node": ">=9.0.0"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
+ "esbuild-register": {
+ "optional": true
+ },
"ts-node": {
"optional": true
}
}
},
- "node_modules/jest-config/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/jest-config/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": {
- "color-convert": "^2.0.1"
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/jest-config/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"
},
- "engines": {
- "node": ">=8"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/jest-config/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/jest-config/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,
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-config/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-config/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-config/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-config/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/jest-diff": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.5.tgz",
+ "integrity": "sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.6.3",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
+ "@jest/diff-sequences": "30.0.1",
+ "@jest/get-type": "30.0.1",
+ "chalk": "^4.1.2",
+ "pretty-format": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-diff/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-diff/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,
- "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/jest-diff/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-diff/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-diff/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-diff/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-docblock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
- "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz",
+ "integrity": "sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "detect-newline": "^3.0.0"
+ "detect-newline": "^3.1.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-each": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.5.tgz",
+ "integrity": "sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "jest-util": "^29.7.0",
- "pretty-format": "^29.7.0"
+ "@jest/get-type": "30.0.1",
+ "@jest/types": "30.0.5",
+ "chalk": "^4.1.2",
+ "jest-util": "30.0.5",
+ "pretty-format": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-each/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,
- "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/jest-each/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-each/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-each/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-each/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-environment-node": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
- "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.5.tgz",
+ "integrity": "sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/environment": "30.0.5",
+ "@jest/fake-timers": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
+ "jest-mock": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-validate": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-expect-message": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/jest-expect-message/-/jest-expect-message-1.1.3.tgz",
"integrity": "sha512-bTK77T4P+zto+XepAX3low8XVQxDgaEqh3jSTQOG8qvPpD69LsIdyJTa+RmnJh3HNSzJng62/44RPPc7OIlFxg==",
- "dev": true
- },
- "node_modules/jest-get-type": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
+ "license": "MIT"
},
"node_modules/jest-haste-map": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
- "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.5.tgz",
+ "integrity": "sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
- "@types/graceful-fs": "^4.1.3",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "micromatch": "^4.0.4",
+ "anymatch": "^3.1.3",
+ "fb-watchman": "^2.0.2",
+ "graceful-fs": "^4.2.11",
+ "jest-regex-util": "30.0.1",
+ "jest-util": "30.0.5",
+ "jest-worker": "30.0.5",
+ "micromatch": "^4.0.8",
"walker": "^1.0.8"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"optionalDependencies": {
- "fsevents": "^2.3.2"
+ "fsevents": "^2.3.3"
}
},
"node_modules/jest-leak-detector": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.5.tgz",
+ "integrity": "sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
+ "@jest/get-type": "30.0.1",
+ "pretty-format": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz",
+ "integrity": "sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
+ "@jest/get-type": "30.0.1",
+ "chalk": "^4.1.2",
+ "jest-diff": "30.0.5",
+ "pretty-format": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/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,
- "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/jest-matcher-utils/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-matcher-utils/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-message-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz",
+ "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.6.3",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
+ "@babel/code-frame": "^7.27.1",
+ "@jest/types": "30.0.5",
+ "@types/stack-utils": "^2.0.3",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "micromatch": "^4.0.8",
+ "pretty-format": "30.0.5",
"slash": "^3.0.0",
- "stack-utils": "^2.0.3"
+ "stack-utils": "^2.0.6"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-message-util/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-message-util/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,
- "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/jest-message-util/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-message-util/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-message-util/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-message-util/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-mock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
- "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz",
+ "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "jest-util": "^29.7.0"
+ "jest-util": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-pnp-resolver": {
@@ -9004,6 +8980,7 @@
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -9017,431 +8994,203 @@
}
},
"node_modules/jest-regex-util": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
- "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
+ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.5.tgz",
+ "integrity": "sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.0.5",
+ "jest-pnp-resolver": "^1.2.3",
+ "jest-util": "30.0.5",
+ "jest-validate": "30.0.5",
+ "slash": "^3.0.0",
+ "unrs-resolver": "^1.7.11"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.5.tgz",
+ "integrity": "sha512-/xMvBR4MpwkrHW4ikZIWRttBBRZgWK4d6xt3xW1iRDSKt4tXzYkMkyPfBnSCgv96cpkrctfXs6gexeqMYqdEpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "jest-regex-util": "^29.6.3",
- "jest-snapshot": "^29.7.0"
+ "jest-regex-util": "30.0.1",
+ "jest-snapshot": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-resolve/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,
- "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/jest-resolve/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-resolve/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-resolve/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-runner": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.5.tgz",
+ "integrity": "sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/environment": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/console": "30.0.5",
+ "@jest/environment": "30.0.5",
+ "@jest/test-result": "30.0.5",
+ "@jest/transform": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "chalk": "^4.0.0",
+ "chalk": "^4.1.2",
"emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-leak-detector": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-resolve": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "jest-worker": "^29.7.0",
+ "exit-x": "^0.2.2",
+ "graceful-fs": "^4.2.11",
+ "jest-docblock": "30.0.1",
+ "jest-environment-node": "30.0.5",
+ "jest-haste-map": "30.0.5",
+ "jest-leak-detector": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-resolve": "30.0.5",
+ "jest-runtime": "30.0.5",
+ "jest-util": "30.0.5",
+ "jest-watcher": "30.0.5",
+ "jest-worker": "30.0.5",
"p-limit": "^3.1.0",
"source-map-support": "0.5.13"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-runner/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,
- "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/jest-runner/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runner/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-runner/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runner/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-runtime": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.5.tgz",
+ "integrity": "sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/globals": "^29.7.0",
- "@jest/source-map": "^29.6.3",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/environment": "30.0.5",
+ "@jest/fake-timers": "30.0.5",
+ "@jest/globals": "30.0.5",
+ "@jest/source-map": "30.0.1",
+ "@jest/test-result": "30.0.5",
+ "@jest/transform": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
+ "chalk": "^4.1.2",
+ "cjs-module-lexer": "^2.1.0",
+ "collect-v8-coverage": "^1.0.2",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-mock": "30.0.5",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.0.5",
+ "jest-snapshot": "30.0.5",
+ "jest-util": "30.0.5",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/jest-runtime/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/jest-runtime/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": {
- "color-convert": "^2.0.1"
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/jest-runtime/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"
},
- "engines": {
- "node": ">=8"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/jest-runtime/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/jest-runtime/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,
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runtime/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-runtime/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/jest-snapshot": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.5.tgz",
+ "integrity": "sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.7.0",
- "semver": "^7.5.3"
+ "@babel/core": "^7.27.4",
+ "@babel/generator": "^7.27.5",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/plugin-syntax-typescript": "^7.27.1",
+ "@babel/types": "^7.27.3",
+ "@jest/expect-utils": "30.0.5",
+ "@jest/get-type": "30.0.1",
+ "@jest/snapshot-utils": "30.0.5",
+ "@jest/transform": "30.0.5",
+ "@jest/types": "30.0.5",
+ "babel-preset-current-node-syntax": "^1.1.0",
+ "chalk": "^4.1.2",
+ "expect": "30.0.5",
+ "graceful-fs": "^4.2.11",
+ "jest-diff": "30.0.5",
+ "jest-matcher-utils": "30.0.5",
+ "jest-message-util": "30.0.5",
+ "jest-util": "30.0.5",
+ "pretty-format": "30.0.5",
+ "semver": "^7.7.2",
+ "synckit": "^0.11.8"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-snapshot/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/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,
- "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/jest-snapshot/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-snapshot/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -9449,141 +9198,53 @@
"node": ">=10"
}
},
- "node_modules/jest-snapshot/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/jest-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz",
+ "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "graceful-fs": "^4.2.11",
+ "picomatch": "^4.0.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/jest-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/jest-util/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-util/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,
- "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/jest-util/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-util/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-util/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-util/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/jest-validate": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
- "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.5.tgz",
+ "integrity": "sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/types": "^29.6.3",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
+ "@jest/get-type": "30.0.1",
+ "@jest/types": "30.0.5",
+ "camelcase": "^6.3.0",
+ "chalk": "^4.1.2",
"leven": "^3.1.0",
- "pretty-format": "^29.7.0"
+ "pretty-format": "30.0.5"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-validate/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-validate/node_modules/camelcase": {
@@ -9591,6 +9252,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -9598,163 +9260,41 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/jest-validate/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,
- "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/jest-validate/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-validate/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-validate/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-validate/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/jest-watcher": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.5.tgz",
+ "integrity": "sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
+ "@jest/test-result": "30.0.5",
+ "@jest/types": "30.0.5",
"@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
"emittery": "^0.13.1",
- "jest-util": "^29.7.0",
- "string-length": "^4.0.1"
+ "jest-util": "30.0.5",
+ "string-length": "^4.0.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-watcher/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-watcher/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,
- "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/jest-watcher/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-watcher/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/jest-watcher/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-watcher/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.5.tgz",
+ "integrity": "sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
- "jest-util": "^29.7.0",
+ "@ungap/structured-clone": "^1.3.0",
+ "jest-util": "30.0.5",
"merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
+ "supports-color": "^8.1.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/jest-worker/node_modules/has-flag": {
@@ -9762,6 +9302,7 @@
"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"
}
@@ -9771,6 +9312,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -9784,12 +9326,14 @@
"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=="
+ "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==",
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -9797,21 +9341,137 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/jsdom": {
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
+ "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "cssstyle": "^4.1.0",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.4.3",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.12",
+ "parse5": "^7.1.2",
+ "rrweb-cssom": "^0.7.1",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^5.0.0",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0",
+ "ws": "^8.18.0",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "canvas": "^2.11.2"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom-global": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz",
+ "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "jsdom": ">=10.0.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/tr46": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
+ "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/jsdom/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jsdom/node_modules/whatwg-url": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
+ "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "tr46": "^5.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "license": "MIT",
"dependencies": {
"bignumber.js": "^9.0.0"
}
@@ -9820,24 +9480,28 @@
"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
+ "dev": true,
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stable-stringify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
"integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==",
+ "license": "MIT",
"dependencies": {
"jsonify": "~0.0.0"
}
@@ -9846,12 +9510,14 @@
"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
+ "dev": true,
+ "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"
},
@@ -9863,6 +9529,7 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
},
@@ -9874,6 +9541,7 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
"integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+ "license": "Public Domain",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -9884,12 +9552,14 @@
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
"engines": [
"node >= 0.2.0"
- ]
+ ],
+ "license": "MIT"
},
"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==",
+ "license": "(MIT OR Apache-2.0)",
"dependencies": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
@@ -9902,24 +9572,27 @@
}
},
"node_modules/jsx-ast-utils": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
- "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "array-includes": "^3.1.5",
- "object.assign": "^4.1.3"
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
},
"engines": {
"node": ">=4.0"
}
},
"node_modules/jwa": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
- "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
"dependencies": {
- "buffer-equal-constant-time": "1.0.1",
+ "buffer-equal-constant-time": "^1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
@@ -9937,6 +9610,7 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/jwt-simple/-/jwt-simple-0.5.6.tgz",
"integrity": "sha512-40aUybvhH9t2h71ncA1/1SbtTNCVZHgsTsTgqPUxGWDmUDrXyDf2wMNQKEbdBjbf4AI+fQhbECNTV6lWxQKUzg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -9945,6 +9619,7 @@
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
"integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.0.0"
}
@@ -9954,40 +9629,31 @@
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.1"
}
},
"node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/known-css-properties": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
- "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
+ "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
},
"node_modules/labeled-stream-splicer": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz",
"integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"stream-splicer": "^2.0.0"
@@ -9997,6 +9663,7 @@
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
"integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+ "license": "Apache-2.0",
"dependencies": {
"copy-anything": "^2.0.1",
"tslib": "^1.10.0"
@@ -10021,6 +9688,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"pify": "^4.0.1",
@@ -10034,6 +9702,7 @@
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
"optional": true,
"bin": {
"semver": "bin/semver"
@@ -10044,6 +9713,7 @@
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -10053,6 +9723,7 @@
"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"
@@ -10065,12 +9736,14 @@
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/livereload": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
"integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
+ "license": "MIT",
"dependencies": {
"chokidar": "^3.5.0",
"livereload-js": "^3.3.1",
@@ -10087,13 +9760,15 @@
"node_modules/livereload-js": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz",
- "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g=="
+ "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==",
+ "license": "MIT"
},
"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"
},
@@ -10107,34 +9782,40 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
},
"node_modules/lodash.memoize": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
- "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A=="
+ "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==",
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -10146,6 +9827,7 @@
"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"
}
@@ -10155,6 +9837,7 @@
"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"
},
@@ -10165,26 +9848,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/make-dir/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/make-dir/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -10192,17 +9861,12 @@
"node": ">=10"
}
},
- "node_modules/make-dir/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/makeerror": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
"integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"tmpl": "1.0.5"
}
@@ -10211,26 +9875,16 @@
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
"integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
"integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "license": "MIT",
"dependencies": {
"object-visit": "^1.0.0"
},
@@ -10239,9 +9893,10 @@
}
},
"node_modules/marked": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz",
- "integrity": "sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==",
+ "version": "15.0.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz",
+ "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -10249,39 +9904,77 @@
"node": ">= 18"
}
},
- "node_modules/marked-emoji": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-1.4.1.tgz",
- "integrity": "sha512-3xHWQn8XD1LyhMpHxWpHTDWBZ9bpXLlW8JIqvyXTO6he7okKIB/W9fD/3fTg0DQuZlSQvPZ6Ub5hN6Rnmn7j9g==",
+ "node_modules/marked-alignment-paragraphs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/marked-alignment-paragraphs/-/marked-alignment-paragraphs-1.0.0.tgz",
+ "integrity": "sha512-e+X+vUt9oteG4I0+29ZvTjrNEvB2/uo/Dhczu+Nq0shITA3oqYmTercT25mq+2mfJQQn7xiJGXPmDmBSFgotIA==",
+ "license": "MIT",
"peerDependencies": {
- "marked": ">=4 <14"
+ "marked": ">=3 <16"
+ }
+ },
+ "node_modules/marked-definition-lists": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/marked-definition-lists/-/marked-definition-lists-1.0.1.tgz",
+ "integrity": "sha512-+fBAbGbVnGNNkCLMTnieReZ+gq14iCF0rBc1BBMGDDqnKeImxdvoV9kB8xRTVW4ZH5BPp6XLVykUZW0icsvZTw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "marked": ">=3 <16"
+ }
+ },
+ "node_modules/marked-emoji": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-2.0.1.tgz",
+ "integrity": "sha512-P+nRr02dD+yPOFhtGdaVBzp0qzwlksI2f5GumIdHW/3UadzJ5sVi78CZikiSLr9PmdtUOZodZUBNIO6k38pDMQ==",
+ "peerDependencies": {
+ "marked": ">=4 <17"
}
},
"node_modules/marked-extended-tables": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/marked-extended-tables/-/marked-extended-tables-1.0.8.tgz",
- "integrity": "sha512-GcVQP7EnfQ98o09ooqM4t4M0qfpKdKuk7/z4qZfgkLyXTXsIyFS1eeBmfC36o1NbR6aSq8ynL/LeTz3w4RS27Q==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/marked-extended-tables/-/marked-extended-tables-2.0.1.tgz",
+ "integrity": "sha512-DV4Si978ZdaFbycIxzG4TdaNMtC0J8QfIKj1UOCejgJHwVjVJse8DNdJriWDeo/n74DWVYpRC6S56AdgWDPrPA==",
+ "license": "MIT",
"peerDependencies": {
- "marked": ">=3 <12"
+ "marked": ">=3 <16"
}
},
"node_modules/marked-gfm-heading-id": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-3.2.0.tgz",
- "integrity": "sha512-Xfxpr5lXLDLY10XqzSCA9l2dDaiabQUgtYM9hw8yunyVsB/xYBRpiic6BOiY/EAJw1ik1eWr1ET1HKOAPZBhXg==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.2.tgz",
+ "integrity": "sha512-EQ1WiEGHJh0C8viU+hbXbhHyWTDgEia2i96fiSemm2wdYER6YBw/9QI5TB6YFTqFfmMOxBFXPcPJtlgD0fVV2w==",
"dependencies": {
"github-slugger": "^2.0.0"
},
"peerDependencies": {
- "marked": ">=4 <13"
+ "marked": ">=13 <17"
+ }
+ },
+ "node_modules/marked-nonbreaking-spaces": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/marked-nonbreaking-spaces/-/marked-nonbreaking-spaces-1.0.1.tgz",
+ "integrity": "sha512-CUeFRc6OdMMSJThgOM7WAkUjL59VfSf79urKyKYtH9fs3hnrhC3+syFBimYh4vpvUZmjnXoZX0K6V3vZKmyRWQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "marked": ">=3 <16"
}
},
"node_modules/marked-smartypants-lite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/marked-smartypants-lite/-/marked-smartypants-lite-1.0.2.tgz",
- "integrity": "sha512-cEANts+s3+gnTzXPvPT2z4V8NfbMEL9QooKUviug0DkaKkXQWrUwDAmFnQAkLSJCw2BQcD8YPDyxu0HJ3mg36w==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/marked-smartypants-lite/-/marked-smartypants-lite-1.0.3.tgz",
+ "integrity": "sha512-OOL8cjFog8KtgUFpkihRu6G42Dz2QPOU4k2xfKmMJ0CdoX+BHBDmdesHUdoQKM0mlwTsRSU3shpMeM/LWuUokg==",
+ "license": "MIT",
"peerDependencies": {
- "marked": ">=4 <12"
+ "marked": ">=4 <16"
+ }
+ },
+ "node_modules/marked-subsuper-text": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/marked-subsuper-text/-/marked-subsuper-text-1.0.3.tgz",
+ "integrity": "sha512-v5hVVJo6L7HQtplIT8OYNbRWMCGupXYuZ7U9qTsC4yLDtfw24oM5xmWVYfzqzX6hD7KneMfDssMPt6U7fslbxQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "marked": ">=3 <16"
}
},
"node_modules/markedLegacy": {
@@ -10289,6 +9982,7 @@
"version": "0.3.19",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
"integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked"
},
@@ -10296,11 +9990,21 @@
"node": ">=0.10.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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"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,
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -10310,6 +10014,7 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "license": "MIT",
"dependencies": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
@@ -10317,17 +10022,19 @@
}
},
"node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
+ "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"
},
"node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/memory-pager": {
@@ -10336,68 +10043,43 @@
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
},
"node_modules/meow": {
- "version": "10.1.5",
- "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
- "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
- "dependencies": {
- "@types/minimist": "^1.2.2",
- "camelcase-keys": "^7.0.0",
- "decamelize": "^5.0.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.2",
- "read-pkg-up": "^8.0.0",
- "redent": "^4.0.0",
- "trim-newlines": "^4.0.2",
- "type-fest": "^1.2.2",
- "yargs-parser": "^20.2.9"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/meow/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"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
+ "dev": true,
+ "license": "MIT"
},
"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"
}
@@ -10406,17 +10088,18 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -10427,6 +10110,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -10438,12 +10122,15 @@
"node_modules/miller-rabin/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "optional": true,
"bin": {
"mime": "cli.js"
},
@@ -10455,6 +10142,7 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -10463,6 +10151,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -10475,33 +10164,28 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "license": "ISC"
},
"node_modules/minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "license": "MIT"
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -10513,46 +10197,26 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
+ "license": "ISC",
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/minimist-options/node_modules/arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/minimist-options/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,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/mixin-deep": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "license": "MIT",
"dependencies": {
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
@@ -10565,6 +10229,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -10572,15 +10237,29 @@
"node": ">=0.10.0"
}
},
+ "node_modules/mixin-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/mkdirp-classic": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "license": "MIT"
},
"node_modules/module-deps": {
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz",
"integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==",
+ "license": "MIT",
"dependencies": {
"browser-resolve": "^2.0.0",
"cached-path-relative": "^1.0.2",
@@ -10605,37 +10284,11 @@
"node": ">= 0.8.0"
}
},
- "node_modules/module-deps/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/module-deps/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/module-deps/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/module-deps/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
@@ -10645,27 +10298,60 @@
"version": "2.30.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/mongodb-connection-string-url": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz",
- "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
+ "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
"dependencies": {
"@types/whatwg-url": "^11.0.2",
- "whatwg-url": "^13.0.0"
+ "whatwg-url": "^14.1.0 || ^13.0.0"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/tr46": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
+ "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": {
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
+ "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
+ "dependencies": {
+ "tr46": "^5.1.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/mongoose": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.4.5.tgz",
- "integrity": "sha512-E5KjBThxST2uFSKKXuiMa9H9Zx4DLTSLuxodAnIzJRixNwc1ARTlJUK1m0a80EB+ZKGP4QNTasyUYRG9DUSHOA==",
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.16.3.tgz",
+ "integrity": "sha512-p2JOsRQG7j0vXhLpsWw5Slm2VnDeJK8sRyqSyegk5jQujuP9BTOZ1Di9VX/0lYfBhZ2DpAExi51QTd4pIqSgig==",
+ "license": "MIT",
"dependencies": {
- "bson": "^6.7.0",
+ "bson": "^6.10.4",
"kareem": "2.6.3",
- "mongodb": "6.6.2",
+ "mongodb": "~6.17.0",
"mpath": "0.9.0",
"mquery": "5.0.0",
"ms": "2.1.3",
@@ -10737,12 +10423,12 @@
}
},
"node_modules/mongoose/node_modules/mongodb": {
- "version": "6.6.2",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.2.tgz",
- "integrity": "sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw==",
+ "version": "6.17.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.17.0.tgz",
+ "integrity": "sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==",
"dependencies": {
- "@mongodb-js/saslprep": "^1.1.5",
- "bson": "^6.7.0",
+ "@mongodb-js/saslprep": "^1.1.9",
+ "bson": "^6.10.4",
"mongodb-connection-string-url": "^3.0.0"
},
"engines": {
@@ -10750,7 +10436,7 @@
},
"peerDependencies": {
"@aws-sdk/credential-providers": "^3.188.0",
- "@mongodb-js/zstd": "^1.1.0",
+ "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
"gcp-metadata": "^5.2.0",
"kerberos": "^2.0.1",
"mongodb-client-encryption": ">=6.0.0 <7",
@@ -10781,15 +10467,11 @@
}
}
},
- "node_modules/mongoose/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=="
- },
"node_modules/mpath": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
"integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
@@ -10798,6 +10480,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
"integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+ "license": "MIT",
"dependencies": {
"debug": "4.x"
},
@@ -10806,31 +10489,40 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/nan": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
- "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz",
+ "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
+ "license": "MIT",
"optional": true
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^18 || >=20"
}
},
"node_modules/nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "license": "MIT",
"dependencies": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -10852,6 +10544,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
@@ -10864,6 +10557,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "license": "MIT",
"dependencies": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -10872,45 +10566,24 @@
"node": ">=0.10.0"
}
},
- "node_modules/nanomatch/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/nanomatch/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/nanomatch/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/nanomatch/node_modules/is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -10918,30 +10591,53 @@
"node": ">=0.10.0"
}
},
- "node_modules/nanomatch/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==",
+ "node_modules/nanomatch/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/napi-postinstall": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.2.tgz",
+ "integrity": "sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "napi-postinstall": "lib/cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/napi-postinstall"
+ }
+ },
"node_modules/native-request": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
"integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
+ "license": "MIT",
"optional": 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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/nconf": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz",
- "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.13.0.tgz",
+ "integrity": "sha512-hJ/u2xCpA663h6xyOiztx3y+lg9eU0rdkwJ+c4FtiHo2g/gB0sjXtW31yTdMLWLOIj1gL2FcJMwfOqouuUK/Wg==",
+ "license": "MIT",
"dependencies": {
"async": "^3.0.0",
"ini": "^2.0.0",
@@ -10956,6 +10652,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -10966,6 +10663,7 @@
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -10983,22 +10681,46 @@
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -11014,40 +10736,24 @@
}
}
},
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "node_modules/node-fetch/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/node-fetch/node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "license": "MIT"
},
"node_modules/nodemon": {
- "version": "2.0.21",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz",
- "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==",
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
+ "license": "MIT",
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^3.2.7",
@@ -11075,6 +10781,7 @@
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -11083,76 +10790,16 @@
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
- "node_modules/nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11162,6 +10809,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -11169,10 +10817,19 @@
"node": ">=8"
}
},
+ "node_modules/nwsapi": {
+ "version": "2.2.13",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
+ "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"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==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11181,6 +10838,7 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
"integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "license": "MIT",
"dependencies": {
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
@@ -11194,6 +10852,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
@@ -11202,9 +10861,13 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -11213,7 +10876,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -11222,6 +10885,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
"integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.0"
},
@@ -11230,14 +10894,16 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
- "dev": true,
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
"object-keys": "^1.1.1"
},
"engines": {
@@ -11248,14 +10914,16 @@
}
},
"node_modules/object.entries": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
- "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz",
+ "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
"define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
+ "es-object-atoms": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
@@ -11266,6 +10934,7 @@
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
"integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -11279,27 +10948,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.hasown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
- "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
"integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -11308,12 +10961,14 @@
}
},
"node_modules/object.values": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
- "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
@@ -11328,6 +10983,7 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
@@ -11339,6 +10995,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
@@ -11348,6 +11005,7 @@
"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"
},
@@ -11359,17 +11017,18 @@
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -11378,17 +11037,20 @@
"node_modules/opts": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
- "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg=="
+ "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
+ "license": "BSD-2-Clause"
},
"node_modules/os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "license": "MIT"
},
"node_modules/outpipe": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz",
"integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==",
+ "license": "MIT",
"dependencies": {
"shell-quote": "^1.4.2"
}
@@ -11398,6 +11060,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -11413,6 +11076,7 @@
"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"
},
@@ -11428,20 +11092,30 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "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,
+ "license": "BlueOak-1.0.0"
+ },
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "license": "(MIT AND Zlib)"
},
"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,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -11453,20 +11127,26 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
"integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==",
+ "license": "MIT",
"dependencies": {
"path-platform": "~0.11.15"
}
},
"node_modules/parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz",
+ "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
+ "license": "ISC",
"dependencies": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
+ "asn1.js": "^4.10.1",
+ "browserify-aes": "^1.2.0",
+ "evp_bytestokey": "^1.0.3",
+ "hash-base": "~3.0",
+ "pbkdf2": "^3.1.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
}
},
"node_modules/parse-json": {
@@ -11474,6 +11154,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -11487,10 +11168,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parse5": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "entities": "^4.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -11499,6 +11195,7 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
"integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11506,18 +11203,21 @@
"node_modules/path-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "license": "MIT"
},
"node_modules/path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
+ "license": "MIT"
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -11526,6 +11226,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11535,6 +11236,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -11542,54 +11244,116 @@
"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=="
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
},
"node_modules/path-platform": {
"version": "0.11.15",
"resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
"integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
+ "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,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "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"
+ }
+ },
+ "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"
+ },
"node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
},
"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/pbkdf2": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz",
+ "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==",
"dependencies": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "create-hash": "~1.1.3",
+ "create-hmac": "^1.1.7",
+ "ripemd160": "=2.0.1",
+ "safe-buffer": "^5.2.1",
+ "sha.js": "^2.4.11",
+ "to-buffer": "^1.2.0"
},
"engines": {
"node": ">=0.12"
}
},
+ "node_modules/pbkdf2/node_modules/create-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
+ "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==",
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "node_modules/pbkdf2/node_modules/hash-base": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
+ "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==",
+ "dependencies": {
+ "inherits": "^2.0.1"
+ }
+ },
+ "node_modules/pbkdf2/node_modules/ripemd160": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
+ "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==",
+ "dependencies": {
+ "hash-base": "^2.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ "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": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -11601,16 +11365,18 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=6"
}
},
"node_modules/pirates": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
@@ -11620,6 +11386,7 @@
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
@@ -11632,6 +11399,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -11645,6 +11413,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -11657,6 +11426,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -11672,6 +11442,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -11683,6 +11454,7 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
"integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11691,15 +11463,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
"integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/postcss": {
- "version": "8.4.31",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"dev": true,
"funding": [
{
@@ -11716,9 +11488,9 @@
}
],
"dependencies": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -11729,6 +11501,7 @@
"resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-6.0.0.tgz",
"integrity": "sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -11736,39 +11509,44 @@
"postcss": "^8.3.5"
}
},
- "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
- },
"node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "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
},
"node_modules/postcss-safe-parser": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+ "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/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"engines": {
- "node": ">=12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "node": ">=18.0"
},
"peerDependencies": {
- "postcss": "^8.3.3"
+ "postcss": "^8.4.31"
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "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"
@@ -11778,10 +11556,11 @@
}
},
"node_modules/postcss-sorting": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz",
- "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==",
+ "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,
+ "peer": true,
"peerDependencies": {
"postcss": "^8.4.20"
}
@@ -11790,12 +11569,13 @@
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/postcss/node_modules/nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"dev": true,
"funding": [
{
@@ -11815,22 +11595,24 @@
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"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==",
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz",
+ "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
+ "@jest/schemas": "30.0.5",
+ "ansi-styles": "^5.2.0",
+ "react-is": "^18.3.1"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
"node_modules/pretty-format/node_modules/ansi-styles": {
@@ -11838,6 +11620,7 @@
"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"
},
@@ -11849,6 +11632,7 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
@@ -11856,25 +11640,14 @@
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
},
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -11884,12 +11657,14 @@
"node_modules/prop-types/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
},
"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==",
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -11902,17 +11677,20 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "license": "MIT",
"optional": true
},
"node_modules/pstree.remy": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+ "license": "MIT"
},
"node_modules/public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -11925,20 +11703,22 @@
"node_modules/public-encrypt/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "license": "MIT"
},
"node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pure-rand": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz",
- "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz",
+ "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==",
"dev": true,
"funding": [
{
@@ -11949,14 +11729,16 @@
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -11965,15 +11747,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- }
- },
"node_modules/querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
@@ -12000,24 +11773,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
- },
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ ],
+ "license": "MIT"
},
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "^5.1.0"
}
@@ -12026,6 +11789,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "license": "MIT",
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -12035,18 +11799,20 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
+ "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
+ "iconv-lite": "0.6.3",
"unpipe": "1.0.0"
},
"engines": {
@@ -12057,6 +11823,7 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -12068,6 +11835,7 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -12080,6 +11848,7 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-4.1.3.tgz",
"integrity": "sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA==",
+ "license": "MIT",
"peerDependencies": {
"prop-types": "^15.5.9",
"react": ">= 16.3",
@@ -12087,53 +11856,56 @@
}
},
"node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
+ "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/react-router": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.1.tgz",
- "integrity": "sha512-PTXFXGK2pyXpHzVo3rR9H7ip4lSPZZc0bHG5CARmj65fTT6qG7sTngmb6lcYu1gf3y/8KxORoy9yn59pGpCnpg==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.3.tgz",
+ "integrity": "sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==",
"dependencies": {
- "@remix-run/router": "1.17.1"
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=20.0.0"
},
"peerDependencies": {
- "react": ">=16.8"
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/react-router-dom": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.1.tgz",
- "integrity": "sha512-U19KtXqooqw967Vw0Qcn5cOvrX5Ejo9ORmOtJMzYWtCT4/WOfFLIZGGsVLxcd9UkBO0mSTZtXqhZBsWlHr7+Sg==",
- "dependencies": {
- "@remix-run/router": "1.17.1",
- "react-router": "6.24.1"
- },
+ "node_modules/react-router/node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
"engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "node": ">=18"
}
},
"node_modules/read-only-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
"integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "^2.0.2"
}
},
- "node_modules/read-only-stream/node_modules/readable-stream": {
+ "node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -12144,95 +11916,32 @@
"util-deprecate": "~1.0.1"
}
},
- "node_modules/read-only-stream/node_modules/safe-buffer": {
+ "node_modules/readable-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/readable-stream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
},
- "node_modules/read-only-stream/node_modules/string_decoder": {
+ "node_modules/readable-stream/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
- "node_modules/read-pkg": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
- "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^3.0.2",
- "parse-json": "^5.2.0",
- "type-fest": "^1.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
- "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^5.0.0",
- "read-pkg": "^6.0.0",
- "type-fest": "^1.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -12240,35 +11949,21 @@
"node": ">=8.10.0"
}
},
- "node_modules/redent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
- "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
- "dev": true,
- "dependencies": {
- "indent-string": "^5.0.0",
- "strip-indent": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/reflect.getprototypeof": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
- "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz",
+ "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.1",
+ "dunder-proto": "^1.0.1",
+ "es-abstract": "^1.23.6",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "globalthis": "^1.0.3",
- "which-builtin-type": "^1.1.3"
+ "get-intrinsic": "^1.2.6",
+ "gopd": "^1.2.0",
+ "which-builtin-type": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -12280,12 +11975,14 @@
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "license": "MIT"
},
"node_modules/regenerate-unicode-properties": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "license": "MIT",
"dependencies": {
"regenerate": "^1.4.2"
},
@@ -12293,23 +11990,11 @@
"node": ">=4"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
"node_modules/regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "license": "MIT",
"dependencies": {
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
@@ -12322,6 +12007,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "license": "MIT",
"dependencies": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -12334,6 +12020,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -12341,16 +12028,29 @@
"node": ">=0.10.0"
}
},
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
- "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
- "dev": true,
+ "node_modules/regex-not/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
"define-properties": "^1.2.1",
"es-errors": "^1.3.0",
- "set-function-name": "^2.0.1"
+ "set-function-name": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -12360,14 +12060,15 @@
}
},
"node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
+ "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
+ "license": "MIT",
"dependencies": {
- "@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.12.0",
"unicode-match-property-ecmascript": "^2.0.0",
"unicode-match-property-value-ecmascript": "^2.1.0"
},
@@ -12375,34 +12076,35 @@
"node": ">=4"
}
},
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "license": "MIT"
+ },
"node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
+ "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "jsesc": "~0.5.0"
+ "jsesc": "~3.0.2"
},
"bin": {
"regjsparser": "bin/parser"
}
},
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
"node_modules/remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "license": "ISC"
},
"node_modules/repeat-element": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
"integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -12411,6 +12113,7 @@
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
@@ -12419,6 +12122,7 @@
"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==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -12428,22 +12132,26 @@
"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,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"dependencies": {
- "is-core-module": "^2.9.0",
+ "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"
}
@@ -12453,6 +12161,7 @@
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
"integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
},
@@ -12465,6 +12174,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -12474,6 +12184,7 @@
"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"
}
@@ -12482,21 +12193,14 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
"integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated"
- },
- "node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "license": "MIT"
},
"node_modules/ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "license": "MIT",
"engines": {
"node": ">=0.12"
}
@@ -12506,35 +12210,51 @@
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/ripemd160": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "license": "MIT",
"dependencies": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
}
},
+ "node_modules/romans": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/romans/-/romans-3.1.0.tgz",
+ "integrity": "sha512-URNEK8THW0suBPXUhwtHIK0CkKrtochZ8LhMPTbFoMKLtx46ImFVU+k/OaR2hdcWU/IiUeDpsKfAMKN45+79EQ=="
+ },
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "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"
+ }
+ },
+ "node_modules/rrweb-cssom": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
+ "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -12554,19 +12274,22 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/safe-array-concat": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4",
- "has-symbols": "^1.0.3",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
"isarray": "^2.0.5"
},
"engines": {
@@ -12576,12 +12299,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -12599,25 +12316,28 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "license": "MIT",
"dependencies": {
"ret": "~0.1.10"
}
},
"node_modules/safe-regex-test": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.2",
"es-errors": "^1.3.0",
- "is-regex": "^1.1.4"
+ "is-regex": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -12629,20 +12349,37 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
},
"node_modules/sanitize-filename": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
"integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "license": "WTFPL OR ISC",
"dependencies": {
"truncate-utf8-bytes": "^1.0.0"
}
},
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
"node_modules/scheduler": {
"version": "0.23.2",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
}
@@ -12650,82 +12387,94 @@
"node_modules/secure-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz",
- "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg=="
+ "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==",
+ "license": "MIT"
},
"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/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "license": "MIT",
"dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "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": ">= 0.8.0"
+ "node": ">= 18"
}
},
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/send/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/send/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==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/send/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=="
- },
"node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "license": "MIT",
"dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 18"
}
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+ "license": "MIT"
+ },
"node_modules/set-function-length": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
- "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
- "define-data-property": "^1.1.2",
+ "define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.3",
+ "get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -12736,6 +12485,7 @@
"resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
"integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -12750,6 +12500,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
"integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "license": "MIT",
"dependencies": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@@ -12760,27 +12511,49 @@
"node": ">=0.10.0"
}
},
+ "node_modules/set-value/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
},
"node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "version": "2.4.12",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
+ "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
+ "license": "(MIT AND BSD-3-Clause)",
"dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.0"
},
"bin": {
"sha.js": "bin.js"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/shasum": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
"integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==",
+ "license": "MIT",
"dependencies": {
"json-stable-stringify": "~0.0.0",
"sha.js": "~2.4.4"
@@ -12790,6 +12563,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz",
"integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==",
+ "license": "Apache-2.0",
"dependencies": {
"fast-safe-stringify": "^2.0.7"
}
@@ -12799,6 +12573,7 @@
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -12811,27 +12586,84 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/shell-quote": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz",
- "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
+ "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"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "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"
+ }
+ },
+ "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==",
+ "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"
@@ -12843,13 +12675,15 @@
"node_modules/sift": {
"version": "17.1.3",
"resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
- "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ=="
+ "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "ISC"
},
"node_modules/simple-concat": {
"version": "1.0.1",
@@ -12868,12 +12702,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/simple-update-notifier": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
"integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
+ "license": "MIT",
"dependencies": {
"semver": "~7.0.0"
},
@@ -12885,21 +12721,17 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
"node_modules/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"
}
@@ -12909,6 +12741,7 @@
"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",
@@ -12921,43 +12754,11 @@
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
- "node_modules/slice-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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/slice-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
"node_modules/snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "license": "MIT",
"dependencies": {
"base": "^0.11.1",
"debug": "^2.2.0",
@@ -12976,6 +12777,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
"integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "license": "MIT",
"dependencies": {
"define-property": "^1.0.0",
"isobject": "^3.0.0",
@@ -12989,6 +12791,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.0"
},
@@ -12996,53 +12799,24 @@
"node": ">=0.10.0"
}
},
- "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/snapdragon-node/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/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==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/snapdragon-util": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "license": "MIT",
"dependencies": {
"kind-of": "^3.2.0"
},
@@ -13054,6 +12828,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
@@ -13065,6 +12840,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -13072,12 +12848,14 @@
"node_modules/snapdragon/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/snapdragon/node_modules/source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -13086,14 +12864,15 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "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,
"engines": {
"node": ">=0.10.0"
@@ -13104,6 +12883,7 @@
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
"integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
"deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "license": "MIT",
"dependencies": {
"atob": "^2.1.2",
"decode-uri-component": "^0.2.0",
@@ -13117,6 +12897,7 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
"integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -13126,7 +12907,8 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
"integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated"
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "license": "MIT"
},
"node_modules/sparse-bitfield": {
"version": "3.0.3",
@@ -13136,42 +12918,11 @@
"memory-pager": "^1.0.2"
}
},
- "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,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "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,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
- "dev": true
- },
"node_modules/split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
"integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "license": "MIT",
"dependencies": {
"extend-shallow": "^3.0.0"
},
@@ -13183,6 +12934,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "license": "MIT",
"dependencies": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -13195,6 +12947,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -13202,17 +12955,31 @@
"node": ">=0.10.0"
}
},
+ "node_modules/split-string/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^2.0.0"
},
@@ -13220,19 +12987,11 @@
"node": ">=10"
}
},
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
"integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "license": "MIT",
"dependencies": {
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
@@ -13245,6 +13004,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -13253,78 +13013,27 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
"integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "license": "MIT",
"dependencies": {
"inherits": "~2.0.1",
"readable-stream": "^2.0.2"
}
},
- "node_modules/stream-browserify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/stream-browserify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/stream-browserify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/stream-combiner2": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
"integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
+ "license": "MIT",
"dependencies": {
"duplexer2": "~0.1.0",
"readable-stream": "^2.0.2"
}
},
- "node_modules/stream-combiner2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/stream-combiner2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/stream-combiner2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/stream-http": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
"integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "license": "MIT",
"dependencies": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.4",
@@ -13332,46 +13041,35 @@
"xtend": "^4.0.2"
}
},
+ "node_modules/stream-http/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/stream-splicer": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz",
"integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.2"
}
},
- "node_modules/stream-splicer/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/stream-splicer/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/stream-splicer/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.2.0"
}
@@ -13381,6 +13079,7 @@
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
"integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"char-regex": "^1.0.2",
"strip-ansi": "^6.0.0"
@@ -13393,6 +13092,23 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "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/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",
@@ -13403,23 +13119,25 @@
}
},
"node_modules/string.prototype.matchall": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
- "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
+ "es-abstract": "^1.23.6",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "regexp.prototype.flags": "^1.5.2",
+ "get-intrinsic": "^1.2.6",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "internal-slot": "^1.1.0",
+ "regexp.prototype.flags": "^1.5.3",
"set-function-name": "^2.0.2",
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -13428,16 +13146,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/string.prototype.trim": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-object-atoms": "^1.0.0"
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -13447,15 +13180,20 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -13465,6 +13203,7 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
"integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -13481,6 +13220,21 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=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,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -13493,6 +13247,7 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -13502,30 +13257,17 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/strip-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
- "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
- "dev": true,
- "dependencies": {
- "min-indent": "^1.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -13537,153 +13279,182 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
"integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/stylelint": {
- "version": "15.11.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz",
- "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==",
+ "version": "16.23.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.23.1.tgz",
+ "integrity": "sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==",
"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": "^2.3.1",
- "@csstools/css-tokenizer": "^2.2.0",
- "@csstools/media-query-list-parser": "^2.1.4",
- "@csstools/selector-specificity": "^3.0.0",
+ "@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.1.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
- "cosmiconfig": "^8.2.0",
- "css-functions-list": "^3.2.1",
- "css-tree": "^2.3.1",
- "debug": "^4.3.4",
- "fast-glob": "^3.3.1",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.3",
+ "css-tree": "^3.1.0",
+ "debug": "^4.4.1",
+ "fast-glob": "^3.3.3",
"fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^7.0.0",
+ "file-entry-cache": "^10.1.3",
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
"html-tags": "^3.3.1",
- "ignore": "^5.2.4",
- "import-lazy": "^4.0.0",
+ "ignore": "^7.0.5",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.29.0",
+ "known-css-properties": "^0.37.0",
"mathml-tag-names": "^2.1.3",
- "meow": "^10.1.5",
- "micromatch": "^4.0.5",
+ "meow": "^13.2.0",
+ "micromatch": "^4.0.8",
"normalize-path": "^3.0.0",
- "picocolors": "^1.0.0",
- "postcss": "^8.4.28",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.13",
+ "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",
- "strip-ansi": "^6.0.1",
- "style-search": "^0.1.0",
- "supports-hyperlinks": "^3.0.0",
+ "supports-hyperlinks": "^3.2.0",
"svg-tags": "^1.0.0",
- "table": "^6.8.1",
+ "table": "^6.9.0",
"write-file-atomic": "^5.0.1"
},
"bin": {
"stylelint": "bin/stylelint.mjs"
},
"engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/stylelint"
+ "node": ">=18.12.0"
}
},
"node_modules/stylelint-config-recess-order": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-4.6.0.tgz",
- "integrity": "sha512-V76fhv3YtcNXh/hyAuAdSzi5FmcrG54Mp2AThJ3D/PTMTSYzUPd7GIhP6z9mTqnRhmkk6YTfcu/JWB8h+Yrcaw==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recess-order/-/stylelint-config-recess-order-7.2.0.tgz",
+ "integrity": "sha512-3Y97dhsWkUHFKRLGNLF6LE5JuNB2EVAZKYJ41wBRK4gplYdk7eHhSIwE24hanu0AoNmv5534Djip70pE+y5qkA==",
"dev": true,
- "dependencies": {
- "stylelint-order": "6.x"
- },
+ "license": "ISC",
"peerDependencies": {
- "stylelint": ">=15"
+ "stylelint": ">=16.18",
+ "stylelint-order": ">=7"
}
},
"node_modules/stylelint-config-recommended": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz",
- "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==",
+ "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,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": "^14.13.1 || >=16.0.0"
+ "node": ">=18.12.0"
},
"peerDependencies": {
- "stylelint": "^15.10.0"
+ "stylelint": "^16.23.0"
}
},
"node_modules/stylelint-order": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.3.tgz",
- "integrity": "sha512-1j1lOb4EU/6w49qZeT2SQVJXm0Ht+Qnq9GMfUa3pMwoyojIWfuA+JUDmoR97Bht1RLn4ei0xtLGy87M7d29B1w==",
+ "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,
+ "peer": true,
"dependencies": {
- "postcss": "^8.4.21",
- "postcss-sorting": "^8.0.2"
+ "postcss": "^8.5.3",
+ "postcss-sorting": "^9.1.0"
},
- "peerDependencies": {
- "stylelint": "^14.0.0 || ^15.0.0"
- }
- },
- "node_modules/stylelint-stylistic": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/stylelint-stylistic/-/stylelint-stylistic-0.4.3.tgz",
- "integrity": "sha512-WphmneK3MRrm5ixvRPWy7+c9+EQUh0FPvNMXW/N9VD85vyqtpxUejpD+mxubVVht0fRgidcqBxtW3s3tU2Ujhw==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^5.0.0",
- "postcss": "^8.4.21",
- "postcss-media-query-parser": "^0.2.3",
- "postcss-value-parser": "^4.2.0",
- "style-search": "^0.1.0"
- },
- "peerDependencies": {
- "stylelint": "^15.0.0"
- }
- },
- "node_modules/stylelint-stylistic/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,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^16.18.0"
+ }
+ },
+ "node_modules/stylelint/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,
+ "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"
}
},
"node_modules/stylelint/node_modules/balanced-match": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
"integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/stylelint/node_modules/file-entry-cache": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz",
- "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==",
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.3.tgz",
+ "integrity": "sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.1.1"
- },
- "engines": {
- "node": ">=12.0.0"
+ "flat-cache": "^6.1.12"
}
},
- "node_modules/stylelint/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==",
+ "node_modules/stylelint/node_modules/flat-cache": {
+ "version": "6.1.12",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.12.tgz",
+ "integrity": "sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cacheable": "^1.10.3",
+ "flatted": "^3.3.3",
+ "hookified": "^1.10.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 4"
}
},
"node_modules/stylelint/node_modules/resolve-from": {
@@ -13691,57 +13462,35 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/stylelint/node_modules/signal-exit": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
- "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/stylelint/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,
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/subarg": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
"integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==",
+ "license": "MIT",
"dependencies": {
"minimist": "^1.1.0"
}
},
"node_modules/superagent": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz",
- "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==",
+ "version": "10.2.3",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz",
+ "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==",
+ "license": "MIT",
"dependencies": {
- "component-emitter": "^1.3.0",
+ "component-emitter": "^1.3.1",
"cookiejar": "^2.1.4",
- "debug": "^4.3.4",
+ "debug": "^4.3.7",
"fast-safe-stringify": "^2.1.1",
- "form-data": "^4.0.0",
- "formidable": "^3.5.1",
+ "form-data": "^4.0.4",
+ "formidable": "^3.5.4",
"methods": "^1.1.2",
"mime": "2.6.0",
- "qs": "^6.11.0"
+ "qs": "^6.11.2"
},
"engines": {
"node": ">=14.18.0"
@@ -13751,6 +13500,7 @@
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -13759,13 +13509,14 @@
}
},
"node_modules/supertest": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz",
- "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz",
+ "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"methods": "^1.1.2",
- "superagent": "^9.0.1"
+ "superagent": "^10.2.3"
},
"engines": {
"node": ">=14.18.0"
@@ -13775,6 +13526,7 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -13783,16 +13535,20 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
+ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
"dev": true,
+ "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"
}
},
"node_modules/supports-hyperlinks/node_modules/has-flag": {
@@ -13800,6 +13556,7 @@
"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"
}
@@ -13809,6 +13566,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -13820,6 +13578,7 @@
"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==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -13833,19 +13592,45 @@
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"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",
+ "peer": true
+ },
+ "node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/syntax-error": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
"integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
+ "license": "MIT",
"dependencies": {
"acorn-node": "^1.2.0"
}
},
"node_modules/table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+ "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",
@@ -13858,15 +13643,16 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "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.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -13877,13 +13663,15 @@
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/test-exclude": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
"integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
"glob": "^7.1.4",
@@ -13893,21 +13681,17 @@
"node": ">=8"
}
},
- "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
- },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
},
"node_modules/through2": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.4",
"readable-stream": "2 || 3"
@@ -13924,24 +13708,53 @@
"node": ">=0.6.0"
}
},
+ "node_modules/tldts": {
+ "version": "6.1.56",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.56.tgz",
+ "integrity": "sha512-2PT1oRZCxtsbLi5R2SQjE/v4vvgRggAtVcYj+3Rrcnu2nPZvu7m64+gDa/EsVSWd3QzEc0U0xN+rbEKsJC47kA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "tldts-core": "^6.1.56"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.56",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.56.tgz",
+ "integrity": "sha512-Ihxv/Bwiyj73icTYVgBUkQ3wstlCglLoegSgl64oSrGUBX1hc7Qmf/CnrnJLaQdZrCnTaLqMYOwKMKlkfkFrxQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "node_modules/to-buffer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz",
+ "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==",
+ "dependencies": {
+ "isarray": "^2.0.5",
+ "safe-buffer": "^5.2.1",
+ "typed-array-buffer": "^1.0.3"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
}
},
"node_modules/to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
"integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "license": "MIT",
"dependencies": {
"kind-of": "^3.0.2"
},
@@ -13953,6 +13766,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
@@ -13964,6 +13778,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "license": "MIT",
"dependencies": {
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
@@ -13978,6 +13793,7 @@
"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==",
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -13989,6 +13805,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
@@ -14001,6 +13818,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "license": "MIT",
"dependencies": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -14009,45 +13827,24 @@
"node": ">=0.10.0"
}
},
- "node_modules/to-regex/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/to-regex/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/to-regex/node_modules/is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -14055,10 +13852,14 @@
"node": ">=0.10.0"
}
},
- "node_modules/to-regex/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==",
+ "node_modules/to-regex/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
"engines": {
"node": ">=0.10.0"
}
@@ -14067,48 +13868,47 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
},
"node_modules/touch": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
- "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
- "dependencies": {
- "nopt": "~1.0.10"
- },
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz",
+ "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==",
+ "license": "ISC",
"bin": {
"nodetouch": "bin/nodetouch.js"
}
},
- "node_modules/tr46": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
- "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+ "node_modules/tough-cookie": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz",
+ "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
- "punycode": "^2.3.0"
+ "tldts": "^6.1.32"
},
"engines": {
- "node": ">=14"
+ "node": ">=16"
}
},
- "node_modules/trim-newlines": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
- "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true
},
"node_modules/truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
"integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "license": "WTFPL",
"dependencies": {
"utf8-byte-length": "^1.0.1"
}
@@ -14118,6 +13918,7 @@
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
"integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -14128,18 +13929,21 @@
"node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
},
"node_modules/tty-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
- "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "license": "MIT"
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -14152,6 +13956,7 @@
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -14161,6 +13966,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -14169,42 +13975,66 @@
}
},
"node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "license": "MIT",
"dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/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==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
- "dev": true,
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-typed-array": "^1.1.13"
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typed-array-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
@@ -14214,17 +14044,19 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
},
"engines": {
"node": ">= 0.4"
@@ -14234,17 +14066,18 @@
}
},
"node_modules/typed-array-length": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
- "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-proto": "^1.0.3",
"is-typed-array": "^1.1.13",
- "possible-typed-array-names": "^1.0.0"
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
},
"engines": {
"node": ">= 0.4"
@@ -14256,13 +14089,15 @@
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "license": "MIT"
},
"node_modules/typescript": {
- "version": "5.4.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz",
- "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+ "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true,
+ "license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
@@ -14276,20 +14111,25 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
"integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
+ "license": "MIT",
"bin": {
"umd": "bin/cli.js"
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bound": "^1.0.3",
"has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -14299,6 +14139,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz",
"integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==",
+ "license": "Apache-2.0",
"dependencies": {
"acorn-node": "^1.3.0",
"dash-ast": "^1.0.0",
@@ -14313,12 +14154,21 @@
"node_modules/undefsafe": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
- "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
+ "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -14327,6 +14177,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
"integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "license": "MIT",
"dependencies": {
"unicode-canonical-property-names-ecmascript": "^2.0.0",
"unicode-property-aliases-ecmascript": "^2.0.0"
@@ -14336,9 +14187,10 @@
}
},
"node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -14347,6 +14199,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
"integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -14355,6 +14208,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
"integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "license": "MIT",
"dependencies": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
@@ -14366,9 +14220,10 @@
}
},
"node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
@@ -14377,14 +14232,51 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/unrs-resolver": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
+ "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "napi-postinstall": "^0.3.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unrs-resolver"
+ },
+ "optionalDependencies": {
+ "@unrs/resolver-binding-android-arm-eabi": "1.11.1",
+ "@unrs/resolver-binding-android-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-x64": "1.11.1",
+ "@unrs/resolver-binding-freebsd-x64": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-musl": "1.11.1",
+ "@unrs/resolver-binding-wasm32-wasi": "1.11.1",
+ "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1"
+ }
+ },
"node_modules/unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
"integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "license": "MIT",
"dependencies": {
"has-value": "^0.3.1",
"isobject": "^3.0.0"
@@ -14397,6 +14289,7 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
"integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "license": "MIT",
"dependencies": {
"get-value": "^2.0.3",
"has-values": "^0.1.4",
@@ -14410,6 +14303,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "license": "MIT",
"dependencies": {
"isarray": "1.0.0"
},
@@ -14421,23 +14315,31 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
"integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/unset-value/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/upath": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "license": "MIT",
"engines": {
"node": ">=4",
"yarn": "*"
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
"funding": [
{
"type": "opencollective",
@@ -14452,9 +14354,10 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -14468,6 +14371,7 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
@@ -14476,15 +14380,20 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
"integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated"
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "license": "MIT"
},
"node_modules/url": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
+ "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
+ "license": "MIT",
"dependencies": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
+ "punycode": "^1.4.1",
+ "qs": "^6.12.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/url-template": {
@@ -14493,27 +14402,31 @@
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw=="
},
"node_modules/url/node_modules/punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "license": "MIT"
},
"node_modules/use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
+ "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==",
+ "license": "(WTFPL OR MIT)"
},
"node_modules/util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "license": "MIT",
"dependencies": {
"inherits": "2.0.3"
}
@@ -14521,61 +14434,35 @@
"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=="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
},
"node_modules/util/node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
- "bin": {
- "uuid": "dist/bin/uuid"
- }
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "license": "ISC"
},
"node_modules/v8-to-istanbul": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
+ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
"@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
+ "convert-source-map": "^2.0.0"
},
"engines": {
"node": ">=10.12.0"
}
},
- "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,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
"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==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -14583,7 +14470,6 @@
"node_modules/vitreum": {
"version": "6.0.4",
"resolved": "git+https://git@github.com/calculuschild/vitreum.git#9d55fd6fb7e85e7070de798c4f9d5b983c1b7dba",
- "integrity": "sha512-6b5A4XEXnpyl6JDRWWOhe5lHxtzMVqNA+0Xrl7mPXqh7cYwTUm0yhkYEUkV+mz7rrHTpH7bYEWYsWEE/qTZMpg==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -14607,6 +14493,7 @@
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
@@ -14621,6 +14508,7 @@
"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==",
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -14629,13 +14517,29 @@
"node_modules/vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/walker": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
"integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"makeerror": "1.0.12"
}
@@ -14644,6 +14548,7 @@
"version": "3.11.1",
"resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.1.tgz",
"integrity": "sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog==",
+ "license": "MIT",
"dependencies": {
"anymatch": "^2.0.0",
"browserify": "^16.1.0",
@@ -14661,6 +14566,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "license": "ISC",
"dependencies": {
"micromatch": "^3.1.4",
"normalize-path": "^2.1.1"
@@ -14670,6 +14576,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "license": "MIT",
"dependencies": {
"remove-trailing-separator": "^1.0.1"
},
@@ -14681,6 +14588,7 @@
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -14689,6 +14597,7 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "license": "MIT",
"dependencies": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
@@ -14710,6 +14619,7 @@
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+ "license": "MIT",
"dependencies": {
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
@@ -14731,6 +14641,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
@@ -14743,6 +14654,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "license": "MIT",
"dependencies": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
@@ -14757,8 +14669,9 @@
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -14775,6 +14688,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "license": "ISC",
"dependencies": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
@@ -14784,6 +14698,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.0"
},
@@ -14791,29 +14706,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/watchify/node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchify/node_modules/is-accessor-descriptor/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==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/watchify/node_modules/is-binary-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^1.0.0"
},
@@ -14821,50 +14718,24 @@
"node": ">=0.10.0"
}
},
- "node_modules/watchify/node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchify/node_modules/is-data-descriptor/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==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/watchify/node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "license": "MIT",
"dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchify/node_modules/is-descriptor/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==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
"node_modules/watchify/node_modules/is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -14876,6 +14747,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "license": "MIT",
"dependencies": {
"kind-of": "^3.0.2"
},
@@ -14883,10 +14755,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/watchify/node_modules/kind-of": {
+ "node_modules/watchify/node_modules/is-number/node_modules/kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
@@ -14894,10 +14767,23 @@
"node": ">=0.10.0"
}
},
+ "node_modules/watchify/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/watchify/node_modules/micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "license": "MIT",
"dependencies": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -14921,6 +14807,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "license": "MIT",
"dependencies": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -14929,32 +14816,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/watchify/node_modules/micromatch/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==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/watchify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
"node_modules/watchify/node_modules/readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
@@ -14964,23 +14830,11 @@
"node": ">=0.10"
}
},
- "node_modules/watchify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/watchify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/watchify/node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
@@ -14990,6 +14844,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
"integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "license": "MIT",
"dependencies": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
@@ -14998,24 +14853,57 @@
"node": ">=0.10.0"
}
},
- "node_modules/webidl-conversions": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "node_modules/web-streams-polyfill": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"engines": {
- "node": ">=12"
+ "node": ">= 8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause",
+ "optional": true,
+ "peer": true
+ },
+ "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,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/whatwg-url": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz",
- "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
"dependencies": {
- "tr46": "^4.1.1",
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=16"
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
}
},
"node_modules/which": {
@@ -15023,6 +14911,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -15034,39 +14923,17 @@
}
},
"node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-builtin-type": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
- "dev": true,
- "dependencies": {
- "function.prototype.name": "^1.1.5",
- "has-tostringtag": "^1.0.0",
- "is-async-function": "^2.0.0",
- "is-date-object": "^1.0.5",
- "is-finalizationregistry": "^1.0.2",
- "is-generator-function": "^1.0.10",
- "is-regex": "^1.1.4",
- "is-weakref": "^1.0.2",
- "isarray": "^2.0.5",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
@@ -15075,17 +14942,40 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/which-builtin-type/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/which-collection": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
"integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-map": "^2.0.3",
"is-set": "^2.0.3",
@@ -15100,15 +14990,16 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
- "dev": true,
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz",
+ "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==",
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
+ "gopd": "^1.2.0",
"has-tostringtag": "^1.0.2"
},
"engines": {
@@ -15118,10 +15009,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -15134,58 +15036,67 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "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==",
+ "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,
+ "license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi/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==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/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=="
- },
"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=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "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,
"dependencies": {
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "signal-exit": "^4.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/write-file-atomic/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,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/written-number": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/written-number/-/written-number-0.11.1.tgz",
+ "integrity": "sha512-LhQ68uUnzHH0bwm/QiGA9JwqgadSDOwqB2AIs/LBsrOY6ScqVXKRN2slTCeKAhstDBJ/Of/Yxcjn0pnQmVlmtg==",
+ "license": "MIT"
+ },
"node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
"engines": {
"node": ">=8.3.0"
},
@@ -15202,10 +15113,30 @@
}
}
},
+ "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",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "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",
+ "peer": true
+ },
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -15214,6 +15145,7 @@
"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"
}
@@ -15221,13 +15153,15 @@
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
},
"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,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -15246,6 +15180,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -15255,6 +15190,7 @@
"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"
},
diff --git a/package.json b/package.json
index 321f9afbe..5c6fb4efc 100644
--- a/package.json
+++ b/package.json
@@ -1,28 +1,33 @@
{
"name": "homebrewery",
"description": "Create authentic looking D&D homebrews using only markdown",
- "version": "3.13.1",
+ "version": "3.19.3",
+ "type": "module",
"engines": {
- "npm": "^10.2.x",
- "node": "^20.8.x"
+ "npm": "^10.8.x",
+ "node": "^20.18.x"
},
"repository": {
"type": "git",
"url": "git://github.com/naturalcrit/homebrewery.git"
},
"scripts": {
- "dev": "node scripts/dev.js",
- "quick": "node scripts/quick.js",
- "build": "node scripts/buildHomebrew.js && node scripts/buildAdmin.js",
- "builddev": "node scripts/buildHomebrew.js --dev",
- "lint": "eslint --fix **/*.{js,jsx}",
- "lint:dry": "eslint **/*.{js,jsx}",
+ "dev": "node --experimental-require-module scripts/dev.js",
+ "quick": "node --experimental-require-module scripts/quick.js",
+ "build": "node --experimental-require-module scripts/buildHomebrew.js && node --experimental-require-module scripts/buildAdmin.js",
+ "builddev": "node --experimental-require-module scripts/buildHomebrew.js --dev",
+ "lint": "eslint --fix",
+ "lint:dry": "eslint",
"stylelint": "stylelint --fix **/*.{less}",
"stylelint:dry": "stylelint **/*.less",
"circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0",
"verify": "npm run lint && npm test",
"test": "jest --runInBand",
- "test:api-unit": "jest server/*.spec.js --verbose",
+ "test:api-unit": "jest \"server/.*.spec.js\" --verbose",
+ "test:api-unit:themes": "jest \"server/.*.spec.js\" -t \"theme bundle\" --verbose",
+ "test:api-unit:css": "jest \"server/.*.spec.js\" -t \"Get CSS\" --verbose",
+ "test:api-unit:notifications": "jest \"server/.*.spec.js\" -t \"Notifications\" --verbose",
+ "test:content-negotiation": "jest \"server/middleware/.*.spec.js\" --verbose",
"test:coverage": "jest --coverage --silent --runInBand",
"test:dev": "jest --verbose --watch",
"test:basic": "jest tests/markdown/basic.test.js --verbose",
@@ -31,13 +36,15 @@
"test:mustache-syntax:inline": "jest \".*(mustache-syntax).*\" -t '^Inline:.*' --verbose --noStackTrace",
"test:mustache-syntax:block": "jest \".*(mustache-syntax).*\" -t '^Block:.*' --verbose --noStackTrace",
"test:mustache-syntax:injection": "jest \".*(mustache-syntax).*\" -t '^Injection:.*' --verbose --noStackTrace",
- "test:definition-lists": "jest tests/markdown/definition-lists.test.js --verbose --noStackTrace",
+ "test:hard-breaks": "jest tests/markdown/hard-breaks.test.js --verbose --noStackTrace",
+ "test:non-breaking-spaces": "jest tests/markdown/non-breaking-spaces.test.js --verbose --noStackTrace",
"test:emojis": "jest tests/markdown/emojis.test.js --verbose --noStackTrace",
"test:route": "jest tests/routes/static-pages.test.js --verbose",
- "phb": "node scripts/phb.js",
+ "test:safehtml": "jest tests/html/safeHTML.test.js --verbose",
+ "phb": "node --experimental-require-module scripts/phb.js",
"prod": "set NODE_ENV=production && npm run build",
"postinstall": "npm run build",
- "start": "node server.js"
+ "start": "node --experimental-require-module server.js"
},
"author": "stolksdorf",
"license": "MIT",
@@ -51,20 +58,23 @@
"shared",
"server"
],
+ "transformIgnorePatterns": [
+ "node_modules/(?!nanoid/).*"
+ ],
"coveragePathIgnorePatterns": [
"build/*"
],
"coverageThreshold": {
"global": {
- "statements": 25,
- "branches": 10,
- "functions": 22,
- "lines": 25
+ "statements": 50,
+ "branches": 40,
+ "functions": 40,
+ "lines": 50
},
"server/homebrew.api.js": {
- "statements": 65,
+ "statements": 60,
"branches": 50,
- "functions": 60,
+ "functions": 65,
"lines": 70
}
},
@@ -72,66 +82,73 @@
"jest-expect-message"
]
},
- "babel": {
- "presets": [
- "@babel/preset-env",
- "@babel/preset-react"
- ],
- "plugins": [
- "@babel/plugin-transform-runtime"
- ]
- },
"dependencies": {
- "@babel/core": "^7.24.7",
- "@babel/plugin-transform-runtime": "^7.24.7",
- "@babel/preset-env": "^7.24.7",
- "@babel/preset-react": "^7.24.7",
- "@googleapis/drive": "^8.11.0",
- "body-parser": "^1.20.2",
+ "@babel/core": "^7.27.1",
+ "@babel/plugin-transform-runtime": "^7.28.0",
+ "@babel/preset-env": "^7.28.0",
+ "@babel/preset-react": "^7.27.1",
+ "@babel/runtime": "^7.27.6",
+ "@dmsnell/diff-match-patch": "^1.1.0",
+ "@googleapis/drive": "^13.0.1",
+ "@sanity/diff-match-patch": "^3.2.0",
+ "body-parser": "^2.2.0",
"classnames": "^2.5.1",
"codemirror": "^5.65.6",
- "cookie-parser": "^1.4.6",
+ "cookie-parser": "^1.4.7",
+ "core-js": "^3.44.0",
+ "cors": "^2.8.5",
"create-react-class": "^15.7.0",
"dedent-tabs": "^0.10.3",
- "dompurify": "^3.1.5",
"expr-eval": "^2.0.2",
- "express": "^4.19.2",
+ "express": "^5.1.0",
"express-async-handler": "^1.2.0",
- "express-static-gzip": "2.1.7",
- "fs-extra": "11.2.0",
+ "express-static-gzip": "3.0.0",
+ "fflate": "^0.8.2",
+ "fs-extra": "11.3.0",
+ "hash-wasm": "^4.12.0",
+ "idb-keyval": "^6.2.2",
"js-yaml": "^4.1.0",
"jwt-simple": "^0.5.6",
"less": "^3.13.1",
"lodash": "^4.17.21",
- "marked": "11.2.0",
- "marked-emoji": "^1.4.1",
- "marked-extended-tables": "^1.0.8",
- "marked-gfm-heading-id": "^3.2.0",
- "marked-smartypants-lite": "^1.0.2",
+ "marked": "15.0.12",
+ "marked-alignment-paragraphs": "^1.0.0",
+ "marked-definition-lists": "^1.0.1",
+ "marked-emoji": "^2.0.1",
+ "marked-extended-tables": "^2.0.1",
+ "marked-gfm-heading-id": "^4.1.2",
+ "marked-nonbreaking-spaces": "^1.0.1",
+ "marked-smartypants-lite": "^1.0.3",
+ "marked-subsuper-text": "^1.0.3",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.30.1",
- "mongoose": "^8.4.5",
- "nanoid": "3.3.4",
- "nconf": "^0.12.1",
+ "mongoose": "^8.16.3",
+ "nanoid": "5.1.5",
+ "nconf": "^0.13.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-frame-component": "^4.1.3",
- "react-router-dom": "6.24.1",
+ "react-router": "^7.6.3",
+ "romans": "^3.1.0",
"sanitize-filename": "1.6.3",
- "superagent": "^9.0.2",
- "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
+ "superagent": "^10.2.1",
+ "vitreum": "git+https://git@github.com/calculuschild/vitreum.git",
+ "written-number": "^0.11.1"
},
"devDependencies": {
- "eslint": "^8.57.0",
- "eslint-plugin-jest": "^28.6.0",
- "eslint-plugin-react": "^7.34.3",
- "jest": "^29.7.0",
+ "@stylistic/stylelint-plugin": "^4.0.0",
+ "babel-plugin-transform-import-meta": "^2.3.3",
+ "eslint": "^9.34.0",
+ "eslint-plugin-jest": "^29.0.1",
+ "eslint-plugin-react": "^7.37.5",
+ "globals": "^16.3.0",
+ "jest": "^30.0.5",
"jest-expect-message": "^1.1.3",
+ "jsdom-global": "^3.0.2",
"postcss-less": "^6.0.0",
- "stylelint": "^15.11.0",
- "stylelint-config-recess-order": "^4.6.0",
- "stylelint-config-recommended": "^13.0.0",
- "stylelint-stylistic": "^0.4.3",
- "supertest": "^7.0.0"
+ "stylelint": "^16.23.1",
+ "stylelint-config-recess-order": "^7.2.0",
+ "stylelint-config-recommended": "^17.0.0",
+ "supertest": "^7.1.4"
}
}
diff --git a/scripts/buildAdmin.js b/scripts/buildAdmin.js
index 1157a063b..9c77315ef 100644
--- a/scripts/buildAdmin.js
+++ b/scripts/buildAdmin.js
@@ -1,13 +1,14 @@
-const fs = require('fs-extra');
-const Proj = require('./project.json');
-const { pack } = require('vitreum');
+import fs from 'fs-extra';
+import Proj from './project.json' with { type: 'json' };
+import vitreum from 'vitreum';
+const { pack } = vitreum;
+
+import lessTransform from 'vitreum/transforms/less.js';
+import assetTransform from 'vitreum/transforms/asset.js';
+
const isDev = !!process.argv.find((arg)=>arg=='--dev');
-const lessTransform = require('vitreum/transforms/less.js');
-const assetTransform = require('vitreum/transforms/asset.js');
-//const Meta = require('vitreum/headtags');
-
const transforms = {
'.less' : lessTransform,
'*' : assetTransform('./build')
@@ -17,7 +18,7 @@ const build = async ({ bundle, render, ssr })=>{
const css = await lessTransform.generate({ paths: './shared' });
await fs.outputFile('./build/admin/bundle.css', css);
await fs.outputFile('./build/admin/bundle.js', bundle);
- await fs.outputFile('./build/admin/ssr.js', ssr);
+ await fs.outputFile('./build/admin/ssr.cjs', ssr);
};
fs.emptyDirSync('./build/admin');
diff --git a/scripts/buildHomebrew.js b/scripts/buildHomebrew.js
index f072b0359..4d55a4176 100644
--- a/scripts/buildHomebrew.js
+++ b/scripts/buildHomebrew.js
@@ -1,16 +1,18 @@
-const fs = require('fs-extra');
-const zlib = require('zlib');
-const Proj = require('./project.json');
+import fs from 'fs-extra';
+import zlib from 'zlib';
+import Proj from './project.json' with { type: 'json' };
+import vitreum from 'vitreum';
+const { pack, watchFile, livereload } = vitreum;
-const { pack, watchFile, livereload } = require('vitreum');
-const isDev = !!process.argv.find((arg)=>arg=='--dev');
+import lessTransform from 'vitreum/transforms/less.js';
+import assetTransform from 'vitreum/transforms/asset.js';
+import babel from '@babel/core';
+import babelConfig from '../babel.config.json' with { type : 'json' };
+import less from 'less';
-const lessTransform = require('vitreum/transforms/less.js');
-const assetTransform = require('vitreum/transforms/asset.js');
-const babel = require('@babel/core');
-const less = require('less');
+const isDev = !!process.argv.find((arg)=>arg === '--dev');
-const babelify = async (code)=>(await babel.transformAsync(code, { presets: [['@babel/preset-env', { 'exclude': ['proposal-dynamic-import'] }], '@babel/preset-react'], plugins: ['@babel/plugin-transform-runtime'] })).code;
+const babelify = async (code)=>(await babel.transformAsync(code, babelConfig)).code;
const transforms = {
'.js' : (code, filename, opts)=>babelify(code),
@@ -24,7 +26,7 @@ const build = async ({ bundle, render, ssr })=>{
//css = `@layer bundle {\n${css}\n}`;
await fs.outputFile('./build/homebrew/bundle.css', css);
await fs.outputFile('./build/homebrew/bundle.js', bundle);
- await fs.outputFile('./build/homebrew/ssr.js', ssr);
+ await fs.outputFile('./build/homebrew/ssr.cjs', ssr);
await fs.copy('./client/homebrew/favicon.ico', './build/assets/favicon.ico');
@@ -51,7 +53,7 @@ fs.emptyDirSync('./build');
const themes = { Legacy: {}, V3: {} };
let themeFiles = fs.readdirSync('./themes/Legacy');
- for (dir of themeFiles) {
+ for (const dir of themeFiles) {
const themeData = JSON.parse(fs.readFileSync(`./themes/Legacy/${dir}/settings.json`).toString());
themeData.path = dir;
themes.Legacy[dir] = (themeData);
@@ -68,7 +70,7 @@ fs.emptyDirSync('./build');
}
themeFiles = fs.readdirSync('./themes/V3');
- for (dir of themeFiles) {
+ for (const dir of themeFiles) {
const themeData = JSON.parse(fs.readFileSync(`./themes/V3/${dir}/settings.json`).toString());
themeData.path = dir;
themes.V3[dir] = (themeData);
@@ -104,14 +106,14 @@ fs.emptyDirSync('./build');
const editorThemesBuildDir = './build/homebrew/cm-themes';
await fs.copy('./node_modules/codemirror/theme', editorThemesBuildDir);
await fs.copy('./themes/codeMirror/customThemes', editorThemesBuildDir);
- editorThemeFiles = fs.readdirSync(editorThemesBuildDir);
+ const editorThemeFiles = fs.readdirSync(editorThemesBuildDir);
const editorThemeFile = './themes/codeMirror/editorThemes.json';
if(fs.existsSync(editorThemeFile)) fs.rmSync(editorThemeFile);
const stream = fs.createWriteStream(editorThemeFile, { flags: 'a' });
stream.write('[\n"default"');
- for (themeFile of editorThemeFiles) {
+ for (const themeFile of editorThemeFiles) {
stream.write(`,\n"${themeFile.slice(0, -4)}"`);
}
stream.write('\n]\n');
diff --git a/scripts/project.json b/scripts/project.json
index c384ae1de..7385b674a 100644
--- a/scripts/project.json
+++ b/scripts/project.json
@@ -27,6 +27,8 @@
"codemirror/addon/selection/active-line.js",
"codemirror/addon/hint/show-hint.js",
"moment",
- "superagent"
+ "superagent",
+ "@sanity/diff-match-patch",
+ "fflate"
]
}
diff --git a/server.js b/server.js
index 6cbe07c4f..fe5a9a363 100644
--- a/server.js
+++ b/server.js
@@ -1,12 +1,12 @@
-const DB = require('./server/db.js');
-const server = require('./server/app.js');
-const config = require('./server/config.js');
+import DB from './server/db.js';
+import server from './server/app.js';
+import config from './server/config.js';
DB.connect(config).then(()=>{
// Ensure that we have successfully connected to the database
// before launching server
const PORT = process.env.PORT || config.get('web_port') || 8000;
- server.app.listen(PORT, ()=>{
+ server.listen(PORT, ()=>{
const reset = '\x1b[0m'; // Reset to default style
const bright = '\x1b[1m'; // Bright (bold) style
const cyan = '\x1b[36m'; // Cyan color
diff --git a/server/admin.api.js b/server/admin.api.js
index fe2def3ce..a3d7622f1 100644
--- a/server/admin.api.js
+++ b/server/admin.api.js
@@ -1,9 +1,17 @@
-const HomebrewModel = require('./homebrew.model.js').model;
-const router = require('express').Router();
-const Moment = require('moment');
-//const render = require('vitreum/steps/render');
-const templateFn = require('../client/template.js');
-const zlib = require('zlib');
+/*eslint max-lines: ["warn", {"max": 500, "skipBlankLines": true, "skipComments": true}]*/
+import { model as HomebrewModel } from './homebrew.model.js';
+import { model as NotificationModel } from './notifications.model.js';
+import express from 'express';
+import Moment from 'moment';
+import zlib from 'zlib';
+import templateFn from '../client/template.js';
+
+import HomebrewAPI from './homebrew.api.js';
+import asyncHandler from 'express-async-handler';
+import { splitTextStyleAndMetadata } from '../shared/helpers.js';
+
+const router = express.Router();
+
process.env.ADMIN_USER = process.env.ADMIN_USER || 'admin';
process.env.ADMIN_PASS = process.env.ADMIN_PASS || 'password3';
@@ -22,7 +30,7 @@ const mw = {
if(process.env.ADMIN_USER === username && process.env.ADMIN_PASS === password){
return next();
}
- return res.status(401).send('Access denied');
+ throw { HBErrorCode: '52', code: 401, message: 'Access denied' };
}
};
@@ -66,23 +74,8 @@ router.post('/admin/cleanup', mw.adminOnly, (req, res)=>{
});
/* Searches for matching edit or share id, also attempts to partial match */
-router.get('/admin/lookup/:id', mw.adminOnly, async (req, res, next)=>{
- HomebrewModel.findOne({
- $or : [
- { editId: { $regex: req.params.id, $options: 'i' } },
- { shareId: { $regex: req.params.id, $options: 'i' } },
- ]
- }).exec()
- .then((brew)=>{
- if(!brew) // No document found
- return res.status(404).json({ error: 'Document not found' });
- else
- return res.json(brew);
- })
- .catch((err)=>{
- console.error(err);
- return res.status(500).json({ error: 'Internal Server Error' });
- });
+router.get('/admin/lookup/:id', mw.adminOnly, asyncHandler(HomebrewAPI.getBrew('admin', false)), async (req, res, next)=>{
+ return res.json(req.brew);
});
/* Find 50 brews that aren't compressed yet */
@@ -100,6 +93,40 @@ router.get('/admin/finduncompressed', mw.adminOnly, (req, res)=>{
});
});
+/* Cleans ``;
+ const rendered = safeHTML(source);
+ expect(rendered).toBe('Click me
');
+});
+
+
+
diff --git a/tests/markdown/basic.test.js b/tests/markdown/basic.test.js
index 80f5520e7..aaa2adf58 100644
--- a/tests/markdown/basic.test.js
+++ b/tests/markdown/basic.test.js
@@ -1,6 +1,6 @@
-/* eslint-disable max-lines */
-const Markdown = require('naturalcrit/markdown.js');
+
+import Markdown from 'naturalcrit/markdown.js';
test('Processes the markdown within an HTML block if its just a class wrapper', function() {
const source = '*Bold text*
';
diff --git a/tests/markdown/definition-lists.test.js b/tests/markdown/definition-lists.test.js
index 9f5025d73..144dad880 100644
--- a/tests/markdown/definition-lists.test.js
+++ b/tests/markdown/definition-lists.test.js
@@ -1,6 +1,6 @@
-/* eslint-disable max-lines */
-const Markdown = require('naturalcrit/markdown.js');
+
+import Markdown from 'naturalcrit/markdown.js';
describe('Inline Definition Lists', ()=>{
test('No Term 1 Definition', function() {
@@ -88,4 +88,16 @@ describe('Multiline Definition Lists', ()=>{
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('Term 1 Inline definition 1 \nInline definition 2 (no DT) \n ');
});
+
+ test('Multiline Definition Term must have at least one non-empty Definition', function() {
+ const source = 'Term 1\n::';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Term 1
\n
\n
`);
+ });
+
+ test('Multiline Definition List must have at least one non-newline character after ::', function() {
+ const source = 'Term 1\n::\nDefinition 1\n\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Term 1
\n
\n
\nDefinition 1
`);
+ });
});
diff --git a/tests/markdown/emojis.test.js b/tests/markdown/emojis.test.js
index a4abbc6a4..e70ebb673 100644
--- a/tests/markdown/emojis.test.js
+++ b/tests/markdown/emojis.test.js
@@ -1,4 +1,4 @@
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
const dedent = require('dedent-tabs').default;
// Marked.js adds line returns after closing tags on some default tokens.
diff --git a/tests/markdown/hard-breaks.test.js b/tests/markdown/hard-breaks.test.js
new file mode 100644
index 000000000..63bfaef9c
--- /dev/null
+++ b/tests/markdown/hard-breaks.test.js
@@ -0,0 +1,47 @@
+
+
+import Markdown from 'naturalcrit/markdown.js';
+
+describe('Hard Breaks', ()=>{
+ test('Single Break', function() {
+ const source = ':\n\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
+ });
+
+ test('Double Break', function() {
+ const source = '::\n\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
\n
`);
+ });
+
+ test('Triple Break', function() {
+ const source = ':::\n\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
\n
\n
`);
+ });
+
+ test('Many Break', function() {
+ const source = '::::::::::\n\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
\n
\n
\n
\n
\n
\n
\n
\n
\n
`);
+ });
+
+ test('Multiple sets of Breaks', function() {
+ const source = ':::\n:::\n:::';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
\n
\n
\n
\n
\n
\n
\n
\n
`);
+ });
+
+ test('Break directly between two paragraphs', function() {
+ const source = 'Line 1\n::\nLine 2';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Line 1
\n
\n
\nLine 2
`);
+ });
+
+ test('Ignored inside a code block', function() {
+ const source = '```\n\n:\n\n```\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`\n:\n `);
+ });
+});
diff --git a/tests/markdown/mustache-syntax.test.js b/tests/markdown/mustache-syntax.test.js
index 3f7f2529b..d17518411 100644
--- a/tests/markdown/mustache-syntax.test.js
+++ b/tests/markdown/mustache-syntax.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
const dedent = require('dedent-tabs').default;
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
@@ -300,7 +300,7 @@ describe('Injection: When an injection tag follows an element', ()=>{
it('Renders a span "text" with its own styles, appended with injected styles', function() {
const source = '{{color:blue,height:10px text}}{width:10px,color:red}';
const rendered = Markdown.render(source);
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('text ');
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('text ');
});
it('Renders a span "text" with its own classes, appended with injected classes', function() {
@@ -322,9 +322,9 @@ describe('Injection: When an injection tag follows an element', ()=>{
});
it('Renders an image element with injected style', function() {
- const source = '{position:absolute}';
+ const source = '{position:absolute}';
const rendered = Markdown.render(source).trimReturns();
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
');
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
');
});
it('Renders an element modified by only the first of two consecutive injections', function() {
@@ -343,19 +343,19 @@ describe('Injection: When an injection tag follows an element', ()=>{
it('Renders an image with added attributes', function() {
const source = ` {position:absolute,bottom:20px,left:130px,width:220px,a="b and c",d=e}`;
const rendered = Markdown.render(source).trimReturns();
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
});
it('Renders an image with "=" in the url, and added attributes', function() {
const source = ` {position:absolute,bottom:20px,left:130px,width:220px,a="b and c",d=e}`;
const rendered = Markdown.render(source).trimReturns();
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
});
it('Renders an image and added attributes with "=" in the value, ', function() {
const source = ` {position:absolute,bottom:20px,left:130px,width:220px,a="b and c",d=e,otherUrl="url?auth=12345"}`;
const rendered = Markdown.render(source).trimReturns();
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`
`);
});
});
@@ -429,7 +429,7 @@ describe('Injection: When an injection tag follows an element', ()=>{
}}
{width:10px,color:red}`;
const rendered = Markdown.render(source).trimReturns();
- expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('');
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('');
});
it('Renders a span "text" with its own classes, appended with injected classes', function() {
diff --git a/tests/markdown/non-breaking-spaces.test.js b/tests/markdown/non-breaking-spaces.test.js
new file mode 100644
index 000000000..e498645a6
--- /dev/null
+++ b/tests/markdown/non-breaking-spaces.test.js
@@ -0,0 +1,24 @@
+
+
+import Markdown from 'naturalcrit/markdown.js';
+
+describe('Non-Breaking Spaces Interactions', ()=>{
+ test('I am actually a single-line definition list!', function() {
+ const source = 'Term ::> Definition 1\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Term > Definition 1 \n `);
+ });
+
+ test('I am actually a definition list!', function() {
+ const source = 'Term\n::> Definition 1\n';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Term \n> Definition 1 `);
+ });
+
+ test('I am actually a two-term definition list!', function() {
+ const source = 'Term\n::> Definition 1\n::>> Definition 2';
+ const rendered = Markdown.render(source).trim();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Term \n> Definition 1 \n>> Definition 2 `);
+ });
+});
+
diff --git a/tests/markdown/paragraph-justification.test.js b/tests/markdown/paragraph-justification.test.js
new file mode 100644
index 000000000..7876f5a26
--- /dev/null
+++ b/tests/markdown/paragraph-justification.test.js
@@ -0,0 +1,27 @@
+
+
+import Markdown from 'naturalcrit/markdown.js';
+
+describe('Justification', ()=>{
+ test('Left Justify', function() {
+ const source = ':- Hello';
+ const rendered = Markdown.render(source);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Hello
`);
+ });
+ test('Right Justify', function() {
+ const source = '-: Hello';
+ const rendered = Markdown.render(source);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Hello
`);
+ });
+ test('Center Justify', function() {
+ const source = ':-: Hello';
+ const rendered = Markdown.render(source);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`Hello
`);
+ });
+
+ test('Ignored inside a code block', function() {
+ const source = '```\n\n:- Hello\n\n```\n';
+ const rendered = Markdown.render(source);
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`\n:- Hello\n \n`);
+ });
+});
diff --git a/tests/markdown/variables.test.js b/tests/markdown/variables.test.js
index e6018e19f..ea98fe56c 100644
--- a/tests/markdown/variables.test.js
+++ b/tests/markdown/variables.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
const dedent = require('dedent-tabs').default;
-const Markdown = require('naturalcrit/markdown.js');
+import Markdown from 'naturalcrit/markdown.js';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
@@ -315,21 +315,21 @@ describe('Normal Links and Images', ()=>{
const source = ``;
const rendered = Markdown.render(source).trimReturns();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(dedent`
-
`.trimReturns());
+
`.trimReturns());
});
it('Renders normal images with a title', function() {
const source = 'An image !';
const rendered = Markdown.render(source).trimReturns();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(dedent`
- An image !
`.trimReturns());
+ An image !
`.trimReturns());
});
it('Applies curly injectors to images', function() {
const source = `{width:100px}`;
const rendered = Markdown.render(source).trimReturns();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(dedent`
-
`.trimReturns());
+
`.trimReturns());
});
it('Renders normal links', function() {
@@ -370,4 +370,166 @@ describe('Cross-page variables', ()=>{
const rendered = renderAllPages([source0, source1]).join('\n\\page\n').trimReturns();
expect(rendered, `Input:\n${[source0, source1].join('\n\\page\n')}`, { showPrefix: false }).toBe('two
one
\\pagetwo
');
});
+
+ it('Page numbering across pages : default', function() {
+ const source0 = `$[HB_pageNumber]\n\n`;
+ const source1 = `$[HB_pageNumber]\n\n`;
+ renderAllPages([source0, source1]).join('\n\\page\n').trimReturns(); //Requires one full render of document before hoisting is picked up
+ const rendered = renderAllPages([source0, source1]).join('\n\\page\n').trimReturns();
+ expect(rendered, `Input:\n${[source0, source1].join('\n\\page\n')}`, { showPrefix: false }).toBe('1
\\page2
');
+ });
+
+ it('Page numbering across pages : custom page number (Number)', function() {
+ const source0 = `[HB_pageNumber]:100\n\n$[HB_pageNumber]\n\n`;
+ const source1 = `$[HB_pageNumber]\n\n`;
+ renderAllPages([source0, source1]).join('\n\\page\n').trimReturns(); //Requires one full render of document before hoisting is picked up
+ const rendered = renderAllPages([source0, source1]).join('\n\\page\n').trimReturns();
+ expect(rendered, `Input:\n${[source0, source1].join('\n\\page\n')}`, { showPrefix: false }).toBe('100
\\page101
');
+ });
+
+ it('Page numbering across pages : custom page number (NaN)', function() {
+ const source0 = `[HB_pageNumber]:a\n\n$[HB_pageNumber]\n\n`;
+ const source1 = `$[HB_pageNumber]\n\n`;
+ renderAllPages([source0, source1]).join('\n\\page\n').trimReturns(); //Requires one full render of document before hoisting is picked up
+ const rendered = renderAllPages([source0, source1]).join('\n\\page\n').trimReturns();
+ expect(rendered, `Input:\n${[source0, source1].join('\n\\page\n')}`, { showPrefix: false }).toBe('a
\\pagea
');
+ });
+});
+
+describe('Math function parameter handling', ()=>{
+ it('allows variables in single-parameter functions', function() {
+ const source = '[var]:4.1\n\n$[floor(var)]';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`4
`);
+ });
+ it('allows one variable and a number in two-parameter functions', function() {
+ const source = '[var]:4\n\n$[min(1,var)]';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`1
`);
+ });
+ it('allows two variables in two-parameter functions', function() {
+ const source = '[var1]:4\n\n[var2]:8\n\n$[min(var1,var2)]';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe(`4
`);
+ });
+});
+
+describe('Variable names that are subsets of other names', ()=>{
+ it('do not conflict with function names', function() {
+ const source = `[a]: -1\n\n$[abs(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('1
');
+ });
+
+ it('do not conflict with other variable names', function() {
+ const source = `[ab]: 2\n\n[aba]: 8\n\n[ba]: 4\n\n$[ab + aba + ba]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('14
');
+ });
+});
+
+describe('Regression Tests', ()=>{
+ it('Don\'t Eat all the parentheticals!', function() {
+ const source='\n| title 1 | title 2 | title 3 | title 4|\n|-----------|---------|---------|--------|\n|[foo](bar) | Ipsum | ) | ) |\n';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('title 1 title 2 title 3 title 4 foo Ipsum ) )
');
+ });
+
+ it('Handle Extra spaces in image alt-text 1', function(){
+ const source='';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('
');
+ });
+
+ it('Handle Extra spaces in image alt-text 2', function(){
+ const source='';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('
');
+ });
+
+ it('Handle Extra spaces in image alt-text 3', function(){
+ const source='';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('
');
+ });
+
+ it('Handle Extra spaces in image alt-text 4', function(){
+ const source='{height=20%,width=20%}';
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('
');
+ });
+});
+
+describe('Custom Math Function Tests', ()=>{
+ it('Sign Test', function() {
+ const source = `[a]: 13\n\n[b]: -11\n\nPositive: $[sign(a)]\n\nNegative: $[sign(b)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Positive: +
Negative: -
');
+ });
+
+ it('Signed Test', function() {
+ const source = `[a]: 13\n\n[b]: -11\n\nPositive: $[signed(a)]\n\nNegative: $[signed(b)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Positive: +13
Negative: -11
');
+ });
+
+ it('Roman Numerals Test', function() {
+ const source = `[a]: 18\n\nRoman Numeral: $[toRomans(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Roman Numeral: XVIII
');
+ });
+
+ it('Roman Numerals Test - Uppercase', function() {
+ const source = `[a]: 18\n\nRoman Numeral: $[toRomansUpper(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Roman Numeral: XVIII
');
+ });
+
+ it('Roman Numerals Test - Lowercase', function() {
+ const source = `[a]: 18\n\nRoman Numeral: $[toRomansLower(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Roman Numeral: xviii
');
+ });
+
+ it('Number to Characters Test', function() {
+ const source = `[a]: 18\n\n[b]: 39\n\nCharacters: $[toChar(a)] $[toChar(b)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Characters: R AM
');
+ });
+
+ it('Number to Characters Test - Uppercase', function() {
+ const source = `[a]: 18\n\n[b]: 39\n\nCharacters: $[toCharUpper(a)] $[toCharUpper(b)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Characters: R AM
');
+ });
+
+ it('Number to Characters Test - Lowercase', function() {
+ const source = `[a]: 18\n\n[b]: 39\n\nCharacters: $[toCharLower(a)] $[toCharLower(b)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Characters: r am
');
+ });
+
+ it('Number to Words Test', function() {
+ const source = `[a]: 80085\n\nWords: $[toWords(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Words: eighty thousand and eighty-five
');
+ });
+
+ it('Number to Words Test - Uppercase', function() {
+ const source = `[a]: 80085\n\nWords: $[toWordsUpper(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Words: EIGHTY THOUSAND AND EIGHTY-FIVE
');
+ });
+
+ it('Number to Words Test - Lowercase', function() {
+ const source = `[a]: 80085\n\nWords: $[toWordsLower(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Words: eighty thousand and eighty-five
');
+ });
+
+ it('Number to Words Test - Capitalized', function() {
+ const source = `[a]: 80085\n\nWords: $[toWordsCaps(a)]`;
+ const rendered = Markdown.render(source).trimReturns();
+ expect(rendered).toBe('Words: Eighty Thousand And Eighty-Five
');
+ });
});
\ No newline at end of file
diff --git a/tests/routes/static-pages.test.js b/tests/routes/static-pages.test.js
index c5578dec9..ebfa48dd4 100644
--- a/tests/routes/static-pages.test.js
+++ b/tests/routes/static-pages.test.js
@@ -1,8 +1,8 @@
-const supertest = require('supertest');
+import supertest from 'supertest';
+import HBApp from 'app.js';
// Mimic https responses to avoid being redirected all the time
-const app = supertest.agent(require('app.js').app)
- .set('X-Forwarded-Proto', 'https');
+const app = supertest.agent(HBApp).set('X-Forwarded-Proto', 'https');
describe('Tests for static pages', ()=>{
it('Home page works', ()=>{
diff --git a/themes/Legacy/5ePHB/style.less b/themes/Legacy/5ePHB/style.less
index 09eb2eec7..41524c74c 100644
--- a/themes/Legacy/5ePHB/style.less
+++ b/themes/Legacy/5ePHB/style.less
@@ -9,26 +9,22 @@
@headerText : #58180D; // Dark maroon
@monsterStatBackground : #FDF1DC; // Lighter parchment
@captionText : #766649; // Brown
-@page { margin: 0; }
-body {
- counter-reset : phb-page-numbers;
-}
-*{
- -webkit-print-color-adjust : exact;
-}
-.useSansSerif(){
- font-family : ScalySans;
- em{
- font-family : ScalySans;
+@page { margin : 0; }
+body { counter-reset : phb-page-numbers; }
+* { -webkit-print-color-adjust : exact; }
+.useSansSerif() {
+ font-family : 'ScalySans';
+ em {
+ font-family : 'ScalySans';
font-style : italic;
}
- strong{
- font-family : ScalySans;
+ strong {
+ font-family : 'ScalySans';
font-weight : 800;
letter-spacing : -0.02em;
}
}
-.useColumns(@multiplier : 1){
+.useColumns(@multiplier : 1) {
column-count : 2;
column-fill : auto;
column-gap : 1cm;
@@ -40,220 +36,198 @@ body {
-webkit-column-gap : 1cm;
-moz-column-gap : 1cm;
}
-.phb, .page{
+.phb, .page {
.useColumns();
- counter-increment : phb-page-numbers;
- position : relative;
- z-index : 15;
- box-sizing : border-box;
- overflow : hidden;
- height : 279.4mm;
- width : 215.9mm;
- padding : 1.0cm 1.7cm;
- padding-bottom : 1.5cm;
- background-color : @background;
- background-image : @backgroundImage;
- font-family : BookSanity;
- font-size : 0.317cm;
- text-rendering : optimizeLegibility;
- page-break-before : always;
- page-break-after : always;
- contain : size;
+ position : relative;
+ z-index : 15;
+ box-sizing : border-box;
+ width : 215.9mm;
+ height : 279.4mm;
+ padding : 1.0cm 1.7cm;
+ padding-bottom : 1.5cm;
+ overflow : hidden;
+ font-family : 'BookSanity';
+ font-size : 0.317cm;
+ counter-increment : phb-page-numbers;
+ background-color : @background;
+ background-image : @backgroundImage;
+ text-rendering : optimizeLegibility;
+ page-break-before : always;
+ page-break-after : always;
+ contain : strict;
+ content-visibility : auto;
+ contain-intrinsic-size : auto none;
}
-.phb{
+.phb {
//*****************************
// * BASE
// *****************************/
- p{
+ p {
padding-bottom : 0.8em;
line-height : 1.269em;
- &+p{
- margin-top : -0.8em;
- }
+ & + p { margin-top : -0.8em; }
}
- ul{
- margin-bottom : 0.8em;
+ ul {
padding-left : 1.4em;
+ margin-bottom : 0.8em;
line-height : 1.269em;
list-style-position : outside;
list-style-type : disc;
}
- ol{
- margin-bottom : 0.8em;
+ ol {
padding-left : 1.4em;
+ margin-bottom : 0.8em;
line-height : 1.269em;
list-style-position : outside;
list-style-type : decimal;
}
//Indents after p or lists
- p+p, ul+p, ol+p{
- text-indent : 1em;
- }
- img{
- z-index : -1;
- }
- strong{
+ p + p, ul + p, ol + p { text-indent : 1em; }
+ img { z-index : -1; }
+ strong {
font-weight : bold;
letter-spacing : 0.03em;
}
- em{
- font-style : italic;
- }
- sup{
+ em { font-style : italic; }
+ sup {
+ font-size : smaller;
+ line-height : 0;
vertical-align : super;
- font-size : smaller;
- line-height : 0;
}
- sub{
- vertical-align : sub;
+ sub {
font-size : smaller;
line-height : 0;
+ vertical-align : sub;
}
//*****************************
// * HEADERS
// *****************************/
- h1,h2,h3,h4{
+ h1,h2,h3,h4 {
margin-top : 0.2em;
margin-bottom : 0.2em;
- font-family : MrJeeves;
+ font-family : 'MrJeeves';
font-weight : 800;
color : @headerText;
}
- h1{
+ h1 {
column-span : all;
font-size : 0.987cm;
-webkit-column-span : all;
-moz-column-span : all;
- &+p::first-letter{
+ & + p::first-letter {
float : left;
- font-family : Solberry;
+ font-family : 'Solberry';
font-size : 10em;
- color : #222;
line-height : 0.795em;
+ color : #222222;
}
}
- h2{
- font-size : 0.705cm;
- }
- h3{
+ h2 { font-size : 0.705cm; }
+ h3 {
font-size : 0.529cm;
border-bottom : 2px solid @headerUnderline;
}
- h4{
+ h4 {
margin-bottom : 0.00em;
font-size : 0.458cm;
}
- h5{
+ h5 {
margin-bottom : 0.2em;
- font-family : ScalySansSmallCaps;
+ font-family : 'ScalySansSmallCaps';
font-size : 0.423cm;
font-weight : 900;
}
//*****************************
// * TABLE
// *****************************/
- table{
+ table {
.useSansSerif();
width : 100%;
margin-bottom : 1em;
font-size : 10pt;
- thead{
- display: table-row-group;
+ thead {
+ display : table-row-group;
font-weight : 800;
- th{
- vertical-align : bottom;
- padding-bottom : 0.3em;
+ th {
padding-right : 0.1em;
+ padding-bottom : 0.3em;
padding-left : 0.1em;
+ vertical-align : bottom;
}
}
- tbody{
- tr{
- td{
- padding : 0.3em 0.1em;
- }
- &:nth-child(odd){
- background-color : @noteGreen;
- }
+ tbody {
+ tr {
+ td { padding : 0.3em 0.1em; }
+ &:nth-child(odd) { background-color : @noteGreen; }
}
}
}
//*****************************
// * NOTE
// *****************************/
- blockquote{
+ blockquote {
.useSansSerif();
box-sizing : border-box;
- margin-bottom : 1em;
padding : 5px 10px;
+ margin-bottom : 1em;
background-color : @noteGreen;
border-style : solid;
border-width : 11px;
border-image : @noteBorderImage 11;
border-image-outset : 9px 0px;
- box-shadow : 1px 4px 14px #888;
- p, ul{
+ box-shadow : 1px 4px 14px #888888;
+ p, ul {
font-size : 0.352cm;
line-height : 1.083em;
}
}
//If a note starts a column, give it space at the top to render border
- pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote {
- margin-top : 13px;
- }
+ pre + blockquote, h2 + blockquote, h3 + blockquote, h4 + blockquote, h5 + blockquote { margin-top : 13px; }
//*****************************
// * MONSTER STAT BLOCK
// *****************************/
- hr+blockquote{
+ hr+blockquote {
position : relative;
padding-top : 15px;
background-color : @monsterStatBackground;
border-style : solid;
border-width : 10px;
border-image : @monsterBorderImageLegacy 10;
- h2{
+ h2 {
margin-top : -8px;
margin-bottom : 0px;
- &+p{
- padding-bottom : 0px;
- }
+ & + p { padding-bottom : 0px; }
}
- h3{
- font-family : ScalySans;
- font-weight : 400;
+ h3 {
+ font-family : 'ScalySans';
+ font-weight : normal;
border-bottom : 1px solid @headerText;
}
- hr+ul{
- color : @headerText;
- }
- ul{
+ hr + ul { color : @headerText; }
+ ul {
.useSansSerif();
padding-left : 1em;
font-size : 0.352cm;
}
// Monster Ability table
- hr+table{
+ hr + table {
margin : 0;
background-color : transparent;
border-style : none;
border-image : none;
- tbody{
- tr:nth-child(odd), tr:nth-child(even){
- background-color : transparent;
- }
+ tbody {
+ tr:nth-child(odd), tr:nth-child(even) { background-color : transparent; }
}
}
- table{
- color : @headerText;
- }
- p+p{
- margin-top : 0em;
+ table { color : @headerText; }
+ p + p {
padding-bottom : 0.5em;
+ margin-top : 0em;
text-indent : 0em;
}
//Triangle dividers
- hr{
+ hr {
visibility : visible;
height : 6px;
margin : 4px 0px;
@@ -263,100 +237,90 @@ body {
}
}
//Full Width
- hr+hr+blockquote{
+ hr + hr + blockquote {
.useColumns(0.96);
column-fill : balance;
}
//*****************************
// * FOOTER
// *****************************/
- &:after{
- content : "";
+ &:after {
position : absolute;
bottom : 0px;
left : 0px;
z-index : 100;
- height : 50px;
width : 100%;
+ height : 50px;
+ content : '';
background-image : @footerAccentImage;
background-size : cover;
}
- &:nth-child(even){
- &:after{
- transform : scaleX(-1);
- }
- .pageNumber{
- left : 2px;
- }
- .footnote{
+ &:nth-child(even) {
+ &::after { transform : scaleX(-1); }
+ .pageNumber { left : 2px; }
+ .footnote {
left : 80px;
text-align : left;
}
}
- .pageNumber{
+ .pageNumber {
position : absolute;
right : 2px;
bottom : 22px;
width : 50px;
font-size : 0.9em;
- color : #c9ad6a;
+ color : #C9AD6A;
text-align : center;
- &.auto::after {
- content : counter(phb-page-numbers);
- }
+ &.auto::after { content : counter(phb-page-numbers); }
}
- .footnote{
+ .footnote {
position : absolute;
right : 80px;
bottom : 32px;
z-index : 150;
width : 200px;
font-size : 0.8em;
- color : #c9ad6a;
+ color : #C9AD6A;
text-align : right;
}
//*****************************
// * EXTRAS
// *****************************/
- hr{
+ hr {
visibility : hidden;
margin : 0px;
}
//Modified unorder list, used in spells
- hr+ul{
- margin-bottom : 0.5em;
+ hr + ul {
padding-left : 1em;
+ margin-bottom : 0.5em;
text-indent : -1em;
list-style-type : none;
}
//Column Break
- pre, code{
+ pre, code {
visibility : hidden;
-webkit-column-break-after : always;
break-after : always;
-moz-column-break-after : always;
}
//Avoid breaking up
- p,blockquote,table{
+ p,blockquote,table {
z-index : 15;
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
}
//Better spacing for spell blocks
- h4+p+hr+ul{
- margin-top : -0.5em
- }
+ h4 + p + hr + ul { margin-top : -0.5em; }
//Text indent right after table
- table+p{
- text-indent : 1em;
- }
+ table + p { text-indent : 1em; }
// Nested lists
- ul ul,ol ol,ul ol,ol ul{
+ ul ul,ol ol,ul ol,ol ul {
margin-bottom : 0px;
margin-left : 1.5em;
}
- li{
+ li {
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
@@ -365,89 +329,81 @@ body {
//*****************************
// * SPELL LIST
// *****************************/
-.phb .spellList{
+.phb .spellList {
.useSansSerif();
column-count : 4;
- column-span : all;
-webkit-column-span : all;
-moz-column-span : all;
- ul+h5{
- margin-top : 15px;
- }
- p, ul{
+ column-span : all;
+ ul + h5 { margin-top : 15px; }
+ p, ul {
font-size : 0.352cm;
line-height : 1.263em;
}
- ul{
- margin-bottom : 0.5em;
+ ul {
padding-left : 1em;
+ margin-bottom : 0.5em;
text-indent : -1em;
list-style-type : none;
+ break-inside : auto;
-webkit-column-break-inside : auto;
page-break-inside : auto;
- break-inside : auto;
}
}
//*****************************
// * WIDE
// *****************************/
-.phb .wide{
- column-span : all;
+.phb .wide {
-webkit-column-span : all;
-moz-column-span : all;
+ column-span : all;
}
//*****************************
// * CLASS TABLE
// *****************************/
-.phb .classTable{
+.phb .classTable {
margin-top : 25px;
margin-bottom : 40px;
border-collapse : separate;
background-color : white;
border : initial;
border-style : solid;
+ border-image-source : @frameBorderImage;
+ border-image-slice : 150 200 150 200;
+ border-image-width : 47px;
border-image-outset : 25px 17px;
border-image-repeat : stretch;
- border-image-slice : 150 200 150 200;
- border-image-source : @frameBorderImage;
- border-image-width : 47px;
- h5{
- margin-bottom : 10px;
- }
+ h5 { margin-bottom : 10px; }
}
//************************************
// * DESCRIPTIVE TEXT BOX
// ************************************/
-.phb .descriptive{
+.phb .descriptive {
margin-bottom : 1em;
- background-color : #faf7ea;
- font-family : ScalySans;
+ font-family : 'ScalySans';
+ background-color : #FAF7EA;
border-style : solid;
border-width : 7px;
border-image : @descriptiveBoxImage 12 stretch;
border-image-outset : 4px;
- box-shadow : 0px 0px 6px #faf7ea;
- p{
+ box-shadow : 0px 0px 6px #FAF7EA;
+ p {
display : block;
padding-bottom : 0px;
line-height : 1.47em;
}
- p + p {
- padding-top : .8em;
- }
+ p + p { padding-top : 0.8em; }
em {
- font-family : ScalySans;
+ font-family : 'ScalySans';
font-style : italic;
}
strong {
- font-family : ScalySans;
+ font-family : 'ScalySans';
font-weight : 800;
letter-spacing : -0.02em;
}
}
-.phb pre+.descriptive{
- margin-top : 8px;
-}
+.phb pre + .descriptive { margin-top : 8px; }
//*****************************
// * ARTIST CREDIT BLOCK
@@ -455,47 +411,41 @@ body {
.phb {
.artist {
position : absolute;
- text-align : center;
- font-family : WalterTurncoat;
+ font-family : 'WalterTurncoat';
font-size : 0.27cm;
color : @captionText;
+ text-align : center;
p, p + p {
margin : unset;
- text-indent : unset;
line-height : 0.941em;
+ text-indent : unset;
}
- h5 {
+ h5 {
+ font-family : 'WalterTurncoat';
font-size : 1.3em;
- font-family : WalterTurncoat;
}
- a{
+ a {
color : inherit;
text-decoration : unset;
- &:hover {
- text-decoration : underline;
- }
+ &:hover { text-decoration : underline; }
}
}
}
//*****************************
// * TABLE OF CONTENTS
// *****************************/
-.phb .toc{
+.phb .toc {
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
- a{
+ a {
color : black;
text-decoration : none;
- &:hover{
- text-decoration : underline;
- }
+ &:hover { text-decoration : underline; }
}
- ul{
+ ul {
padding-left : 0;
list-style-type : none;
}
- &>ul>li{
- margin-bottom : 10px;
- }
+ & > ul > li { margin-bottom : 10px; }
}
diff --git a/themes/V3/5eDMG/snippets.js b/themes/V3/5eDMG/snippets.js
index 636befb60..bad5e8e6a 100644
--- a/themes/V3/5eDMG/snippets.js
+++ b/themes/V3/5eDMG/snippets.js
@@ -1,4 +1,4 @@
-/* eslint-disable max-lines */
+
module.exports = [
];
diff --git a/themes/V3/5eDMG/style.less b/themes/V3/5eDMG/style.less
index 2ced98312..d79533c2c 100644
--- a/themes/V3/5eDMG/style.less
+++ b/themes/V3/5eDMG/style.less
@@ -7,37 +7,29 @@
}
.page {
- background-image : url(/assets/DMG_background.png);
+ background-image : url('/assets/DMG_background.png');
background-size : cover;
- /*TABLES WITHIN NOTES*/
- .note table tbody tr:nth-child(odd) {
- background:#fff;
- }
+ /* TABLES WITHIN NOTES */
+ .note table tbody tr:nth-child(odd) { background : #FFFFFF; }
- /*DROP CAP*/
+ /* DROP CAP */
h1 + p::first-letter {
- background-image: unset;
- color:black;
+ color : black;
+ background-image : unset;
}
- .quote p:first-child::first-line {
- all: unset;
+ .quote p:first-child::first-line { all : unset; }
+
+ &::after {
+ height : 58px;
+ background-image : url('/assets/DMG_footerAccent.png');
}
- &:after {
- background-image : url(/assets/DMG_footerAccent.png);
- height: 58px;
- }
-
- .footnote {
- bottom : 40px;
- }
+ .footnote { bottom : 40px; }
}
.page:has(.partCover) {
- .partCover {
- background-image: @partCoverHeaderDMG;
- }
+ .partCover { background-image : @partCoverHeaderDMG; }
}
diff --git a/themes/V3/5ePHB/settings.json b/themes/V3/5ePHB/settings.json
index 499096a05..53329ce4a 100644
--- a/themes/V3/5ePHB/settings.json
+++ b/themes/V3/5ePHB/settings.json
@@ -1,6 +1,6 @@
{
"name" : "5e PHB",
"renderer" : "V3",
- "baseTheme" : false,
+ "baseTheme" : "Blank",
"baseSnippets" : false
}
diff --git a/themes/V3/5ePHB/snippets.js b/themes/V3/5ePHB/snippets.js
index d5f37ac65..27ea62bea 100644
--- a/themes/V3/5ePHB/snippets.js
+++ b/themes/V3/5ePHB/snippets.js
@@ -6,67 +6,12 @@ const MonsterBlockGen = require('./snippets/monsterblock.gen.js');
const scriptGen = require('./snippets/script.gen.js');
const ClassFeatureGen = require('./snippets/classfeature.gen.js');
const CoverPageGen = require('./snippets/coverpage.gen.js');
-const TableOfContentsGen = require('./snippets/tableOfContents.gen.js');
-const indexGen = require('./snippets/index.gen.js');
const QuoteGen = require('./snippets/quote.gen.js');
const dedent = require('dedent-tabs').default;
module.exports = [
-
- {
- groupName : 'Text Editor',
- icon : 'fas fa-pencil-alt',
- view : 'text',
- snippets : [
- {
- name : 'Table of Contents',
- icon : 'fas fa-book',
- gen : TableOfContentsGen,
- experimental : true,
- subsnippets : [
- {
- name : 'Table of Contents',
- icon : 'fas fa-book',
- gen : TableOfContentsGen,
- experimental : true
- },
- {
- name : 'Include in ToC up to H3',
- icon : 'fas fa-dice-three',
- gen : dedent `\n{{tocDepthH3
- }}\n`,
-
- },
- {
- name : 'Include in ToC up to H4',
- icon : 'fas fa-dice-four',
- gen : dedent `\n{{tocDepthH4
- }}\n`,
- },
- {
- name : 'Include in ToC up to H5',
- icon : 'fas fa-dice-five',
- gen : dedent `\n{{tocDepthH5
- }}\n`,
- },
- {
- name : 'Include in ToC up to H6',
- icon : 'fas fa-dice-six',
- gen : dedent `\n{{tocDepthH6
- }}\n`,
- }
- ]
- },
- {
- name : 'Index',
- icon : 'fas fa-bars',
- gen : indexGen,
- experimental : true
- }
- ]
- },
{
groupName : 'Style Editor',
icon : 'fas fa-pencil-alt',
@@ -94,50 +39,10 @@ module.exports = [
background-image: linear-gradient(-45deg, #322814, #998250, #322814);
line-height: 1em;
}\n\n`
- }
- ]
- },
-
- /*********************** IMAGES *******************/
- {
- groupName : 'Images',
- icon : 'fas fa-images',
- view : 'text',
- snippets : [
- {
- name : 'Image',
- icon : 'fas fa-image',
- gen : dedent`
-  {width:325px,mix-blend-mode:multiply}
-
- {{artist,position:relative,top:-230px,left:10px,margin-bottom:-30px
- ##### Cat Warrior
- [Kyoung Hwan Kim](https://www.artstation.com/tahra)
- }}`
- },
- {
- name : 'Background Image',
- icon : 'fas fa-tree',
- gen : dedent`
-  {position:absolute,top:50px,right:30px,width:280px}
-
- {{artist,top:80px,right:30px
- ##### Homebrew Mug
- [naturalcrit](https://homebrew.naturalcrit.com)
- }}`
- },
- {
- name : 'Watermark',
- icon : 'fas fa-id-card',
- gen : dedent`
- {{watermark Homebrewery}}\n`
},
]
},
-
-
/************************* PHB ********************/
-
{
groupName : 'PHB',
icon : 'fas fa-book',
@@ -332,9 +237,6 @@ module.exports = [
]
},
-
-
-
/**************** PAGE *************/
{
@@ -349,7 +251,7 @@ module.exports = [
/* Ink Friendly */
*:is(.page,.monster,.note,.descriptive) {
background : white !important;
- filter : drop-shadow(0px 0px 3px #888) !important;
+ box-shadow : 1px 4px 14px #888 !important;
}
.page img {
diff --git a/themes/V3/5ePHB/snippets/monsterblock.gen.js b/themes/V3/5ePHB/snippets/monsterblock.gen.js
index e61c206f0..dffb59d04 100644
--- a/themes/V3/5ePHB/snippets/monsterblock.gen.js
+++ b/themes/V3/5ePHB/snippets/monsterblock.gen.js
@@ -148,7 +148,7 @@ const genAction = function(){
'Turnbuckle Roll'
]);
- return `***${name}.*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) `;
+ return `***${name}.*** *Melee Weapon Attack:* +4 to hit, reach 5 ft., one target. *Hit:* 5 (1d6 + 2) `;
};
@@ -161,8 +161,8 @@ module.exports = {
*${getType()}, ${getAlignment()}*
___
**Armor Class** :: ${_.random(10, 20)} (chain mail, shield)
- **Hit Points** :: ${_.random(1, 150)}(1d4 + 5)
- **Speed** :: ${_.random(0, 50)}ft.
+ **Hit Points** :: ${_.random(1, 150)} (1d4 + 5)
+ **Speed** :: ${_.random(0, 50)} ft.
___
| STR | DEX | CON | INT | WIS | CHA |
|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
diff --git a/themes/V3/5ePHB/snippets/tableOfContents.gen.js b/themes/V3/5ePHB/snippets/tableOfContents.gen.js
deleted file mode 100644
index b212dea36..000000000
--- a/themes/V3/5ePHB/snippets/tableOfContents.gen.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const _ = require('lodash');
-const dedent = require('dedent-tabs').default;
-
-const getTOC = (pages)=>{
-
- const recursiveAdd = (title, page, targetDepth, child, curDepth=0)=>{
- if(curDepth > 5) return; // Something went wrong.
- if(curDepth == targetDepth) {
- child.push({
- title : title,
- page : page,
- children : []
- });
- } else {
- if(child.length == 0) {
- child.push({
- title : null,
- page : page,
- children : []
- });
- }
- recursiveAdd(title, page, targetDepth, _.last(child).children, curDepth+1,);
- }
- };
-
- const res = [];
-
- const iframe = document.getElementById('BrewRenderer');
- const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
- const headings = iframeDocument.querySelectorAll('h1, h2, h3, h4, h5, h6');
- const headerDepth = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
-
- _.each(headings, (heading)=>{
- const onPage = parseInt(heading.closest('.page').id?.replace(/^p/, ''));
- const ToCExclude = getComputedStyle(heading).getPropertyValue('--TOC');
-
- if(ToCExclude != 'exclude') {
- recursiveAdd(heading.innerText.trim(), onPage, headerDepth.indexOf(heading.tagName), res);
- }
- });
- return res;
-};
-
-
-const ToCIterate = (entries, curDepth=0)=>{
- const levelPad = ['- ###', ' - ####', ' - ', ' - ', ' - ', ' - '];
- const toc = [];
- if(entries.title !== null){
- toc.push(`${levelPad[curDepth]} [{{ ${entries.title}}}{{ ${entries.page}}}](#p${entries.page})`);
- }
- if(entries.children.length) {
- _.each(entries.children, (entry, idx)=>{
- const children = ToCIterate(entry, entry.title == null ? curDepth : curDepth+1);
- if(children.length) {
- toc.push(...children);
- }
- });
- }
- return toc;
-};
-
-module.exports = function(props){
- const pages = props.brew.text.split('\\page');
- const TOC = getTOC(pages);
- const markdown = _.reduce(TOC, (r, g1, idx1)=>{
- r.push(ToCIterate(g1).join('\n'));
- return r;
- }, []).join('\n');
-
- return dedent`
- {{toc,wide
- # Contents
-
- ${markdown}
- }}
- \n`;
-};
diff --git a/themes/V3/5ePHB/style.less b/themes/V3/5ePHB/style.less
index f8a14f46e..555866ba4 100644
--- a/themes/V3/5ePHB/style.less
+++ b/themes/V3/5ePHB/style.less
@@ -11,12 +11,12 @@
--HB_Color_CaptionText : #766649; // Brown
--HB_Color_WatercolorStain : #BBAD82; // Light brown
--HB_Color_Footnotes : #C9AD6A; // Gold
+ --TOC : 'include';
}
.useSansSerif() {
font-family : 'ScalySansRemake';
font-size : 0.318cm;
- line-height : 1.2em;
p,dl,ul,ol { line-height : 1.2em; }
ul, ol { padding-left : 1em; }
em { font-style : italic; }
@@ -305,12 +305,12 @@
margin-left : -0.16cm;
background-color : var(--HB_Color_MonsterStatBackground);
background-image : @monsterBlockBackground;
- background-blend-mode : overlay;
border-style : solid;
border-width : 7px 6px;
border-image : @monsterBorderImage 14 round;
border-image-outset : 0px 2px;
box-shadow : 1px 4px 14px #888888;
+ background-blend-mode : overlay;
}
position : relative;
@@ -335,9 +335,9 @@
//Triangle dividers
hr {
+ visibility : visible;
height : 6px;
margin : 0.12cm 0cm;
- visibility : visible;
background-image : @redTriangleImage;
background-size : 100% 100%;
border : none;
@@ -355,8 +355,8 @@
}
.bonus {
- float: right;
- padding-right: 0.5em;
+ float : right;
+ padding-right : 0.5em;
}
// Monster Ability table
@@ -382,6 +382,14 @@
.useColumns(0.96, @fillMode: balance);
}
+ //only for IOS devices
+ @supports (-webkit-touch-callout: none) {
+ .page .monster.frame {
+ background-repeat : no-repeat;
+ background-size : cover;
+ }
+ }
+
// *****************************
// * FOOTER
// *****************************/
@@ -448,8 +456,8 @@
// * EXTRAS
// *****************************/
hr {
- margin : 0px;
visibility : hidden;
+ margin : 0px;
}
//Text indent right after table
table + p { text-indent : 1em; }
@@ -459,6 +467,7 @@
margin-left : 1.5em;
}
}
+
// *****************************
// * SPELL LIST
// *****************************/
@@ -516,10 +525,10 @@
content : '';
background-image : @classTableDecoration,
@classTableDecoration;
- filter : drop-shadow(0px 0px 1px #C8C5C080);
background-repeat : no-repeat, no-repeat;
background-position : top, bottom;
background-size : contain, contain;
+ filter : drop-shadow(0px 0px 1px #C8C5C080);
transform : translateY(-50%) translateX(-50%);
}
&.decoration.wide::before {
@@ -536,39 +545,40 @@
columns : 1;
text-align : center;
&::after { display : none; }
+ .frontCover { position : absolute; }
h1 {
- margin-top : 1.2cm;
- margin-bottom : 0;
- font-family : 'NodestoCapsCondensed';
- font-size : 2.245cm;
- font-weight : normal;
- line-height : 1.9cm;
- color : white;
- text-shadow : unset;
- text-transform : uppercase;
- -webkit-text-stroke: 0.2cm black;
- paint-order:stroke;
+ margin-top : 1.55cm;
+ margin-bottom : 0;
+ font-family : 'NodestoCapsCondensed';
+ font-size : 2.245cm;
+ font-weight : normal;
+ line-height : 1.9cm;
+ color : white;
+ text-transform : uppercase;
+ text-shadow : unset;
+ -webkit-text-stroke : 0.2cm black;
+ paint-order : stroke;
}
h2 {
- font-family : 'NodestoCapsCondensed';
- font-size : 0.85cm;
- font-weight : normal;
- color : white;
- letter-spacing : 0.1cm;
- -webkit-text-stroke: 0.14cm black;
- paint-order:stroke;
+ font-family : 'NodestoCapsCondensed';
+ font-size : 0.85cm;
+ font-weight : normal;
+ color : white;
+ letter-spacing : 0.1cm;
+ -webkit-text-stroke : 0.14cm black;
+ paint-order : stroke;
}
hr {
position : relative;
display : block;
+ visibility : visible;
width : 12cm;
height : 0.5cm;
margin : auto;
- visibility : visible;
background-image : @horizontalRule;
- filter : drop-shadow(0 0 3px black);
background-size : 100% 100%;
border : none;
+ filter : drop-shadow(0 0 3px black);
}
.banner {
position : absolute;
@@ -591,19 +601,19 @@
filter : drop-shadow(2px 2px 2px black);
}
.footnote {
- position : absolute;
- right : 0;
- bottom : 1.3cm;
- left : 0;
- width : 70%;
- margin-right : auto;
- margin-left : auto;
- font-family : 'Overpass';
- font-size : 0.496cm;
- color : white;
- text-align : center;
- -webkit-text-stroke: 0.1cm black;
- paint-order:stroke;
+ position : absolute;
+ right : 0;
+ bottom : 1.3cm;
+ left : 0;
+ width : 70%;
+ margin-right : auto;
+ margin-left : auto;
+ font-family : 'Overpass';
+ font-size : 0.496cm;
+ color : white;
+ text-align : center;
+ -webkit-text-stroke : 0.1cm black;
+ paint-order : stroke;
}
.logo {
position : absolute;
@@ -611,10 +621,7 @@
right : 0;
left : 0;
filter : drop-shadow(0 0 0.075cm black);
- img {
- width : 100%;
- height : 2cm;
- }
+ img { height : 2cm; }
}
}
// *****************************
@@ -624,8 +631,9 @@
columns : 1;
text-align : center;
&::after { display : none; }
+ .insideCover { position : absolute; }
h1 {
- margin-top : 1.2cm;
+ margin-top : 1.55cm;
margin-bottom : 0;
font-family : 'NodestoCapsCondensed';
font-size : 2.1cm;
@@ -642,10 +650,10 @@
hr {
position : relative;
display : block;
+ visibility : visible;
width : 12cm;
height : 0.5cm;
margin : auto;
- visibility : visible;
background-image : @horizontalRule;
background-size : 100% 100%;
border : none;
@@ -656,26 +664,23 @@
bottom : 1cm;
left : 0;
height : 2cm;
- img {
- width : 100%;
- height : 2cm;
- }
+ img { height : 2cm; }
}
}
// *****************************
// * BACK COVER
// *****************************/
.page:has(.backCover) {
- padding : 2.25cm 1.3cm 2cm 1.3cm;
- color : #FFFFFF;
- columns : 1;
+ padding : 2.25cm 1.3cm 2cm 1.3cm;
+ line-height : 1.4em;
+ color : #FFFFFF;
+ columns : 1;
&::after { display : none; }
.columnWrapper { width : 7.6cm; }
.backCover {
position : absolute;
inset : 0;
z-index : -1;
- width : 11cm;
background-image : @backCover;
background-repeat : no-repeat;
background-size : contain;
@@ -698,12 +703,12 @@
height : 100%;
}
hr {
+ visibility : visible;
width : 4.5cm;
height : 0.53cm;
margin-top : 1.1cm;
margin-right : auto;
margin-left : auto;
- visibility : visible;
background-image : @horizontalRule;
background-size : 100% 100%;
border : none;
@@ -727,7 +732,6 @@
img {
position : relative;
z-index : 0;
- width : 100%;
height : 1.5cm;
}
p {
@@ -787,37 +791,13 @@
// * TABLE OF CONTENTS
// *****************************/
-// Default Exclusions
-// Anything not exlcuded is included, default Headers are H1, H2, and H3.
-h4,
-h5,
-h6,
-.page:has(.frontCover),
-.page:has(.backCover),
-.page:has(.insideCover),
-.monster,
-.noToC,
-.toc { --TOC: exclude; }
-
-.tocDepthH2 :is(h1, h2) {--TOC: include; }
-.tocDepthH3 :is(h1, h2, h3) {--TOC: include; }
-.tocDepthH4 :is(h1, h2, h3, h4) {--TOC: include; }
-.tocDepthH5 :is(h1, h2, h3, h4, h5) {--TOC: include; }
-.tocDepthH6 :is(h1, h2, h3, h4, h5, h6) {--TOC: include; }
-
-.tocIncludeH1 h1 {--TOC: include; }
-.tocIncludeH2 h2 {--TOC: include; }
-.tocIncludeH3 h3 {--TOC: include; }
-.tocIncludeH4 h4 {--TOC: include; }
-.tocIncludeH5 h5 {--TOC: include; }
-.tocIncludeH6 h6 {--TOC: include; }
+// Additional Default Exclusions
+.monster { --TOC : exclude; }
.page:has(.partCover) {
- --TOC: exclude;
- & h1 {
- --TOC: include;
- }
- }
+ --TOC : exclude;
+ & h1 { --TOC : include; }
+}
.page {
&:has(.toc)::after { display : none; }
@@ -883,6 +863,7 @@ h6,
.useColumns(0.96, @fillMode: balance);
}
}
+ .toc.wide li { break-inside : auto; }
}
// *****************************
@@ -907,6 +888,8 @@ h6,
.page h1 + * { margin-top : 0; }
+.page .descriptive.wide + * { margin-top : 0; }
+
//*****************************
// * RUNE TABLE
// *****************************/
@@ -920,8 +903,8 @@ h6,
width : 1.3cm;
height : 1.3cm;
font-weight : normal;
- text-transform : uppercase;
vertical-align : middle;
+ text-transform : uppercase;
outline : 1px solid #000000;
}
th {
@@ -942,6 +925,7 @@ h6,
}
}
}
+
// *****************************
// * INDEX
// *****************************/
diff --git a/themes/V3/Blank/snippets.js b/themes/V3/Blank/snippets.js
index 8d45560c5..c5198fd87 100644
--- a/themes/V3/Blank/snippets.js
+++ b/themes/V3/Blank/snippets.js
@@ -4,6 +4,8 @@ const WatercolorGen = require('./snippets/watercolor.gen.js');
const ImageMaskGen = require('./snippets/imageMask.gen.js');
const FooterGen = require('./snippets/footer.gen.js');
const dedent = require('dedent-tabs').default;
+const TableOfContentsGen = require('./snippets/tableOfContents.gen.js');
+const indexGen = require('./snippets/index.gen.js');
module.exports = [
@@ -23,14 +25,35 @@ module.exports = [
gen : '\n\\page\n'
},
{
- name : 'Page Number',
- icon : 'fas fa-bookmark',
- gen : '{{pageNumber 1}}\n'
- },
- {
- name : 'Auto-incrementing Page Number',
- icon : 'fas fa-sort-numeric-down',
- gen : '{{pageNumber,auto}}\n'
+ name : 'Page Numbering',
+ icon : 'fas fa-bookmark',
+ subsnippets : [
+ {
+ name : 'Page Number',
+ icon : 'fas fa-bookmark',
+ gen : '{{pageNumber 1}}\n'
+ },
+ {
+ name : 'Auto-incrementing Page Number',
+ icon : 'fas fa-sort-numeric-down',
+ gen : '{{pageNumber,auto}}\n'
+ },
+ {
+ name : 'Variable Auto Page Number',
+ icon : 'fas fa-sort-numeric-down',
+ gen : '{{pageNumber $[HB_pageNumber]}}\n'
+ },
+ {
+ name : 'Skip Page Number Increment this Page',
+ icon : 'fas fa-xmark',
+ gen : '{{skipCounting}}\n'
+ },
+ {
+ name : 'Restart Numbering',
+ icon : 'fas fa-arrow-rotate-left',
+ gen : '{{resetCounting}}\n'
+ },
+ ]
},
{
name : 'Footer',
@@ -125,7 +148,53 @@ module.exports = [
[Homebrewery.Naturalcrit.com](https://homebrewery.naturalcrit.com)
}}\n\n`;
},
- }
+ },
+ {
+ name : 'Table of Contents',
+ icon : 'fas fa-book',
+ gen : TableOfContentsGen,
+ experimental : true,
+ subsnippets : [
+ {
+ name : 'Table of Contents',
+ icon : 'fas fa-book',
+ gen : TableOfContentsGen,
+ experimental : true
+ },
+ {
+ name : 'Include in ToC up to H3',
+ icon : 'fas fa-dice-three',
+ gen : dedent `\n{{tocDepthH3
+ }}\n`,
+
+ },
+ {
+ name : 'Include in ToC up to H4',
+ icon : 'fas fa-dice-four',
+ gen : dedent `\n{{tocDepthH4
+ }}\n`,
+ },
+ {
+ name : 'Include in ToC up to H5',
+ icon : 'fas fa-dice-five',
+ gen : dedent `\n{{tocDepthH5
+ }}\n`,
+ },
+ {
+ name : 'Include in ToC up to H6',
+ icon : 'fas fa-dice-six',
+ gen : dedent `\n{{tocDepthH6
+ }}\n`,
+ }
+ ]
+ },
+ {
+ name : 'Index',
+ icon : 'fas fa-bars',
+ gen : indexGen,
+ experimental : true
+ },
+
]
},
{
@@ -137,7 +206,7 @@ module.exports = [
name : 'Add Comment',
icon : 'fas fa-code',
gen : '/* This is a comment that will not be rendered into your brew. */'
- },
+ }
]
},
@@ -153,6 +222,18 @@ module.exports = [
gen : dedent`
 {width:325px,mix-blend-mode:multiply}`
},
+ {
+ name : 'Image Wrap Left',
+ icon : 'fac image-wrap-left',
+ gen : dedent`
+  {width:280px,margin-right:-3cm,wrapLeft}`
+ },
+ {
+ name : 'Image Wrap Right',
+ icon : 'fac image-wrap-right',
+ gen : dedent`
+  {width:280px,margin-left:-3cm,wrapRight}`
+ },
{
name : 'Background Image',
icon : 'fas fa-tree',
@@ -340,6 +421,11 @@ module.exports = [
icon : 'font MrEavesRemake',
gen : dedent`{{font-family:MrEavesRemake Dummy Text}}`
},
+ {
+ name : 'Pagella',
+ icon : 'font Pagella',
+ gen : dedent`{{font-family:Pagella Dummy Text}}`
+ },
{
name : 'Solbera Imitation',
icon : 'font SolberaImitationRemake',
@@ -398,22 +484,49 @@ module.exports = [
]
},
- /**************** PAGE *************/
+ /**************** LAYOUT *************/
{
groupName : 'Print',
icon : 'fas fa-print',
view : 'style',
snippets : [
+ {
+ name : 'US Letter Page Size',
+ icon : 'far fa-file',
+ gen : dedent`/* US Letter Page Size */
+ .page {
+ width : 215.9mm; /* 8.5in */
+ height : 279.4mm; /* 11in */
+ }\n\n`,
+ },
+ {
+ name : 'A3 Page Size',
+ icon : 'far fa-file',
+ gen : dedent`/* A3 Page Size */
+ .page {
+ width : 297mm;
+ height : 420mm;
+ }\n\n`,
+ },
{
name : 'A4 Page Size',
icon : 'far fa-file',
gen : dedent`/* A4 Page Size */
- .page{
+ .page {
width : 210mm;
height : 296.8mm;
}\n\n`
},
+ {
+ name : 'A5 Page Size',
+ icon : 'far fa-file',
+ gen : dedent`/* A5 Page Size */
+ .page {
+ width : 148mm;
+ height : 210mm;
+ }\n\n`,
+ },
{
name : 'Square Page Size',
icon : 'far fa-file',
@@ -425,6 +538,17 @@ module.exports = [
columns : unset;
}\n\n`
},
+ {
+ name : 'Card Page Size',
+ icon : 'far fa-file',
+ gen : dedent`/* Card Size */
+ .page {
+ width : 63.5mm;
+ height : 88.9mm;
+ padding : 5mm;
+ columns : unset;
+ }\n\n`
+ },
{
name : 'Ink Friendly',
icon : 'fas fa-tint',
@@ -440,5 +564,5 @@ module.exports = [
}\n\n`
},
]
- }
+ },
];
diff --git a/themes/V3/Blank/snippets/footer.gen.js b/themes/V3/Blank/snippets/footer.gen.js
index 6583cd06e..9384baed7 100644
--- a/themes/V3/Blank/snippets/footer.gen.js
+++ b/themes/V3/Blank/snippets/footer.gen.js
@@ -1,4 +1,4 @@
-const Markdown = require('../../../../shared/naturalcrit/markdown.js');
+import Markdown from '../../../../shared/naturalcrit/markdown.js';
module.exports = {
createFooterFunc : function(headerSize=1){
diff --git a/themes/V3/5ePHB/snippets/index.gen.js b/themes/V3/Blank/snippets/index.gen.js
similarity index 100%
rename from themes/V3/5ePHB/snippets/index.gen.js
rename to themes/V3/Blank/snippets/index.gen.js
diff --git a/themes/V3/Blank/snippets/tableOfContents.gen.js b/themes/V3/Blank/snippets/tableOfContents.gen.js
new file mode 100644
index 000000000..44c400762
--- /dev/null
+++ b/themes/V3/Blank/snippets/tableOfContents.gen.js
@@ -0,0 +1,78 @@
+const dedent = require('dedent-tabs').default;
+
+// Map each actual page to its footer label, accounting for skips or numbering resets
+const mapPages = (pages)=>{
+ let actualPage = 0;
+ let mappedPage = 0; // Number displayed in footer
+ const pageMap = [];
+
+ pages.forEach((page)=>{
+ actualPage++;
+ const doSkip = page.querySelector('.skipCounting');
+ const doReset = page.querySelector('.resetCounting');
+
+ if(doReset)
+ mappedPage = 1;
+ if(!doSkip && !doReset)
+ mappedPage++;
+
+ pageMap[actualPage] = {
+ mappedPage : mappedPage,
+ showPage : !doSkip
+ };
+ });
+ return pageMap;
+};
+
+const getMarkdown = (headings, pageMap)=>{
+ const levelPad = ['- ###', ' - ####', ' -', ' -', ' -', ' -'];
+
+ const allMarkdown = [];
+ const depthChain = [0];
+
+ headings.forEach((heading)=>{
+ const page = parseInt(heading.closest('.page').id?.replace(/^p/, ''));
+ const mappedPage = pageMap[page].mappedPage;
+ const showPage = pageMap[page].showPage;
+ const title = heading.textContent.trim();
+ const ToCExclude = getComputedStyle(heading).getPropertyValue('--TOC');
+ const depth = parseInt(heading.tagName.substring(1));
+
+ if(!title || !showPage || ToCExclude == 'exclude')
+ return;
+
+ //If different header depth than last, remove indents until nearest higher-level header, then indent once
+ if(depth !== depthChain[depthChain.length -1]) {
+ while (depth <= depthChain[depthChain.length - 1]) {
+ depthChain.pop();
+ }
+ depthChain.push(depth);
+ }
+
+ const markdown = `${levelPad[depthChain.length - 2]} [{{ ${title}}}{{ ${mappedPage}}}](#p${page})`;
+ allMarkdown.push(markdown);
+ });
+ return allMarkdown.join('\n');
+};
+
+const getTOC = ()=>{
+ const iframe = document.getElementById('BrewRenderer');
+ const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
+ const headings = iframeDocument.querySelectorAll('h1, h2, h3, h4, h5, h6');
+ const pages = iframeDocument.querySelectorAll('.page');
+
+ const pageMap = mapPages(pages);
+ return getMarkdown(headings, pageMap);
+};
+
+module.exports = function(props){
+ const TOC = getTOC();
+
+ return dedent`
+ {{toc,wide
+ # Contents
+
+ ${TOC}
+ }}
+ \n`;
+};
\ No newline at end of file
diff --git a/themes/V3/Blank/style.less b/themes/V3/Blank/style.less
index 0f779c38b..42a392454 100644
--- a/themes/V3/Blank/style.less
+++ b/themes/V3/Blank/style.less
@@ -1,9 +1,11 @@
+@import (less) './themes/fonts/Blank/fonts.less';
@import (less) './themes/fonts/5e/fonts.less';
@import (less) './themes/assets/assets.less';
@import (less) './themes/fonts/iconFonts/elderberryInn.less';
@import (less) './themes/fonts/iconFonts/diceFont.less';
@import (less) './themes/fonts/iconFonts/gameIcons.less';
@import (less) './themes/fonts/iconFonts/fontAwesome.less';
+@import (less) './themes/fonts/Journal/fonts.less';
:root {
//Colors
@@ -12,7 +14,7 @@
}
@page { margin : 0; }
-body { counter-reset : page-numbers; }
+body { counter-reset : page-numbers 0; }
* { -webkit-print-color-adjust : exact; }
//*****************************
@@ -20,9 +22,9 @@ body { counter-reset : page-numbers; }
// *****************************/
.page {
.block {
- break-inside : avoid;
display : inline-block;
width : 100%;
+ break-inside : avoid;
img { z-index : 0; }
}
.inline-block {
@@ -44,17 +46,18 @@ body { counter-reset : page-numbers; }
}
.page {
.useColumns();
- position : relative;
- z-index : 15;
- box-sizing : border-box;
- width : 215.9mm;
- height : 279.4mm;
- padding : 1.4cm 1.9cm 1.7cm;
- overflow : hidden;
- counter-increment : page-numbers;
- background-color : var(--HB_Color_Background);
- text-rendering : optimizeLegibility;
- contain : size;
+ position : relative;
+ z-index : 15;
+ box-sizing : border-box;
+ width : 215.9mm;
+ height : 279.4mm;
+ padding : 1.4cm 1.9cm 1.7cm;
+ overflow : clip;
+ background-color : var(--HB_Color_Background);
+ text-rendering : optimizeLegibility;
+ contain : strict;
+ content-visibility : auto;
+ contain-intrinsic-size : auto none;
}
//*****************************
// * BASE
@@ -118,7 +121,7 @@ body { counter-reset : page-numbers; }
// * CODE BLOCKS
// ************************************/
code {
- font-family : 'Courier New', "Courier", monospace;
+ font-family : 'Courier New', 'Courier', monospace;
overflow-wrap : break-word;
white-space : pre-wrap;
}
@@ -131,10 +134,10 @@ body { counter-reset : page-numbers; }
// * EXTRAS
// *****************************/
.columnSplit {
- margin-top : 0;
visibility : hidden;
- -webkit-column-break-after : always;
+ margin-top : 0;
break-after : always;
+ -webkit-column-break-after : always;
-moz-column-break-after : always;
& + * { margin-top : 0; }
}
@@ -156,6 +159,19 @@ body { counter-reset : page-numbers; }
break-inside : avoid;
}
+ /* Wrap Text */
+ .wrapLeft {
+ shape-outside : var(--HB_src);
+ float : right;
+ shape-margin : 0.2cm;
+ }
+
+ .wrapRight {
+ shape-outside : var(--HB_src);
+ float : left;
+ shape-margin : 0.2cm;
+ }
+
/* Watermark */
.watermark {
position : absolute;
@@ -184,11 +200,11 @@ body { counter-reset : page-numbers; }
background-color : var(--HB_Color_WatercolorStain); /* default color */
background-size : cover;
-webkit-mask-image : var(--wc);
- -webkit-mask-size : contain;
- -webkit-mask-repeat : no-repeat;
mask-image : var(--wc);
- mask-size : contain;
+ -webkit-mask-repeat : no-repeat;
mask-repeat : no-repeat;
+ -webkit-mask-size : contain;
+ mask-size : contain;
--wc : @watercolor1; /* default image */
}
@@ -216,15 +232,15 @@ body { counter-reset : page-numbers; }
height : 200%;
background-image : var(--checkerboard);
background-size : 20px;
- transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
-webkit-mask-image : var(--wc), var(--revealer);
- -webkit-mask-repeat : repeat-x;
- -webkit-mask-size : 50%; //Scale only X to fit page width, leave height at aspect ratio, designed to hang off the edge
- -webkit-mask-position : 50% calc(50% - var(--offset));
mask-image : var(--wc);
+ -webkit-mask-repeat : repeat-x;
mask-repeat : repeat-x;
- mask-size : 50%;
+ -webkit-mask-position : 50% calc(50% - var(--offset));
mask-position : 50% calc(50% - var(--offset));
+ -webkit-mask-size : 50%; //Scale only X to fit page width, leave height at aspect ratio, designed to hang off the edge
+ mask-size : 50%;
+ transform : translateY(50%) translateX(-50%) rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
--rotation : 0;
--revealer : none;
--checkerboard : none;
@@ -236,7 +252,7 @@ body { counter-reset : page-numbers; }
left : 50%;
width : 50%;
height : 50%;
- transform : translateX(-50%) translateY(50%) rotate(calc(-1deg * var(--rotation))) scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY)));
+ transform : translateX(-50%) translateY(50%) scaleX(calc(1 / var(--scaleX))) scaleY(calc(1 / var(--scaleY))) rotate(calc(-1deg * var(--rotation)));
}
& img {
position : absolute;
@@ -261,19 +277,19 @@ body { counter-reset : page-numbers; }
}
&.revealImage {
--revealer : linear-gradient(0deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.2));
- --checkerboard : url("/assets/waterColorMasks/missingImage.png"); //shows any masked regions not filled by image
+ --checkerboard : url('/assets/waterColorMasks/missingImage.png'); //shows any masked regions not filled by image
}
}
.imageMaskEdge {
- &1 { --wc : url("/assets/waterColorMasks/edge/0001.webp"); }
- &2 { --wc : url("/assets/waterColorMasks/edge/0002.webp"); }
- &3 { --wc : url("/assets/waterColorMasks/edge/0003.webp"); }
- &4 { --wc : url("/assets/waterColorMasks/edge/0004.webp"); }
- &5 { --wc : url("/assets/waterColorMasks/edge/0005.webp"); }
- &6 { --wc : url("/assets/waterColorMasks/edge/0006.webp"); }
- &7 { --wc : url("/assets/waterColorMasks/edge/0007.webp"); }
- &8 { --wc : url("/assets/waterColorMasks/edge/0008.webp"); }
+ &1 { --wc : url('/assets/waterColorMasks/edge/0001.webp'); }
+ &2 { --wc : url('/assets/waterColorMasks/edge/0002.webp'); }
+ &3 { --wc : url('/assets/waterColorMasks/edge/0003.webp'); }
+ &4 { --wc : url('/assets/waterColorMasks/edge/0004.webp'); }
+ &5 { --wc : url('/assets/waterColorMasks/edge/0005.webp'); }
+ &6 { --wc : url('/assets/waterColorMasks/edge/0006.webp'); }
+ &7 { --wc : url('/assets/waterColorMasks/edge/0007.webp'); }
+ &8 { --wc : url('/assets/waterColorMasks/edge/0008.webp'); }
}
[class*='imageMaskCenter'] {
@@ -281,15 +297,15 @@ body { counter-reset : page-numbers; }
left : calc(var(--offsetX));
width : 100%;
height : 100%;
- transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
-webkit-mask-image : var(--wc), var(--revealer);
- -webkit-mask-repeat : no-repeat;
- -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
- -webkit-mask-position : 0% 0%;
mask-image : var(--wc), var(--revealer);
+ -webkit-mask-repeat : no-repeat;
mask-repeat : no-repeat;
- mask-size : 100% 100%; //Scale both dimensions to fit page size
+ -webkit-mask-position : 0% 0%;
mask-position : 50% 50%;
+ -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
+ mask-size : 100% 100%; //Scale both dimensions to fit page size
+ transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
& > p:has(img) {
position : absolute;
@@ -306,23 +322,23 @@ body { counter-reset : page-numbers; }
}
.imageMaskCenter {
- &1 { --wc : url("/assets/waterColorMasks/center/0001.webp"); }
- &2 { --wc : url("/assets/waterColorMasks/center/0002.webp"); }
- &3 { --wc : url("/assets/waterColorMasks/center/0003.webp"); }
- &4 { --wc : url("/assets/waterColorMasks/center/0004.webp"); }
- &5 { --wc : url("/assets/waterColorMasks/center/0005.webp"); }
- &6 { --wc : url("/assets/waterColorMasks/center/0006.webp"); }
- &7 { --wc : url("/assets/waterColorMasks/center/0007.webp"); }
- &8 { --wc : url("/assets/waterColorMasks/center/0008.webp"); }
- &9 { --wc : url("/assets/waterColorMasks/center/0009.webp"); }
- &10 { --wc : url("/assets/waterColorMasks/center/0010.webp"); }
- &11 { --wc : url("/assets/waterColorMasks/center/0011.webp"); }
- &12 { --wc : url("/assets/waterColorMasks/center/0012.webp"); }
- &13 { --wc : url("/assets/waterColorMasks/center/0013.webp"); }
- &14 { --wc : url("/assets/waterColorMasks/center/0014.webp"); }
- &15 { --wc : url("/assets/waterColorMasks/center/0015.webp"); }
- &16 { --wc : url("/assets/waterColorMasks/center/0016.webp"); }
- &special { --wc : url("/assets/waterColorMasks/center/special.webp"); }
+ &1 { --wc : url('/assets/waterColorMasks/center/0001.webp'); }
+ &2 { --wc : url('/assets/waterColorMasks/center/0002.webp'); }
+ &3 { --wc : url('/assets/waterColorMasks/center/0003.webp'); }
+ &4 { --wc : url('/assets/waterColorMasks/center/0004.webp'); }
+ &5 { --wc : url('/assets/waterColorMasks/center/0005.webp'); }
+ &6 { --wc : url('/assets/waterColorMasks/center/0006.webp'); }
+ &7 { --wc : url('/assets/waterColorMasks/center/0007.webp'); }
+ &8 { --wc : url('/assets/waterColorMasks/center/0008.webp'); }
+ &9 { --wc : url('/assets/waterColorMasks/center/0009.webp'); }
+ &10 { --wc : url('/assets/waterColorMasks/center/0010.webp'); }
+ &11 { --wc : url('/assets/waterColorMasks/center/0011.webp'); }
+ &12 { --wc : url('/assets/waterColorMasks/center/0012.webp'); }
+ &13 { --wc : url('/assets/waterColorMasks/center/0013.webp'); }
+ &14 { --wc : url('/assets/waterColorMasks/center/0014.webp'); }
+ &15 { --wc : url('/assets/waterColorMasks/center/0015.webp'); }
+ &16 { --wc : url('/assets/waterColorMasks/center/0016.webp'); }
+ &special { --wc : url('/assets/waterColorMasks/center/special.webp'); }
}
@@ -331,15 +347,15 @@ body { counter-reset : page-numbers; }
left : calc(-50% + var(--offsetX));
width : 200%;
height : 200%;
- transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
-webkit-mask-image : var(--wc), var(--revealer);
- -webkit-mask-repeat : no-repeat;
- -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
- -webkit-mask-position : 50% 50%;
mask-image : var(--wc), var(--revealer);
+ -webkit-mask-repeat : no-repeat;
mask-repeat : no-repeat;
- mask-size : 100% 100%; //Scale both dimensions to fit page size
+ -webkit-mask-position : 50% 50%;
mask-position : 50% 50%;
+ -webkit-mask-size : 100% 100%; //Scale both dimensions to fit page size
+ mask-size : 100% 100%; //Scale both dimensions to fit page size
+ transform : rotate(calc(1deg * var(--rotation))) scaleX(var(--scaleX)) scaleY(var(--scaleY));
& > p:has(img) {
bottom : 25%;
left : 25%;
@@ -352,43 +368,43 @@ body { counter-reset : page-numbers; }
}
}
.imageMaskCorner {
- &1 { --wc : url("/assets/waterColorMasks/corner/0001.webp"); }
- &2 { --wc : url("/assets/waterColorMasks/corner/0002.webp"); }
- &3 { --wc : url("/assets/waterColorMasks/corner/0003.webp"); }
- &4 { --wc : url("/assets/waterColorMasks/corner/0004.webp"); }
- &5 { --wc : url("/assets/waterColorMasks/corner/0005.webp"); }
- &6 { --wc : url("/assets/waterColorMasks/corner/0006.webp"); }
- &7 { --wc : url("/assets/waterColorMasks/corner/0007.webp"); }
- &8 { --wc : url("/assets/waterColorMasks/corner/0008.webp"); }
- &9 { --wc : url("/assets/waterColorMasks/corner/0009.webp"); }
- &10 { --wc : url("/assets/waterColorMasks/corner/0010.webp"); }
- &11 { --wc : url("/assets/waterColorMasks/corner/0011.webp"); }
- &12 { --wc : url("/assets/waterColorMasks/corner/0012.webp"); }
- &13 { --wc : url("/assets/waterColorMasks/corner/0013.webp"); }
- &14 { --wc : url("/assets/waterColorMasks/corner/0014.webp"); }
- &15 { --wc : url("/assets/waterColorMasks/corner/0015.webp"); }
- &16 { --wc : url("/assets/waterColorMasks/corner/0016.webp"); }
- &17 { --wc : url("/assets/waterColorMasks/corner/0017.webp"); }
- &18 { --wc : url("/assets/waterColorMasks/corner/0018.webp"); }
- &19 { --wc : url("/assets/waterColorMasks/corner/0019.webp"); }
- &20 { --wc : url("/assets/waterColorMasks/corner/0020.webp"); }
- &21 { --wc : url("/assets/waterColorMasks/corner/0021.webp"); }
- &22 { --wc : url("/assets/waterColorMasks/corner/0022.webp"); }
- &23 { --wc : url("/assets/waterColorMasks/corner/0023.webp"); }
- &24 { --wc : url("/assets/waterColorMasks/corner/0024.webp"); }
- &25 { --wc : url("/assets/waterColorMasks/corner/0025.webp"); }
- &26 { --wc : url("/assets/waterColorMasks/corner/0026.webp"); }
- &27 { --wc : url("/assets/waterColorMasks/corner/0027.webp"); }
- &28 { --wc : url("/assets/waterColorMasks/corner/0028.webp"); }
- &29 { --wc : url("/assets/waterColorMasks/corner/0029.webp"); }
- &30 { --wc : url("/assets/waterColorMasks/corner/0030.webp"); }
- &31 { --wc : url("/assets/waterColorMasks/corner/0031.webp"); }
- &32 { --wc : url("/assets/waterColorMasks/corner/0032.webp"); }
- &33 { --wc : url("/assets/waterColorMasks/corner/0033.webp"); }
- &34 { --wc : url("/assets/waterColorMasks/corner/0034.webp"); }
- &35 { --wc : url("/assets/waterColorMasks/corner/0035.webp"); }
- &36 { --wc : url("/assets/waterColorMasks/corner/0036.webp"); }
- &37 { --wc : url("/assets/waterColorMasks/corner/0037.webp"); }
+ &1 { --wc : url('/assets/waterColorMasks/corner/0001.webp'); }
+ &2 { --wc : url('/assets/waterColorMasks/corner/0002.webp'); }
+ &3 { --wc : url('/assets/waterColorMasks/corner/0003.webp'); }
+ &4 { --wc : url('/assets/waterColorMasks/corner/0004.webp'); }
+ &5 { --wc : url('/assets/waterColorMasks/corner/0005.webp'); }
+ &6 { --wc : url('/assets/waterColorMasks/corner/0006.webp'); }
+ &7 { --wc : url('/assets/waterColorMasks/corner/0007.webp'); }
+ &8 { --wc : url('/assets/waterColorMasks/corner/0008.webp'); }
+ &9 { --wc : url('/assets/waterColorMasks/corner/0009.webp'); }
+ &10 { --wc : url('/assets/waterColorMasks/corner/0010.webp'); }
+ &11 { --wc : url('/assets/waterColorMasks/corner/0011.webp'); }
+ &12 { --wc : url('/assets/waterColorMasks/corner/0012.webp'); }
+ &13 { --wc : url('/assets/waterColorMasks/corner/0013.webp'); }
+ &14 { --wc : url('/assets/waterColorMasks/corner/0014.webp'); }
+ &15 { --wc : url('/assets/waterColorMasks/corner/0015.webp'); }
+ &16 { --wc : url('/assets/waterColorMasks/corner/0016.webp'); }
+ &17 { --wc : url('/assets/waterColorMasks/corner/0017.webp'); }
+ &18 { --wc : url('/assets/waterColorMasks/corner/0018.webp'); }
+ &19 { --wc : url('/assets/waterColorMasks/corner/0019.webp'); }
+ &20 { --wc : url('/assets/waterColorMasks/corner/0020.webp'); }
+ &21 { --wc : url('/assets/waterColorMasks/corner/0021.webp'); }
+ &22 { --wc : url('/assets/waterColorMasks/corner/0022.webp'); }
+ &23 { --wc : url('/assets/waterColorMasks/corner/0023.webp'); }
+ &24 { --wc : url('/assets/waterColorMasks/corner/0024.webp'); }
+ &25 { --wc : url('/assets/waterColorMasks/corner/0025.webp'); }
+ &26 { --wc : url('/assets/waterColorMasks/corner/0026.webp'); }
+ &27 { --wc : url('/assets/waterColorMasks/corner/0027.webp'); }
+ &28 { --wc : url('/assets/waterColorMasks/corner/0028.webp'); }
+ &29 { --wc : url('/assets/waterColorMasks/corner/0029.webp'); }
+ &30 { --wc : url('/assets/waterColorMasks/corner/0030.webp'); }
+ &31 { --wc : url('/assets/waterColorMasks/corner/0031.webp'); }
+ &32 { --wc : url('/assets/waterColorMasks/corner/0032.webp'); }
+ &33 { --wc : url('/assets/waterColorMasks/corner/0033.webp'); }
+ &34 { --wc : url('/assets/waterColorMasks/corner/0034.webp'); }
+ &35 { --wc : url('/assets/waterColorMasks/corner/0035.webp'); }
+ &36 { --wc : url('/assets/waterColorMasks/corner/0036.webp'); }
+ &37 { --wc : url('/assets/waterColorMasks/corner/0037.webp'); }
}
}
@@ -412,17 +428,6 @@ body { counter-reset : page-numbers; }
}
}
-//*****************************
-// * BLANK LINE
-// *****************************/
-.page {
- .blank {
- height : 1em;
- margin-top : 0;
- & + * { margin-top : 0; }
- }
-}
-
//*****************************
// * WIDE
// *****************************/
@@ -433,6 +438,11 @@ body { counter-reset : page-numbers; }
margin-bottom : 1em;
& + * { margin-top : 0; }
}
+ .blank {
+ height : 1em;
+ margin-top : 0;
+ & + * { margin-top : 0; }
+ }
}
//*****************************
@@ -457,8 +467,8 @@ body { counter-reset : page-numbers; }
height : 1.5cm;
margin : 0 auto;
background-color : black;
- -webkit-mask : url("/assets/naturalCritLogoWhite.svg") center / contain no-repeat;
- mask : url("/assets/naturalCritLogoWhite.svg") center / contain no-repeat;
+ -webkit-mask : url('/assets/naturalCritLogoWhite.svg') center / contain no-repeat;
+ mask : url('/assets/naturalCritLogoWhite.svg') center / contain no-repeat;
}
.homebreweryIcon.red { background-color : red; }
.homebreweryIcon.gold { background-image : linear-gradient(to top left, brown 22.5%, gold 40%, white 60%, gold 67.5%, brown 82.5%); }
@@ -481,4 +491,123 @@ body { counter-reset : page-numbers; }
&:nth-child(even) {
.pageNumber { left : 30px; }
}
+
+ .resetCounting { counter-set : page-numbers 1; }
+
+ &:not(:has(.skipCounting)) { counter-increment : page-numbers; }
+
+}
+
+// *****************************
+// * INDEX
+// *****************************/
+.page {
+ .index {
+
+ ul ul { margin : 0; }
+
+ ul {
+ padding-left : 0;
+ text-indent : 0;
+ list-style-type : none;
+ }
+
+ & > ul > li {
+ padding-left : 1.5em;
+ text-indent : -1.5em;
+ }
+ }
+}
+
+// *****************************
+// * TABLE OF CONTENTS
+// *****************************/
+
+// Default Exclusions
+// Anything not exlcuded is included, default Headers are H1, H2, and H3.
+h4,
+h5,
+h6,
+.page:has(.frontCover),
+.page:has(.backCover),
+.page:has(.insideCover),
+.noToC,
+.toc { --TOC : exclude; }
+
+.tocDepthH2 :is(h1, h2) {--TOC : include; }
+.tocDepthH3 :is(h1, h2, h3) {--TOC : include; }
+.tocDepthH4 :is(h1, h2, h3, h4) {--TOC : include; }
+.tocDepthH5 :is(h1, h2, h3, h4, h5) {--TOC : include; }
+.tocDepthH6 :is(h1, h2, h3, h4, h5, h6) {--TOC : include; }
+
+.tocIncludeH1 h1 {--TOC : include; }
+.tocIncludeH2 h2 {--TOC : include; }
+.tocIncludeH3 h3 {--TOC : include; }
+.tocIncludeH4 h4 {--TOC : include; }
+.tocIncludeH5 h5 {--TOC : include; }
+.tocIncludeH6 h6 {--TOC : include; }
+
+.page {
+ &:has(.toc)::after { display : none; }
+ .toc {
+ -webkit-column-break-inside : avoid;
+ page-break-inside : avoid;
+ break-inside : avoid;
+ h1 {
+ margin-bottom : 0.3cm;
+ text-align : center;
+ }
+ a {
+ display : inline;
+ color : inherit;
+ text-decoration : none;
+ &:hover { text-decoration : underline; }
+ }
+ h4 {
+ margin-top : 0.2cm;
+ line-height : 0.4cm;
+ & + ul li { line-height : 1.2em; }
+ }
+ ul {
+ padding-left : 0;
+ margin-top : 0;
+ list-style-type : none;
+ a {
+ display : flex;
+ flex-flow : row nowrap;
+ justify-content : space-between;
+ width : 100%;
+ }
+ li + li h3 {
+ margin-top : 0.26cm;
+ line-height : 1em;
+ }
+ h3 span:first-child::after { border : none; }
+ span {
+ display : contents;
+ &:first-child::after {
+ bottom : 0.08cm;
+ flex : 1;
+ margin-right : 0.16cm;
+ margin-bottom : 0.08cm;
+ margin-left : 0.08cm; /* Spacing before dot leaders */
+ content : '';
+ border-bottom : 0.05cm dotted #000000;
+ }
+ &:last-child {
+ display : inline-block;
+ align-self : flex-end;
+ font-size : 0.34cm;
+ font-weight : normal;
+ }
+ }
+ ul { /* List indent */
+ margin-left : 1em;
+ }
+ }
+ &.wide {
+ .useColumns(0.96, @fillMode: balance);
+ }
+ }
+ .toc.wide li { break-inside : auto; }
}
diff --git a/themes/V3/Journal/settings.json b/themes/V3/Journal/settings.json
index 069bdb270..74700cc8c 100644
--- a/themes/V3/Journal/settings.json
+++ b/themes/V3/Journal/settings.json
@@ -1,6 +1,6 @@
{
"name" : "Journal",
"renderer" : "V3",
- "baseTheme" : false,
+ "baseTheme" : "Blank",
"baseSnippets" : "5ePHB"
}
diff --git a/themes/V3/Journal/snippets.js b/themes/V3/Journal/snippets.js
index 636befb60..bad5e8e6a 100644
--- a/themes/V3/Journal/snippets.js
+++ b/themes/V3/Journal/snippets.js
@@ -1,4 +1,4 @@
-/* eslint-disable max-lines */
+
module.exports = [
];
diff --git a/themes/V3/Journal/style.less b/themes/V3/Journal/style.less
index b8ed3ce8f..74c976f47 100644
--- a/themes/V3/Journal/style.less
+++ b/themes/V3/Journal/style.less
@@ -11,47 +11,35 @@
--HB_Color_WatercolorStain : #BBAD82; // Light brown
}
-.useSansSerif(){
- font-family : PermanentMarker;
+.useSansSerif() {
+ font-family : 'PermanentMarker';
font-size : 0.3cm;
line-height : 1.2em;
color : var(--HB_Color_Text2);
- p,dl,ul,ol {
- line-height : 1.2em;
- }
- ul, ol {
- padding-left : 1em;
- }
- em{
- font-style : italic;
- }
- strong{
- font-weight : 800;
+ p,dl,ul,ol { line-height : 1.2em; }
+ ul, ol { padding-left : 1em; }
+ em { font-style : italic; }
+ strong {
font-size : 1.1em;
+ font-weight : 800;
}
- h5 + * {
- margin-top : 0.1cm;
- }
-}
-.useColumns(@multiplier : 1, @fillMode: balance){
- column-gap : 0.5cm;
+ h5 + * { margin-top : 0.1cm; }
}
+.useColumns(@multiplier : 1, @fillMode: balance) { column-gap : 0.5cm; }
-.page{
- background-size : 200% 100%;
- background-repeat : no-repeat;
- filter : drop-shadow(1px 4px 14px black);
- background-image : url(/assets/Journal/Background1.webp);
+.page {
padding : 2.1cm 1.9cm 1.7cm 3.8cm;
- &:nth-of-type(2n + 1) {
- background-position : left;
- }
+ background-image : url('/assets/Journal/Background1.webp');
+ background-repeat : no-repeat;
+ background-size : 200% 100%;
+ filter : drop-shadow(1px 4px 14px black);
+ &:nth-of-type(2n + 1) { background-position : left; }
&:nth-of-type(2n) {
- background-position : right;
padding : 2.1cm 3.9cm 1.7cm 1.8cm;
+ background-position : right;
}
&:nth-of-type(2) {
- background-image : url(/assets/Journal/Background2.webp); //Only first page should show ribbon
+ background-image : url('/assets/Journal/Background2.webp'); //Only first page should show ribbon
}
& .columnWrapper {
@@ -59,167 +47,137 @@
}
}
- //*****************************
- // * BASE
+//*****************************
+// * BASE
// *****************************/
-.page{
- color : var(--HB_Color_Text);
- font-family : ReenieBeanie;
+.page {
+ font-family : 'ReenieBeanie';
font-size : 0.53cm;
line-height : 0.8em;
- p + * {
- margin-top : 0.325cm;
- }
- p + p{
- margin-top : 0;
- }
- ul{
- margin-bottom : 0.8em;
- }
- ol{
- margin-bottom : 0.8em;
- }
- em{
+ color : var(--HB_Color_Text);
+ p + * { margin-top : 0.325cm; }
+ p + p { margin-top : 0; }
+ ul { margin-bottom : 0.8em; }
+ ol { margin-bottom : 0.8em; }
+ em {
+ font-style : unset;
text-decoration : underline;
- font-style : unset;
- }
- del{
- text-decoration-style: double;
}
+ del { text-decoration-style : double; }
//Indents after p or lists
- p+p, ul+p, ol+p{
- text-indent : 1em;
- }
+ p + p, ul + p, ol + p { text-indent : 1em; }
//*****************************
// * HEADERS
// *****************************/
- h1,h2,h3,h4,h5{
- font-family : FrederickaTheGreat;
+ h1,h2,h3,h4,h5 {
+ font-family : 'FrederickaTheGreat';
font-weight : unset;
color : var(--HB_Color_HeaderText);
}
- h1{
+ h1 {
margin-bottom : 0.18cm; //Margin-bottom only because this is WIDE
font-size : 0.89cm;
- line-height : 1em;
font-variant : small-caps;
- &+p::first-letter{
+ line-height : 1em;
+ & + p::first-letter {
float : left;
- font-family : FrederickaTheGreat;
- line-height : 1em;
- font-size : 1.9em;
- padding-left : 40px; //Allow background color to extend into margins
- margin-top : -0.3cm;
- margin-bottom : -20px;
- margin-left : -40px;
- margin-right : 0.1em;
padding-top : 0.3em;
padding-bottom : 2px;
+ padding-left : 40px; //Allow background color to extend into margins
+ margin-top : -0.3cm;
+ margin-right : 0.1em;
+ margin-bottom : -20px;
+ margin-left : -40px;
+ font-family : 'FrederickaTheGreat';
+ font-size : 1.9em;
+ line-height : 1em;
}
- &+p::first-line{
- font-variant : small-caps;
- }
+ & + p::first-line { font-variant : small-caps; }
}
- h2{
+ h2 {
font-size : 0.62cm;
line-height : 0.988em; //Font is misaligned. Shift up slightly
}
- h3{
+ h3 {
+ margin-left : -0.9em;
font-size : 0.575cm;
line-height : 0.995em; //Font is misaligned. Shift up slightly
- margin-left : -0.9em;
}
- h4{
+ h4 {
+ padding-bottom : 5px;
font-size : 0.55cm;
line-height : 0.971em; //Font is misaligned. Shift up slightly
color : var(--HB_Color_Text);
- padding-bottom : 5px;
- transform:rotate(0deg);
- &:nth-of-type(2n) {
- transform:rotate(1deg);
- }
- &:nth-of-type(3n) {
- transform:rotate(-1.5deg);
- }
+ transform : rotate(0deg);
+ &:nth-of-type(2n) { transform : rotate(1deg); }
+ &:nth-of-type(3n) { transform : rotate(-1.5deg); }
}
- h5{
- font-family : PermanentMarker;
+ h5 {
+ font-family : 'PermanentMarker';
font-size : 0.4cm;
- color : var(--HB_Color_Text2);
font-weight : bold;
line-height : 0.951em; //Font is misaligned. Shift up slightly
- & + * {
- margin-top : 0.2cm;
- }
+ color : var(--HB_Color_Text2);
+ & + * { margin-top : 0.2cm; }
}
//*****************************
// * TABLE
// *****************************/
- table{
+ table {
.useSansSerif();
- & + * {
- margin-top : 0.325cm;
- }
- thead{
- th{
- vertical-align : bottom;
+ & + * { margin-top : 0.325cm; }
+ thead {
+ th {
padding : 0.14em 0;
+ vertical-align : bottom;
}
}
- tbody{
- tr{
- td{
- padding : 0.14em 0;
- }
- &:nth-child(odd){
- background-image : linear-gradient(to left, #41212100, #41212122, #41212100);
- }
+ tbody {
+ tr {
+ td { padding : 0.14em 0; }
+ &:nth-child(odd) { background-image : linear-gradient(to left, #41212100, #41212122, #41212100); }
}
}
}
//*****************************
// * NOTE
// *****************************/
- .note{
+ .note {
.useSansSerif();
+ padding : 0.2cm;
+ background-image : url('/assets/Journal/HashMarks.png'),
+ linear-gradient(to bottom right, #FF000000, #A36A4E14, #41212100);
+ background-repeat : no-repeat;
+ background-position : center;
+ background-size : 120% 120%;
border-style : solid;
border-width : 1px;
- border-image-source : url(/assets/Journal/Border1.png);
+ border-image-source : url('/assets/Journal/Border1.png');
border-image-slice : 18 18 18 18;
border-image-width : 6px 6px 6px 6px;
border-image-outset : 5px 5px 5px 5px;
border-image-repeat : stretch stretch;
- background-image : url(/assets/Journal/HashMarks.png),
- linear-gradient(to bottom right, #ff000000, #a36a4e14, #41212100);
- background-size : 120% 120%;
- background-repeat : no-repeat;
- background-position : center;
- padding : 0.2cm;
:where(&) {
margin-top : 9px; //Prevent top border getting cut off on colbreak
}
- & + * {
- margin-top : 0.45cm;
- }
- h5 {
- font-size : 0.375cm;
- }
- p{
- padding-bottom : 0px;
- }
- :last-child {
- margin-bottom : 0;
- }
+ & + * { margin-top : 0.45cm; }
+ h5 { font-size : 0.375cm; }
+ p { padding-bottom : 0px; }
+ :last-child { margin-bottom : 0; }
}
//************************************
// * DESCRIPTIVE TEXT BOX
// ************************************/
- * + .descriptive {
- margin-top : 0.6cm;
- }
- .descriptive{
+ * + .descriptive { margin-top : 0.6cm; }
+ .descriptive {
.useSansSerif();
+ padding : 0.2cm;
+ background-image : url('/assets/Journal/HashMarks.png'),
+ linear-gradient(to bottom right, #FF000000, #41212114, #41212100);
+ background-repeat : no-repeat;
+ background-position : center;
+ background-size : 120% 120%;
border-style : solid;
border-width : 1px;
border-image-source : url('/assets/Journal/Border2.png');
@@ -227,27 +185,13 @@
border-image-width : 20px;
border-image-outset : 16px 20px 16px 20px;
border-image-repeat : stretch stretch;
- background-image : url(/assets/Journal/HashMarks.png),
- linear-gradient(to bottom right, #ff000000, #41212114, #41212100);
- background-size : 120% 120%;
- background-repeat : no-repeat;
- background-position : center;
- padding : 0.2cm;
:where(&) {
margin-top : 4px; //Prevent top border getting cut off on colbreak
}
- & + * {
- margin-top : 0.45cm;
- }
- h5 {
- font-size : 0.375cm;
- }
- p{
- padding-bottom : 0px;
- }
- :last-child {
- margin-bottom : 0;
- }
+ & + * { margin-top : 0.45cm; }
+ h5 { font-size : 0.375cm; }
+ p { padding-bottom : 0px; }
+ :last-child { margin-bottom : 0; }
}
//*****************************
// * Images Snippets
@@ -257,25 +201,23 @@
.artist {
position : absolute;
width : auto;
- text-align : center;
- font-family : WalterTurncoat;
+ font-family : 'WalterTurncoat';
font-size : 0.27cm;
color : var(--HB_Color_CaptionText);
+ text-align : center;
p, p + p {
margin : unset;
- text-indent : unset;
line-height : 1em;
+ text-indent : unset;
}
- h5 {
+ h5 {
+ font-family : 'WalterTurncoat';
font-size : 1.3em;
- font-family : WalterTurncoat;
}
- a{
+ a {
color : inherit;
text-decoration : unset;
- &:hover {
- text-decoration : underline;
- }
+ &:hover { text-decoration : underline; }
}
}
@@ -285,6 +227,10 @@
.monster {
.useSansSerif();
&.frame {
+ padding : 0.2cm;
+ background-image : url('/assets/Journal/HashMarks.png'),
+ linear-gradient(to bottom right, #FF000000, #A36A4E14, #41212100);
+ background-size : 100%;
border-style : solid;
border-width : 7px 6px;
border-image-source : url('/assets/Journal/Border3.png');
@@ -292,33 +238,29 @@
border-image-width : 15px 20px 15px 20px;
border-image-outset : 12px 12px 12px 12px;
border-image-repeat : stretch round;
- background-image : url('/assets/Journal/HashMarks.png'),
- linear-gradient(to bottom right, #ff000000, #a36a4e14, #41212100);
background-blend-mode : screen multiply;
- background-size : 100%;
- padding : 0.2cm;
}
-
- color: var(--HB_Color_Text);
position : relative;
padding : 0px;
margin-bottom : 0.325cm;
+ color : var(--HB_Color_Text);
+
//Headers
- h2{
+ h2 {
+ margin : 0;
font-size : 0.62cm;
line-height : 1em;
- margin : 0;
- &+p {
+ & + p {
margin-bottom : 0; //Monster size and type subtext
}
}
- h3{
+ h3 {
+ padding-bottom : 0.05cm;
margin-left : 0;
font-variant : small-caps;
- padding-bottom : 0.05cm;
}
- hr{
+ hr {
visibility : visible;
height : 6px;
margin : 0.12cm 0cm;
@@ -330,24 +272,18 @@
}
// Monster Ability table
- hr + table:first-of-type{
+ hr + table:first-of-type {
margin : 0;
- column-span : none;
- background-image : none;
+ color : inherit;
+ background-image : none;
border-style : none;
border-image : none;
- color : inherit;
- tr {
- background-image : none;
- }
- td,th {
- padding: 0px;
- }
+ column-span : none;
+ tr { background-image : none; }
+ td,th { padding : 0px; }
}
- :last-child {
- margin-bottom : 0;
- }
+ :last-child { margin-bottom : 0; }
strong, em {
font-style : normal;
@@ -356,29 +292,27 @@
}
//Full Width
- .monster.wide{
+ .monster.wide {
.useColumns(0.96, @fillMode: balance);
}
//*****************************
// * FOOTER
// *****************************/
- &:nth-child(odd){
- .pageNumber{
- left : 3cm;
- }
- .footnote{
+ &:nth-child(odd) {
+ .pageNumber { left : 3cm; }
+ .footnote {
left : 4.5cm;
text-align : left;
}
}
- .pageNumber{
- font-family : FrederickaTheGreat;
+ .pageNumber {
right : 3cm;
bottom : 1.25cm;
+ font-family : 'FrederickaTheGreat';
color : var(--HB_Color_HeaderText);
}
- .footnote{
+ .footnote {
position : absolute;
right : 4.5cm;
bottom : 1.25cm;
@@ -391,154 +325,134 @@
//************************************
// * CODE BLOCKS
// ************************************/
- code{
- font-size : 0.3cm;
+ code {
padding : 0px 4px;
- color : var(--HB_Color_Text);
+ font-size : 0.3cm;
vertical-align : middle;
- background-color : #faf7ea;
+ color : var(--HB_Color_Text);
+ background-color : #FAF7EA;
border-radius : 4px;
}
- pre code{
+ pre code {
+ padding : 0.15cm;
+ margin-bottom : 2px;
border-style : solid;
border-width : 1px;
+ border-radius : 12px;
border-image : @codeBorderImage 26 stretch;
border-image-width : 10px;
border-image-outset : 2px;
- border-radius : 12px;
- margin-bottom : 2px;
- padding : 0.15cm;
.page :where(&) {
margin-top : 2px; //Prevent top border getting cut off on colbreak
}
- & + * {
- margin-top : 0.325cm;
- }
+ & + * { margin-top : 0.325cm; }
}
//*****************************
// * EXTRAS
// *****************************/
- hr{
+ hr {
visibility : hidden;
- border : none;
margin : 0px;
+ border : none;
}
//Text indent right after table
- table+p{
- text-indent : 1em;
- }
+ table + p { text-indent : 1em; }
a, a:visited, a:hover {
- color: var(--HB_Color_Text);
- transition:all 1s ease;
- }
- a:hover {
- color:red;
+ color : var(--HB_Color_Text);
+ transition : all 1s ease;
}
+ a:hover { color : red; }
}
//*****************************
// * SPELL LIST
// *****************************/
-.page .spellList{
+.page .spellList {
.useSansSerif();
- font-family : PermanentMarker;
+ font-family : 'PermanentMarker';
column-count : 2;
- ul+h5{
- margin-top : 15px;
- }
- ul{
- margin-bottom : 0.5em;
+ ul + h5 { margin-top : 15px; }
+ ul {
padding-left : 1em;
+ margin-bottom : 0.5em;
text-indent : -1em;
list-style-type : none;
+ break-inside : auto;
-webkit-column-break-inside : auto;
page-break-inside : auto;
- break-inside : auto;
- }
- &.wide{
- column-count : 4;
}
+ &.wide { column-count : 4; }
}
//*****************************
// * CLASS TABLE
// *****************************/
-.page .classTable{
- th[colspan]:not([rowspan]) {
- white-space : nowrap;
- }
- h5 + table{
- margin-top : 0.2cm;
- }
+.page .classTable {
+ th[colspan]:not([rowspan]) { white-space : nowrap; }
+ h5 + table { margin-top : 0.2cm; }
}
//*****************************
// * TABLE OF CONTENTS
// *****************************/
-.page .toc{
+.page .toc {
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
h1 {
- text-align : center;
margin-bottom : 0.3cm;
+ text-align : center;
}
- a{
+ a {
display : inline;
color : inherit;
text-decoration : none;
- &:hover{
- text-decoration : underline;
- }
+ &:hover { text-decoration : underline; }
}
h4 {
margin-top : 0.2cm;
line-height : 0.4cm;
- & + ul li {
- line-height: 1.2em;
- }
+ & + ul li { line-height : 1.2em; }
}
- ul{
+ ul {
padding-left : 0;
list-style-type : none;
li + li h3 {
margin-top : 0.26cm;
- line-height : 1em
- }
- h3 span:first-child::after {
- border : none;
+ line-height : 1em;
}
+ h3 span:first-child::after { border : none; }
span {
display : table-cell;
&:first-child {
- position : relative;
- overflow : hidden;
+ position : relative;
+ overflow : hidden;
&::after {
- content : "";
position : absolute;
bottom : 0.08cm;
- margin-left : 0.06cm; /* Spacing before dot leaders */
width : 100%;
- border-bottom : 0.05cm dotted #000;
+ margin-left : 0.06cm; /* Spacing before dot leaders */
+ content : '';
+ border-bottom : 0.05cm dotted #000000;
}
}
&:last-child {
- font-family : ReenieBeanie;
- font-size : 0.34cm;
- font-weight : normal;
- color : black;
- text-align : right;
- vertical-align : bottom; /* Keep page number bottom-aligned */
width : 1%;
padding-left : 0.06cm; /* Spacing after dot leaders */
- /*white-space : nowrap; /* Uncomment if needed */
+ font-family : 'ReenieBeanie';
+ font-size : 0.34cm;
+ font-weight : normal;
+ vertical-align : bottom; /* Keep page number bottom-aligned */
+ color : black;
+ text-align : right;
+ /* white-space : nowrap; /* Uncomment if needed */
}
}
- ul { /*List indent*/
+ ul { /* List indent */
margin-left : 1em;
}
}
- &.wide{
+ &.wide {
.useColumns(0.96, @fillMode: balance);
}
}
@@ -546,6 +460,4 @@
//*****************************
// * WIDE
// *****************************/
-.page .wide {
- margin-bottom : 0.45cm;
-}
+.page .wide { margin-bottom : 0.45cm; }
diff --git a/themes/assets/assets.less b/themes/assets/assets.less
index cdef32c7c..f880bce77 100644
--- a/themes/assets/assets.less
+++ b/themes/assets/assets.less
@@ -7,6 +7,7 @@
@noteBorderImage : url('/assets/noteBorder.png');
@descriptiveBoxImage : url('/assets/descriptiveBorder.png');
@monsterBlockBackground : url('/assets/parchmentBackgroundGrayscale.jpg');
+@monsterBlockOverlay : url('/assets/parchmentBackgroundOverlayed.jpg');
@monsterBorderImage : url('/assets/monsterBorderFancy.png');
@codeBorderImage : url('/assets/codeBorder.png');
@classTableDecoration : url('/assets/classTableDecoration.png');
diff --git a/themes/assets/naturalCritLogoBlack.svg b/themes/assets/naturalCritLogoBlack.svg
new file mode 100644
index 000000000..0e3135066
--- /dev/null
+++ b/themes/assets/naturalCritLogoBlack.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+ NaturalCritLogo
+
+
+
+
+
+
+
+
+ NaturalCritLogo
+
+
+
+
diff --git a/themes/codeMirror/customEditorStyles.less b/themes/codeMirror/customEditorStyles.less
index 367eaec33..8c48c1b43 100644
--- a/themes/codeMirror/customEditorStyles.less
+++ b/themes/codeMirror/customEditorStyles.less
@@ -1,88 +1,83 @@
.editor .codeEditor .CodeMirror {
- // Themes with dark backgrounds
- &.cm-s-3024-night,
- &.cm-s-abbott,
- &.cm-s-abcdef,
- &.cm-s-ambiance,
- &.cm-s-ayu-dark,
- &.cm-s-ayu-mirage,
- &.cm-s-base16-dark,
- &.cm-s-bespin,
- &.cm-s-blackboard,
- &.cm-s-cobalt,
- &.cm-s-colorforth,
- &.cm-s-darcula,
- &.cm-s-dracula,
- &.cm-s-duotone-dark,
- &.cm-s-erlang-dark,
- &.cm-s-gruvbox-dark,
- &.cm-s-hopscotch,
- &.cm-s-icecoder,
- &.cm-s-isotope,
- &.cm-s-lesser-dark,
- &.cm-s-liquibyte,
- &.cm-s-lucario,
- &.cm-s-material,
- &.cm-s-material-darker,
- &.cm-s-material-ocean,
- &.cm-s-material-palenight,
- &.cm-s-mbo,
- &.cm-s-midnight,
- &.cm-s-monokai,
- &.cm-s-moxer,
- &.cm-s-night,
- &.cm-s-nord,
- &.cm-s-oceanic-next,
- &.cm-s-panda-syntax,
- &.cm-s-paraiso-dark,
- &.cm-s-pastel-on-dark,
- &.cm-s-railscasts,
- &.cm-s-rubyblue,
- &.cm-s-seti,
- &.cm-s-shadowfox,
- &.cm-s-the-matrix,
- &.cm-s-tomorrow-night-bright,
- &.cm-s-tomorrow-night-eighties,
- &.cm-s-twilight,
- &.cm-s-vibrant-ink,
- &.cm-s-xq-dark,
- &.cm-s-yonce,
- &.cm-s-zenburn
- {
- .CodeMirror-code {
- .block:not(.cm-comment) {
- color: magenta;
- }
- .columnSplit {
- color: black;
- background-color: rgba(35,153,153,0.5);
- }
- .pageLine {
- background-color: rgba(255,255,255,0.5);
- & ~ pre.CodeMirror-line {
- color: black;
- }
- }
- }
- }
- // Themes with light backgrounds
- &.cm-s-default,
- &.cm-s-3024-day,
- &.cm-s-ambiance-mobile,
- &.cm-s-base16-light,
- &.cm-s-duotone-light,
- &.cm-s-eclipse,
- &.cm-s-elegant,
- &.cm-s-juejin,
- &.cm-s-neat,
- &.cm-s-neo,
- &.cm-s-paraiso-lightm
- &.cm-s-solarized,
- &.cm-s-ssms,
- &.cm-s-ttcn,
- &.cm-s-xq-light,
- &.cm-s-yeti {
- // Future styling for themes with light backgrounds
- --dummyVar: 'currently unused';
- }
+ // Themes with dark backgrounds
+ &.cm-s-3024-night,
+ &.cm-s-abbott,
+ &.cm-s-abcdef,
+ &.cm-s-ambiance,
+ &.cm-s-ayu-dark,
+ &.cm-s-ayu-mirage,
+ &.cm-s-base16-dark,
+ &.cm-s-bespin,
+ &.cm-s-blackboard,
+ &.cm-s-cobalt,
+ &.cm-s-colorforth,
+ &.cm-s-darcula,
+ &.cm-s-dracula,
+ &.cm-s-duotone-dark,
+ &.cm-s-erlang-dark,
+ &.cm-s-gruvbox-dark,
+ &.cm-s-hopscotch,
+ &.cm-s-icecoder,
+ &.cm-s-isotope,
+ &.cm-s-lesser-dark,
+ &.cm-s-liquibyte,
+ &.cm-s-lucario,
+ &.cm-s-material,
+ &.cm-s-material-darker,
+ &.cm-s-material-ocean,
+ &.cm-s-material-palenight,
+ &.cm-s-mbo,
+ &.cm-s-midnight,
+ &.cm-s-monokai,
+ &.cm-s-moxer,
+ &.cm-s-night,
+ &.cm-s-nord,
+ &.cm-s-oceanic-next,
+ &.cm-s-panda-syntax,
+ &.cm-s-paraiso-dark,
+ &.cm-s-pastel-on-dark,
+ &.cm-s-railscasts,
+ &.cm-s-rubyblue,
+ &.cm-s-seti,
+ &.cm-s-shadowfox,
+ &.cm-s-the-matrix,
+ &.cm-s-tomorrow-night-bright,
+ &.cm-s-tomorrow-night-eighties,
+ &.cm-s-twilight,
+ &.cm-s-vibrant-ink,
+ &.cm-s-xq-dark,
+ &.cm-s-yonce,
+ &.cm-s-zenburn {
+ .CodeMirror-code {
+ .block:not(.cm-comment) { color : magenta; }
+ .columnSplit {
+ color : black;
+ background-color : rgba(35,153,153,0.5);
+ }
+ .pageLine {
+ background-color : rgba(255,255,255,0.5);
+ & ~ pre.CodeMirror-line { color : black; }
+ }
+ }
+ }
+ // Themes with light backgrounds
+ &.cm-s-default,
+ &.cm-s-3024-day,
+ &.cm-s-ambiance-mobile,
+ &.cm-s-base16-light,
+ &.cm-s-duotone-light,
+ &.cm-s-eclipse,
+ &.cm-s-elegant,
+ &.cm-s-juejin,
+ &.cm-s-neat,
+ &.cm-s-neo,
+ &.cm-s-paraiso-lightm
+ &.cm-s-solarized,
+ &.cm-s-ssms,
+ &.cm-s-ttcn,
+ &.cm-s-xq-light,
+ &.cm-s-yeti {
+ // Future styling for themes with light backgrounds
+ --dummyVar : 'currently unused';
+ }
}
diff --git a/themes/codeMirror/customThemes/darkbrewery-v301.css b/themes/codeMirror/customThemes/darkbrewery-v301.css
deleted file mode 100644
index 267c377f6..000000000
--- a/themes/codeMirror/customThemes/darkbrewery-v301.css
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Main BG color and normal text color */
-.CodeMirror {
- background: #293134;
- color: #91A6AA;
-}
-
-/* Brew BG */
-.brewRenderer {
- background-color: #293134;
-}
-/* Blinking cursor */
-.CodeMirror-cursor {
- border-left: 1px solid #e0e2e4;
-}
-
-/* HB DARK NAV START*/
-
-/* Bars at the top */
-.snippetBar {
- background-color: #2F393C;
- color: white;
-}
-nav {
- background-color: #293134;
-}
-nav .navItem {
- background-color: #293134;
-}
-/* Fix for Homebrewery custom Snippet icons */
-.snippetBar .fac {
- filter: invert(1);
-}
-.snippetBar .snippetGroup .dropdown {
- background-color: #2F393C;
-}
-/* HB DARK NAV END */
-
-/* Line number stuff */
-.CodeMirror-gutter-elt {
- color: #81969A;
-}
-.CodeMirror-linenumber {
- background-color: #293134;
-}
-.CodeMirror-gutter {
- background-color: #293134;
-}
-/* column splits */
-.editor .codeEditor .columnSplit {
- font-style: italic;
- color: inherit;
- background-color:#1f5763;
- border-bottom: #299 solid 1px;
-}
-
-/* Colors for headings and such */
-/* ###Headings */
-.cm-s-default .cm-header {
- color: #c51b1b;
- -webkit-text-stroke-width: 0.1px;
- -webkit-text-stroke-color: #000;
-}
-/* bold points */
-.cm-header, .cm-strong {
- font-weight: bold;
- color: #309dd2;
-}
-/* Link headings */
-.cm-s-default .cm-link {
- color: #dd6300;
-}
-/* links */
-.cm-s-default .cm-string {
- color: #aa8261;
-}
-/*@import*/
-.cm-s-default .cm-def {
- color:#2986cc;
-}
-/* Bullets and such */
-.cm-s-default .cm-variable-2 {
- color: #3cbf30;
-}
-/* blocks */
-.editor .codeEditor .block:not(.cm-comment) {
- color: #e3e3e3;
-}
-/* inline blocks */
-.editor .codeEditor .inline-block {
- color: #e3e3e3;
-}
-/* Tags (divs) */
-.cm-s-default .cm-tag {
- color: #e3ff00;
-}
-.cm-s-default .cm-attribute {
- color: #e3ff00;
-}
-.cm-s-default .cm-atom {
- color:#000;
-}
-.cm-s-default .cm-qualifier{
- color:#ee1919;
-}
-.cm-s-default .cm-comment{
- color:#bbc700;
-}
-.cm-s-default .cm-keyword {
- color:#c302df;
- background-color:#b1b1b1;
-}
-.cm-s-default .cm-property.cm-error {
- color:#c50202;
-}
-
-.CodeMirror-foldmarker {
- color:#f0ff00;
-}
-
-/* New page */
-.editor .codeEditor .pageLine {
- background: #000;
- color:#000;
- border-bottom: 1px solid #fff;
-}
-
-.cm-s-default .cm-builtin {
- color:#fff;
-}
\ No newline at end of file
diff --git a/themes/codeMirror/customThemes/darkbrewery.css b/themes/codeMirror/customThemes/darkbrewery.css
new file mode 100644
index 000000000..6fba4001c
--- /dev/null
+++ b/themes/codeMirror/customThemes/darkbrewery.css
@@ -0,0 +1,134 @@
+/*stylelint-disable*/
+.editor .snippetBar {
+ color: white;
+ background-color: #2F393C;
+ .dropdown {
+ background-color: #2F393C;
+ }
+ .editors {
+ border-color: #ccc;
+ }
+}
+/* Main BG color and normal text color */
+.CodeMirror {
+ --bg: #293134;
+ --highlight: #bcbcbc;
+ color: #91A6AA;
+ background: var(--bg);
+ .CodeMirror-scroll {
+ .CodeMirror-gutters {
+ border-right: 1px solid #555;
+ background: var(--bg);
+ .CodeMirror-gutter {
+ background-color: var(--bg);
+ &.CodeMirror-foldgutter {
+ cursor: pointer;
+ border-left: 1px solid #555;
+ transition: background 0.1s;
+ &:hover {
+ background: #555;
+ }
+ }
+ }
+ }
+ .CodeMirror-lines {
+ /* Line numbers*/
+ .CodeMirror-linenumber.CodeMirror-gutter-elt {
+ background-color: var(--bg);
+ color: #81969A;
+ }
+ /* Blinking cursor */
+ .CodeMirror-cursor {
+ border-left: 1px solid #E0E2E4;
+ }
+ .pageLine {
+ color: #000000;
+ background: #000000;
+ border-bottom: 1px solid #FFFFFF;
+ }
+ .CodeMirror-code .CodeMirror-line {
+ &.columnSplit {
+ font-style: italic;
+ color: inherit;
+ background-color: #1F5763;
+ border-bottom: #229999 solid 1px;
+ }
+ /*syntax*/
+ .cm-header {
+ font-weight: bold;
+ color: #C51B1B;
+ -webkit-text-stroke-width: 0.1px;
+ -webkit-text-stroke-color: #000000;
+ }
+ .cm-strong {
+ color: #309DD2;
+ }
+ .cm-em {
+ /*italics*/
+ }
+ .cm-link {
+ color: #DD6300;
+ }
+ .cm-string {
+ color: #AA8261;
+ }
+ /* @import */
+ .cm-def {
+ color: #2986CC;
+ }
+ /* Bullets and such */
+ .cm-variable-2 {
+ color: #3CBF30;
+ }
+ .block:not(.cm-comment) {
+ color: #E3E3E3;
+ }
+ .inline-block {
+ color: #E3E3E3;
+ }
+ .cm-tag {
+ color: #E3FF00;
+ }
+ .cm-attribute {
+ color: #E3FF00;
+ }
+ .cm-atom {
+ color: #c1939a;
+ }
+ .cm-number {
+ color: #2986CC;
+ }
+ .cm-property:not(.cm-error) ~ .cm-variable {
+ color:#9e1f9e;
+ }
+ .cm-qualifier {
+ color: #EE1919;
+ }
+ .cm-comment {
+ color: #BBC700;
+ }
+ .cm-keyword {
+ color: white;
+ }
+ .cm-error {
+ color: #C50202;
+ }
+ .CodeMirror-foldmarker {
+ color: #F0FF00;
+ }
+ .cm-builtin {
+ color: #FFFFFF;
+ }
+ .dt-highlight {
+ background: #ffffff14;
+ }
+ .dl-colon-highlight {
+ background: #ccc;
+ }
+ .dl-highlight.dd-highlight {
+ color: #b5858d;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/themes/codeMirror/editorThemes.json b/themes/codeMirror/editorThemes.json
index 679c6874b..d287c9810 100644
--- a/themes/codeMirror/editorThemes.json
+++ b/themes/codeMirror/editorThemes.json
@@ -15,7 +15,7 @@
"cobalt",
"colorforth",
"darcula",
-"darkbrewery-v301",
+"darkbrewery",
"darkvision",
"dracula",
"duotone-dark",
diff --git a/themes/fonts/5e legacy/fonts.less b/themes/fonts/5e legacy/fonts.less
index d4c10c456..680e395ec 100644
--- a/themes/fonts/5e legacy/fonts.less
+++ b/themes/fonts/5e legacy/fonts.less
@@ -1,61 +1,61 @@
/* Main Font, serif */
@font-face {
- font-family: BookSanity;
- src: url('../../../fonts/5e legacy/Bookinsanity.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "BookSanity";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Bookinsanity.woff2');
}
@font-face {
- font-family: BookSanity;
- src: url('../../../fonts/5e legacy/Bookinsanity Bold.woff2');
- font-weight: bold;
- font-style: normal;
+ font-family : "BookSanity";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../../../fonts/5e legacy/Bookinsanity Bold.woff2');
}
@font-face {
- font-family: BookSanity;
- src: url('../../../fonts/5e legacy/Bookinsanity Italic.woff2');
- font-weight: normal;
- font-style: italic;
+ font-family : "BookSanity";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Bookinsanity Italic.woff2');
}
@font-face {
- font-family: BookSanity;
- src: url('../../../fonts/5e legacy/Bookinsanity Bold Italic.woff2');
- font-weight: bold;
- font-style: italic;
+ font-family : "BookSanity";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../../../fonts/5e legacy/Bookinsanity Bold Italic.woff2');
}
/* Notes and Tables, sans-serif */
@font-face {
- font-family: ScalySans;
- src: url('../../../fonts/5e legacy/Scaly Sans.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "ScalySans";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Scaly Sans.woff2');
}
@font-face {
- font-family: ScalySansSmallCaps;
- src: url('../../../fonts/5e legacy/Scaly Sans Caps.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "ScalySansSmallCaps";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Scaly Sans Caps.woff2');
}
@font-face {
- font-family: WalterTurncoat;
- src: url('../../../fonts/5e legacy/WalterTurncoat-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "WalterTurncoat";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/WalterTurncoat-Regular.woff2');
}
/* Headers */
@font-face {
- font-family: MrJeeves;
- src: url('../../../fonts/5e legacy/Mr Eaves Small Caps.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "MrJeeves";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Mr Eaves Small Caps.woff2');
}
/* Fancy Drop Cap */
@font-face {
- font-family: Solberry;
- src: url('../../../fonts/5e legacy/Solbera Imitation.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "Solberry";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e legacy/Solbera Imitation.woff2');
}
diff --git a/themes/fonts/5e/fonts.less b/themes/fonts/5e/fonts.less
index c028b06f9..eec5c418f 100644
--- a/themes/fonts/5e/fonts.less
+++ b/themes/fonts/5e/fonts.less
@@ -1,143 +1,143 @@
/* Main Font, serif */
@font-face {
- font-family: BookInsanityRemake;
- src: url('../../../fonts/5e/Bookinsanity.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "BookInsanityRemake";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Bookinsanity.woff2');
}
@font-face {
- font-family: BookInsanityRemake;
- src: url('../../../fonts/5e/Bookinsanity Bold.woff2');
- font-weight: bold;
- font-style: normal;
+ font-family : "BookInsanityRemake";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Bookinsanity Bold.woff2');
}
@font-face {
- font-family: BookInsanityRemake;
- src: url('../../../fonts/5e/Bookinsanity Italic.woff2');
- font-weight: normal;
- font-style: italic;
+ font-family : "BookInsanityRemake";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Bookinsanity Italic.woff2');
}
@font-face {
- font-family: BookInsanityRemake;
- src: url('../../../fonts/5e/Bookinsanity Bold Italic.woff2');
- font-weight: bold;
- font-style: italic;
+ font-family : "BookInsanityRemake";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Bookinsanity Bold Italic.woff2');
}
/* Notes and Tables, sans-serif */
@font-face {
- font-family: ScalySansRemake;
- src: url('../../../fonts/5e/Scaly Sans.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "ScalySansRemake";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Scaly Sans.woff2');
}
@font-face {
- font-family: ScalySansRemake;
- src: url('../../../fonts/5e/Scaly Sans Bold.woff2');
- font-weight: bold;
- font-style: normal;
+ font-family : "ScalySansRemake";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Scaly Sans Bold.woff2');
}
@font-face {
- font-family: ScalySansRemake;
- src: url('../../../fonts/5e/Scaly Sans Italic.woff2');
- font-weight: normal;
- font-style: italic;
+ font-family : "ScalySansRemake";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Scaly Sans Italic.woff2');
}
@font-face {
- font-family: ScalySansRemake;
- src: url('../../../fonts/5e/Scaly Sans Bold Italic.woff2');
- font-weight: bold;
- font-style: italic;
+ font-family : "ScalySansRemake";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Scaly Sans Bold Italic.woff2');
}
@font-face {
- font-family: ScalySansSmallCapsRemake;
- src: url('../../../fonts/5e/Scaly Sans Caps.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "ScalySansSmallCapsRemake";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Scaly Sans Caps.woff2');
}
@font-face {
- font-family: WalterTurncoat;
- src: url('../../../fonts/5e/WalterTurncoat-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "WalterTurncoat";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/WalterTurncoat-Regular.woff2');
}
/* Headers */
@font-face {
- font-family: MrEavesRemake;
- src: url('../../../fonts/5e/Mr Eaves Small Caps.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "MrEavesRemake";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Mr Eaves Small Caps.woff2');
}
/* Fancy Drop Cap */
@font-face {
- font-family: SolberaImitationRemake; //Tweaked 5e version
- src: url('../../../fonts/5e/Solbera Imitation Tweak.woff2');
- font-weight: 100 1000;
- font-style: normal;
- font-style: italic;
+ font-family : "SolberaImitationRemake"; //Tweaked 5e version
+ font-style : normal;
+ font-style : italic;
+ font-weight : 100 1000;
+ src : url('../../../fonts/5e/Solbera Imitation Tweak.woff2');
}
/* Cover Page */
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../../../fonts/5e/Nodesto Caps Condensed.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "NodestoCapsCondensed";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Nodesto Caps Condensed.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../../../fonts/5e/Nodesto Caps Condensed Bold.woff2');
- font-weight: bold;
- font-style: normal;
+ font-family : "NodestoCapsCondensed";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Nodesto Caps Condensed Bold.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../../../fonts/5e/Nodesto Caps Condensed Italic.woff2');
- font-weight: normal;
- font-style: italic;
+ font-family : "NodestoCapsCondensed";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Nodesto Caps Condensed Italic.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../../../fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');
- font-weight: bold;
- font-style: italic;
+ font-family : "NodestoCapsCondensed";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../../../fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');
}
@font-face {
- font-family: NodestoCapsWide;
- src: url('../../../fonts/5e/Nodesto Caps Wide.woff2');
- font-weight: normal;
- font-style: normal
+ font-family : "NodestoCapsWide";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/Nodesto Caps Wide.woff2');
}
@font-face {
- font-family: Overpass;
- src: url('../../../fonts/5e/Overpass Medium.woff2');
- font-weight: 500;
- font-style: normal;
+ font-family : "Overpass";
+ font-style : normal;
+ font-weight : 500;
+ src : url('../../../fonts/5e/Overpass Medium.woff2');
}
@font-face {
- font-family: Davek;
- src: url('../../../fonts/5e/Davek.woff2');
- font-weight: 500;
- font-style: normal;
+ font-family : "Davek";
+ font-style : normal;
+ font-weight : 500;
+ src : url('../../../fonts/5e/Davek.woff2');
}
@font-face {
- font-family: Iokharic;
- src: url('../../../fonts/5e/Iokharic.woff2');
- font-weight: 500;
- font-style: normal;
+ font-family : "Iokharic";
+ font-style : normal;
+ font-weight : 500;
+ src : url('../../../fonts/5e/Iokharic.woff2');
}
@font-face {
- font-family: Rellanic;
- src: url('../../../fonts/5e/Rellanic.woff2');
- font-weight: 500;
- font-style: normal;
+ font-family : "Rellanic";
+ font-style : normal;
+ font-weight : 500;
+ src : url('../../../fonts/5e/Rellanic.woff2');
}
diff --git a/themes/fonts/Blank/fonts.less b/themes/fonts/Blank/fonts.less
new file mode 100644
index 000000000..6558c84b4
--- /dev/null
+++ b/themes/fonts/Blank/fonts.less
@@ -0,0 +1,46 @@
+/*
+TeX Gyre Pagella
+License:
+ % Copyright 2007--2018 for TeX Gyre extensions by B. Jackowski,
+ % J.M. Nowacki et al. (on behalf of TeX Users Groups). Vietnamese
+ % characters were added by Han The Thanh.
+ %
+ % This work can be freely used and distributed under
+ % the GUST Font License (GFL -- see GUST-FONT-LICENSE.txt)
+ % which is actually an instance of the LaTeX Project Public License
+ % (LPPL -- see http://www.latex-project.org/lppl.txt ).
+ %
+ % This work has the maintenance status "maintained". The Current Maintainer
+ % of this work is Bogus\l{}aw Jackowski and Janusz M. Nowacki.
+ %
+ % This work consists of the files listed
+ % in the MANIFEST-TeX-Gyre-Pagella.txt file.
+*/
+
+@font-face {
+ font-family : "Pagella";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/Blank/texgyrepagella-regular.woff2');
+}
+
+@font-face {
+ font-family : "Pagella";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../../../fonts/Blank/texgyrepagella-bold.woff2');
+}
+
+@font-face {
+ font-family : "Pagella";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../../../fonts/Blank/texgyrepagella-italic.woff2');
+}
+
+@font-face {
+ font-family : "Pagella";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../../../fonts/Blank/texgyrepagella-bolditalic.woff2');
+}
diff --git a/themes/fonts/Blank/texgyrepagella-bold.woff2 b/themes/fonts/Blank/texgyrepagella-bold.woff2
new file mode 100644
index 000000000..5256e2d9e
Binary files /dev/null and b/themes/fonts/Blank/texgyrepagella-bold.woff2 differ
diff --git a/themes/fonts/Blank/texgyrepagella-bolditalic.woff2 b/themes/fonts/Blank/texgyrepagella-bolditalic.woff2
new file mode 100644
index 000000000..7384fcb1a
Binary files /dev/null and b/themes/fonts/Blank/texgyrepagella-bolditalic.woff2 differ
diff --git a/themes/fonts/Blank/texgyrepagella-italic.woff2 b/themes/fonts/Blank/texgyrepagella-italic.woff2
new file mode 100644
index 000000000..a6d15f26e
Binary files /dev/null and b/themes/fonts/Blank/texgyrepagella-italic.woff2 differ
diff --git a/themes/fonts/Blank/texgyrepagella-regular.woff2 b/themes/fonts/Blank/texgyrepagella-regular.woff2
new file mode 100644
index 000000000..c37301bca
Binary files /dev/null and b/themes/fonts/Blank/texgyrepagella-regular.woff2 differ
diff --git a/themes/fonts/Journal/fonts.less b/themes/fonts/Journal/fonts.less
index 703b594ba..20190c651 100644
--- a/themes/fonts/Journal/fonts.less
+++ b/themes/fonts/Journal/fonts.less
@@ -1,58 +1,58 @@
/* Main Font, serif */
@font-face {
- font-family: ReenieBeanie;
- src: url('../../../fonts/Journal/ReenieBeanie-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "ReenieBeanie";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/Journal/ReenieBeanie-Regular.woff2');
}
/* Notes and Tables, sans-serif */
@font-face {
- font-family: PermanentMarker;
- src: url('../../../fonts/Journal/PermanentMarker-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "PermanentMarker";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/Journal/PermanentMarker-Regular.woff2');
}
@font-face {
- font-family: WalterTurncoat;
- src: url('../../../fonts/5e/WalterTurncoat-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "WalterTurncoat";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/5e/WalterTurncoat-Regular.woff2');
}
/* Headers */
@font-face {
- font-family: FrederickaTheGreat;
- src: url('../../../fonts/Journal/FrederickaTheGreat-Regular.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "FrederickaTheGreat";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../../../fonts/Journal/FrederickaTheGreat-Regular.woff2');
}
/* Cover Page */
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../fonts/5e/Nodesto Caps Condensed.woff2');
- font-weight: normal;
- font-style: normal;
+ font-family : "NodestoCapsCondensed";
+ font-style : normal;
+ font-weight : normal;
+ src : url('../fonts/5e/Nodesto Caps Condensed.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../fonts/5e/Nodesto Caps Condensed Bold.woff2');
- font-weight: bold;
- font-style: normal;
+ font-family : "NodestoCapsCondensed";
+ font-style : normal;
+ font-weight : bold;
+ src : url('../fonts/5e/Nodesto Caps Condensed Bold.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../fonts/5e/Nodesto Caps Condensed Italic.woff2');
- font-weight: normal;
- font-style: italic;
+ font-family : "NodestoCapsCondensed";
+ font-style : italic;
+ font-weight : normal;
+ src : url('../fonts/5e/Nodesto Caps Condensed Italic.woff2');
}
@font-face {
- font-family: NodestoCapsCondensed;
- src: url('../fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');
- font-weight: bold;
- font-style: italic;
+ font-family : "NodestoCapsCondensed";
+ font-style : italic;
+ font-weight : bold;
+ src : url('../fonts/5e/Nodesto Caps Condensed Bold Italic.woff2');
}
diff --git a/themes/fonts/iconFonts/diceFont.js b/themes/fonts/iconFonts/diceFont.js
index 6ac75ad26..a349d7b0a 100644
--- a/themes/fonts/iconFonts/diceFont.js
+++ b/themes/fonts/iconFonts/diceFont.js
@@ -93,4 +93,4 @@ const diceFont = {
'df_solid_small_dot_d6_6' : 'df solid-small-dot-d6-6'
};
-module.exports = diceFont;
\ No newline at end of file
+export default diceFont;
\ No newline at end of file
diff --git a/themes/fonts/iconFonts/diceFont.less b/themes/fonts/iconFonts/diceFont.less
index ec80f132b..3b60093d0 100644
--- a/themes/fonts/iconFonts/diceFont.less
+++ b/themes/fonts/iconFonts/diceFont.less
@@ -13,8 +13,8 @@
font-weight : normal;
font-variant : normal;
line-height : 1;
- text-decoration : inherit;
text-transform : none;
+ text-decoration : inherit;
text-rendering : optimizeLegibility;
/* Better Font Rendering =========== */
diff --git a/themes/fonts/iconFonts/elderberryInn.js b/themes/fonts/iconFonts/elderberryInn.js
index 042648e4d..6fd933f78 100644
--- a/themes/fonts/iconFonts/elderberryInn.js
+++ b/themes/fonts/iconFonts/elderberryInn.js
@@ -206,4 +206,4 @@ const elderberryInn = {
'ei_wish' : 'ei wish'
};
-module.exports = elderberryInn;
\ No newline at end of file
+export default elderberryInn;
\ No newline at end of file
diff --git a/themes/fonts/iconFonts/fa-brands-400.woff2 b/themes/fonts/iconFonts/fa-brands-400.woff2
new file mode 100644
index 000000000..3c5cf97ec
Binary files /dev/null and b/themes/fonts/iconFonts/fa-brands-400.woff2 differ
diff --git a/themes/fonts/iconFonts/fa-regular-400.woff2 b/themes/fonts/iconFonts/fa-regular-400.woff2
new file mode 100644
index 000000000..57d917965
Binary files /dev/null and b/themes/fonts/iconFonts/fa-regular-400.woff2 differ
diff --git a/themes/fonts/iconFonts/fa-solid-900.woff2 b/themes/fonts/iconFonts/fa-solid-900.woff2
new file mode 100644
index 000000000..16721020f
Binary files /dev/null and b/themes/fonts/iconFonts/fa-solid-900.woff2 differ
diff --git a/themes/fonts/iconFonts/fa-v4compatibility.woff2 b/themes/fonts/iconFonts/fa-v4compatibility.woff2
new file mode 100644
index 000000000..fbafb2222
Binary files /dev/null and b/themes/fonts/iconFonts/fa-v4compatibility.woff2 differ
diff --git a/themes/fonts/iconFonts/fontAwesome.js b/themes/fonts/iconFonts/fontAwesome.js
index 764bd5bc5..bf11a7c92 100644
--- a/themes/fonts/iconFonts/fontAwesome.js
+++ b/themes/fonts/iconFonts/fontAwesome.js
@@ -1,3 +1,5 @@
+/* eslint-disable max-lines */
+
const fontAwesome = {
// FONT-AWESOME SOLID
'fas_0' : 'fas fa-0',
@@ -2051,4 +2053,4 @@ const fontAwesome = {
'fab_zhihu' : 'fab fa-zhihu'
};
-module.exports = fontAwesome;
\ No newline at end of file
+export default fontAwesome;
\ No newline at end of file
diff --git a/themes/fonts/iconFonts/fontAwesome.less b/themes/fonts/iconFonts/fontAwesome.less
index 5f626c645..dcdc7dbf5 100644
--- a/themes/fonts/iconFonts/fontAwesome.less
+++ b/themes/fonts/iconFonts/fontAwesome.less
@@ -1,2 +1,10 @@
+@import (less) "./themes/fonts/iconFonts/fontawesome-free.less";
+@import (less) "./themes/fonts/iconFonts/fontawesome-solid.less";
+@import (less) "./themes/fonts/iconFonts/fontawesome-brands.less";
+@import (less) "./themes/fonts/iconFonts/fontawesome-regular.less";
+
+
/* Icon Font: Font Awesome */
-.far,.fas,.fab { display : inline; }
\ No newline at end of file
+.far,.fas,.fab { display : inline; }
+
+
diff --git a/themes/fonts/iconFonts/fontawesome-brands.less b/themes/fonts/iconFonts/fontawesome-brands.less
new file mode 100644
index 000000000..3095766f8
--- /dev/null
+++ b/themes/fonts/iconFonts/fontawesome-brands.less
@@ -0,0 +1,1609 @@
+/*!
+ * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2024 Fonticons, Inc.
+ */
+:root, :host {
+ --fa-style-family-brands: 'Font Awesome 6 Brands';
+ --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Brands';
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("/fonts/iconFonts/fa-brands-400.woff2") format("woff2"), url("/fonts/iconFonts/fa-brands-400.ttf") format("truetype"); }
+
+.fab,
+.fa-brands {
+ font-weight: 400; }
+
+.fa-monero {
+ --fa: "\f3d0"; }
+
+.fa-hooli {
+ --fa: "\f427"; }
+
+.fa-yelp {
+ --fa: "\f1e9"; }
+
+.fa-cc-visa {
+ --fa: "\f1f0"; }
+
+.fa-lastfm {
+ --fa: "\f202"; }
+
+.fa-shopware {
+ --fa: "\f5b5"; }
+
+.fa-creative-commons-nc {
+ --fa: "\f4e8"; }
+
+.fa-aws {
+ --fa: "\f375"; }
+
+.fa-redhat {
+ --fa: "\f7bc"; }
+
+.fa-yoast {
+ --fa: "\f2b1"; }
+
+.fa-cloudflare {
+ --fa: "\e07d"; }
+
+.fa-ups {
+ --fa: "\f7e0"; }
+
+.fa-pixiv {
+ --fa: "\e640"; }
+
+.fa-wpexplorer {
+ --fa: "\f2de"; }
+
+.fa-dyalog {
+ --fa: "\f399"; }
+
+.fa-bity {
+ --fa: "\f37a"; }
+
+.fa-stackpath {
+ --fa: "\f842"; }
+
+.fa-buysellads {
+ --fa: "\f20d"; }
+
+.fa-first-order {
+ --fa: "\f2b0"; }
+
+.fa-modx {
+ --fa: "\f285"; }
+
+.fa-guilded {
+ --fa: "\e07e"; }
+
+.fa-vnv {
+ --fa: "\f40b"; }
+
+.fa-square-js {
+ --fa: "\f3b9"; }
+
+.fa-js-square {
+ --fa: "\f3b9"; }
+
+.fa-microsoft {
+ --fa: "\f3ca"; }
+
+.fa-qq {
+ --fa: "\f1d6"; }
+
+.fa-orcid {
+ --fa: "\f8d2"; }
+
+.fa-java {
+ --fa: "\f4e4"; }
+
+.fa-invision {
+ --fa: "\f7b0"; }
+
+.fa-creative-commons-pd-alt {
+ --fa: "\f4ed"; }
+
+.fa-centercode {
+ --fa: "\f380"; }
+
+.fa-glide-g {
+ --fa: "\f2a6"; }
+
+.fa-drupal {
+ --fa: "\f1a9"; }
+
+.fa-jxl {
+ --fa: "\e67b"; }
+
+.fa-dart-lang {
+ --fa: "\e693"; }
+
+.fa-hire-a-helper {
+ --fa: "\f3b0"; }
+
+.fa-creative-commons-by {
+ --fa: "\f4e7"; }
+
+.fa-unity {
+ --fa: "\e049"; }
+
+.fa-whmcs {
+ --fa: "\f40d"; }
+
+.fa-rocketchat {
+ --fa: "\f3e8"; }
+
+.fa-vk {
+ --fa: "\f189"; }
+
+.fa-untappd {
+ --fa: "\f405"; }
+
+.fa-mailchimp {
+ --fa: "\f59e"; }
+
+.fa-css3-alt {
+ --fa: "\f38b"; }
+
+.fa-square-reddit {
+ --fa: "\f1a2"; }
+
+.fa-reddit-square {
+ --fa: "\f1a2"; }
+
+.fa-vimeo-v {
+ --fa: "\f27d"; }
+
+.fa-contao {
+ --fa: "\f26d"; }
+
+.fa-square-font-awesome {
+ --fa: "\e5ad"; }
+
+.fa-deskpro {
+ --fa: "\f38f"; }
+
+.fa-brave {
+ --fa: "\e63c"; }
+
+.fa-sistrix {
+ --fa: "\f3ee"; }
+
+.fa-square-instagram {
+ --fa: "\e055"; }
+
+.fa-instagram-square {
+ --fa: "\e055"; }
+
+.fa-battle-net {
+ --fa: "\f835"; }
+
+.fa-the-red-yeti {
+ --fa: "\f69d"; }
+
+.fa-square-hacker-news {
+ --fa: "\f3af"; }
+
+.fa-hacker-news-square {
+ --fa: "\f3af"; }
+
+.fa-edge {
+ --fa: "\f282"; }
+
+.fa-threads {
+ --fa: "\e618"; }
+
+.fa-napster {
+ --fa: "\f3d2"; }
+
+.fa-square-snapchat {
+ --fa: "\f2ad"; }
+
+.fa-snapchat-square {
+ --fa: "\f2ad"; }
+
+.fa-google-plus-g {
+ --fa: "\f0d5"; }
+
+.fa-artstation {
+ --fa: "\f77a"; }
+
+.fa-markdown {
+ --fa: "\f60f"; }
+
+.fa-sourcetree {
+ --fa: "\f7d3"; }
+
+.fa-google-plus {
+ --fa: "\f2b3"; }
+
+.fa-diaspora {
+ --fa: "\f791"; }
+
+.fa-foursquare {
+ --fa: "\f180"; }
+
+.fa-stack-overflow {
+ --fa: "\f16c"; }
+
+.fa-github-alt {
+ --fa: "\f113"; }
+
+.fa-phoenix-squadron {
+ --fa: "\f511"; }
+
+.fa-pagelines {
+ --fa: "\f18c"; }
+
+.fa-algolia {
+ --fa: "\f36c"; }
+
+.fa-red-river {
+ --fa: "\f3e3"; }
+
+.fa-creative-commons-sa {
+ --fa: "\f4ef"; }
+
+.fa-safari {
+ --fa: "\f267"; }
+
+.fa-google {
+ --fa: "\f1a0"; }
+
+.fa-square-font-awesome-stroke {
+ --fa: "\f35c"; }
+
+.fa-font-awesome-alt {
+ --fa: "\f35c"; }
+
+.fa-atlassian {
+ --fa: "\f77b"; }
+
+.fa-linkedin-in {
+ --fa: "\f0e1"; }
+
+.fa-digital-ocean {
+ --fa: "\f391"; }
+
+.fa-nimblr {
+ --fa: "\f5a8"; }
+
+.fa-chromecast {
+ --fa: "\f838"; }
+
+.fa-evernote {
+ --fa: "\f839"; }
+
+.fa-hacker-news {
+ --fa: "\f1d4"; }
+
+.fa-creative-commons-sampling {
+ --fa: "\f4f0"; }
+
+.fa-adversal {
+ --fa: "\f36a"; }
+
+.fa-creative-commons {
+ --fa: "\f25e"; }
+
+.fa-watchman-monitoring {
+ --fa: "\e087"; }
+
+.fa-fonticons {
+ --fa: "\f280"; }
+
+.fa-weixin {
+ --fa: "\f1d7"; }
+
+.fa-shirtsinbulk {
+ --fa: "\f214"; }
+
+.fa-codepen {
+ --fa: "\f1cb"; }
+
+.fa-git-alt {
+ --fa: "\f841"; }
+
+.fa-lyft {
+ --fa: "\f3c3"; }
+
+.fa-rev {
+ --fa: "\f5b2"; }
+
+.fa-windows {
+ --fa: "\f17a"; }
+
+.fa-wizards-of-the-coast {
+ --fa: "\f730"; }
+
+.fa-square-viadeo {
+ --fa: "\f2aa"; }
+
+.fa-viadeo-square {
+ --fa: "\f2aa"; }
+
+.fa-meetup {
+ --fa: "\f2e0"; }
+
+.fa-centos {
+ --fa: "\f789"; }
+
+.fa-adn {
+ --fa: "\f170"; }
+
+.fa-cloudsmith {
+ --fa: "\f384"; }
+
+.fa-opensuse {
+ --fa: "\e62b"; }
+
+.fa-pied-piper-alt {
+ --fa: "\f1a8"; }
+
+.fa-square-dribbble {
+ --fa: "\f397"; }
+
+.fa-dribbble-square {
+ --fa: "\f397"; }
+
+.fa-codiepie {
+ --fa: "\f284"; }
+
+.fa-node {
+ --fa: "\f419"; }
+
+.fa-mix {
+ --fa: "\f3cb"; }
+
+.fa-steam {
+ --fa: "\f1b6"; }
+
+.fa-cc-apple-pay {
+ --fa: "\f416"; }
+
+.fa-scribd {
+ --fa: "\f28a"; }
+
+.fa-debian {
+ --fa: "\e60b"; }
+
+.fa-openid {
+ --fa: "\f19b"; }
+
+.fa-instalod {
+ --fa: "\e081"; }
+
+.fa-files-pinwheel {
+ --fa: "\e69f"; }
+
+.fa-expeditedssl {
+ --fa: "\f23e"; }
+
+.fa-sellcast {
+ --fa: "\f2da"; }
+
+.fa-square-twitter {
+ --fa: "\f081"; }
+
+.fa-twitter-square {
+ --fa: "\f081"; }
+
+.fa-r-project {
+ --fa: "\f4f7"; }
+
+.fa-delicious {
+ --fa: "\f1a5"; }
+
+.fa-freebsd {
+ --fa: "\f3a4"; }
+
+.fa-vuejs {
+ --fa: "\f41f"; }
+
+.fa-accusoft {
+ --fa: "\f369"; }
+
+.fa-ioxhost {
+ --fa: "\f208"; }
+
+.fa-fonticons-fi {
+ --fa: "\f3a2"; }
+
+.fa-app-store {
+ --fa: "\f36f"; }
+
+.fa-cc-mastercard {
+ --fa: "\f1f1"; }
+
+.fa-itunes-note {
+ --fa: "\f3b5"; }
+
+.fa-golang {
+ --fa: "\e40f"; }
+
+.fa-kickstarter {
+ --fa: "\f3bb"; }
+
+.fa-square-kickstarter {
+ --fa: "\f3bb"; }
+
+.fa-grav {
+ --fa: "\f2d6"; }
+
+.fa-weibo {
+ --fa: "\f18a"; }
+
+.fa-uncharted {
+ --fa: "\e084"; }
+
+.fa-firstdraft {
+ --fa: "\f3a1"; }
+
+.fa-square-youtube {
+ --fa: "\f431"; }
+
+.fa-youtube-square {
+ --fa: "\f431"; }
+
+.fa-wikipedia-w {
+ --fa: "\f266"; }
+
+.fa-wpressr {
+ --fa: "\f3e4"; }
+
+.fa-rendact {
+ --fa: "\f3e4"; }
+
+.fa-angellist {
+ --fa: "\f209"; }
+
+.fa-galactic-republic {
+ --fa: "\f50c"; }
+
+.fa-nfc-directional {
+ --fa: "\e530"; }
+
+.fa-skype {
+ --fa: "\f17e"; }
+
+.fa-joget {
+ --fa: "\f3b7"; }
+
+.fa-fedora {
+ --fa: "\f798"; }
+
+.fa-stripe-s {
+ --fa: "\f42a"; }
+
+.fa-meta {
+ --fa: "\e49b"; }
+
+.fa-laravel {
+ --fa: "\f3bd"; }
+
+.fa-hotjar {
+ --fa: "\f3b1"; }
+
+.fa-bluetooth-b {
+ --fa: "\f294"; }
+
+.fa-square-letterboxd {
+ --fa: "\e62e"; }
+
+.fa-sticker-mule {
+ --fa: "\f3f7"; }
+
+.fa-creative-commons-zero {
+ --fa: "\f4f3"; }
+
+.fa-hips {
+ --fa: "\f452"; }
+
+.fa-css {
+ --fa: "\e6a2"; }
+
+.fa-behance {
+ --fa: "\f1b4"; }
+
+.fa-reddit {
+ --fa: "\f1a1"; }
+
+.fa-discord {
+ --fa: "\f392"; }
+
+.fa-chrome {
+ --fa: "\f268"; }
+
+.fa-app-store-ios {
+ --fa: "\f370"; }
+
+.fa-cc-discover {
+ --fa: "\f1f2"; }
+
+.fa-wpbeginner {
+ --fa: "\f297"; }
+
+.fa-confluence {
+ --fa: "\f78d"; }
+
+.fa-shoelace {
+ --fa: "\e60c"; }
+
+.fa-mdb {
+ --fa: "\f8ca"; }
+
+.fa-dochub {
+ --fa: "\f394"; }
+
+.fa-accessible-icon {
+ --fa: "\f368"; }
+
+.fa-ebay {
+ --fa: "\f4f4"; }
+
+.fa-amazon {
+ --fa: "\f270"; }
+
+.fa-unsplash {
+ --fa: "\e07c"; }
+
+.fa-yarn {
+ --fa: "\f7e3"; }
+
+.fa-square-steam {
+ --fa: "\f1b7"; }
+
+.fa-steam-square {
+ --fa: "\f1b7"; }
+
+.fa-500px {
+ --fa: "\f26e"; }
+
+.fa-square-vimeo {
+ --fa: "\f194"; }
+
+.fa-vimeo-square {
+ --fa: "\f194"; }
+
+.fa-asymmetrik {
+ --fa: "\f372"; }
+
+.fa-font-awesome {
+ --fa: "\f2b4"; }
+
+.fa-font-awesome-flag {
+ --fa: "\f2b4"; }
+
+.fa-font-awesome-logo-full {
+ --fa: "\f2b4"; }
+
+.fa-gratipay {
+ --fa: "\f184"; }
+
+.fa-apple {
+ --fa: "\f179"; }
+
+.fa-hive {
+ --fa: "\e07f"; }
+
+.fa-gitkraken {
+ --fa: "\f3a6"; }
+
+.fa-keybase {
+ --fa: "\f4f5"; }
+
+.fa-apple-pay {
+ --fa: "\f415"; }
+
+.fa-padlet {
+ --fa: "\e4a0"; }
+
+.fa-amazon-pay {
+ --fa: "\f42c"; }
+
+.fa-square-github {
+ --fa: "\f092"; }
+
+.fa-github-square {
+ --fa: "\f092"; }
+
+.fa-stumbleupon {
+ --fa: "\f1a4"; }
+
+.fa-fedex {
+ --fa: "\f797"; }
+
+.fa-phoenix-framework {
+ --fa: "\f3dc"; }
+
+.fa-shopify {
+ --fa: "\e057"; }
+
+.fa-neos {
+ --fa: "\f612"; }
+
+.fa-square-threads {
+ --fa: "\e619"; }
+
+.fa-hackerrank {
+ --fa: "\f5f7"; }
+
+.fa-researchgate {
+ --fa: "\f4f8"; }
+
+.fa-swift {
+ --fa: "\f8e1"; }
+
+.fa-angular {
+ --fa: "\f420"; }
+
+.fa-speakap {
+ --fa: "\f3f3"; }
+
+.fa-angrycreative {
+ --fa: "\f36e"; }
+
+.fa-y-combinator {
+ --fa: "\f23b"; }
+
+.fa-empire {
+ --fa: "\f1d1"; }
+
+.fa-envira {
+ --fa: "\f299"; }
+
+.fa-google-scholar {
+ --fa: "\e63b"; }
+
+.fa-square-gitlab {
+ --fa: "\e5ae"; }
+
+.fa-gitlab-square {
+ --fa: "\e5ae"; }
+
+.fa-studiovinari {
+ --fa: "\f3f8"; }
+
+.fa-pied-piper {
+ --fa: "\f2ae"; }
+
+.fa-wordpress {
+ --fa: "\f19a"; }
+
+.fa-product-hunt {
+ --fa: "\f288"; }
+
+.fa-firefox {
+ --fa: "\f269"; }
+
+.fa-linode {
+ --fa: "\f2b8"; }
+
+.fa-goodreads {
+ --fa: "\f3a8"; }
+
+.fa-square-odnoklassniki {
+ --fa: "\f264"; }
+
+.fa-odnoklassniki-square {
+ --fa: "\f264"; }
+
+.fa-jsfiddle {
+ --fa: "\f1cc"; }
+
+.fa-sith {
+ --fa: "\f512"; }
+
+.fa-themeisle {
+ --fa: "\f2b2"; }
+
+.fa-page4 {
+ --fa: "\f3d7"; }
+
+.fa-hashnode {
+ --fa: "\e499"; }
+
+.fa-react {
+ --fa: "\f41b"; }
+
+.fa-cc-paypal {
+ --fa: "\f1f4"; }
+
+.fa-squarespace {
+ --fa: "\f5be"; }
+
+.fa-cc-stripe {
+ --fa: "\f1f5"; }
+
+.fa-creative-commons-share {
+ --fa: "\f4f2"; }
+
+.fa-bitcoin {
+ --fa: "\f379"; }
+
+.fa-keycdn {
+ --fa: "\f3ba"; }
+
+.fa-opera {
+ --fa: "\f26a"; }
+
+.fa-itch-io {
+ --fa: "\f83a"; }
+
+.fa-umbraco {
+ --fa: "\f8e8"; }
+
+.fa-galactic-senate {
+ --fa: "\f50d"; }
+
+.fa-ubuntu {
+ --fa: "\f7df"; }
+
+.fa-draft2digital {
+ --fa: "\f396"; }
+
+.fa-stripe {
+ --fa: "\f429"; }
+
+.fa-houzz {
+ --fa: "\f27c"; }
+
+.fa-gg {
+ --fa: "\f260"; }
+
+.fa-dhl {
+ --fa: "\f790"; }
+
+.fa-square-pinterest {
+ --fa: "\f0d3"; }
+
+.fa-pinterest-square {
+ --fa: "\f0d3"; }
+
+.fa-xing {
+ --fa: "\f168"; }
+
+.fa-blackberry {
+ --fa: "\f37b"; }
+
+.fa-creative-commons-pd {
+ --fa: "\f4ec"; }
+
+.fa-playstation {
+ --fa: "\f3df"; }
+
+.fa-quinscape {
+ --fa: "\f459"; }
+
+.fa-less {
+ --fa: "\f41d"; }
+
+.fa-blogger-b {
+ --fa: "\f37d"; }
+
+.fa-opencart {
+ --fa: "\f23d"; }
+
+.fa-vine {
+ --fa: "\f1ca"; }
+
+.fa-signal-messenger {
+ --fa: "\e663"; }
+
+.fa-paypal {
+ --fa: "\f1ed"; }
+
+.fa-gitlab {
+ --fa: "\f296"; }
+
+.fa-typo3 {
+ --fa: "\f42b"; }
+
+.fa-reddit-alien {
+ --fa: "\f281"; }
+
+.fa-yahoo {
+ --fa: "\f19e"; }
+
+.fa-dailymotion {
+ --fa: "\e052"; }
+
+.fa-affiliatetheme {
+ --fa: "\f36b"; }
+
+.fa-pied-piper-pp {
+ --fa: "\f1a7"; }
+
+.fa-bootstrap {
+ --fa: "\f836"; }
+
+.fa-odnoklassniki {
+ --fa: "\f263"; }
+
+.fa-nfc-symbol {
+ --fa: "\e531"; }
+
+.fa-mintbit {
+ --fa: "\e62f"; }
+
+.fa-ethereum {
+ --fa: "\f42e"; }
+
+.fa-speaker-deck {
+ --fa: "\f83c"; }
+
+.fa-creative-commons-nc-eu {
+ --fa: "\f4e9"; }
+
+.fa-patreon {
+ --fa: "\f3d9"; }
+
+.fa-avianex {
+ --fa: "\f374"; }
+
+.fa-ello {
+ --fa: "\f5f1"; }
+
+.fa-gofore {
+ --fa: "\f3a7"; }
+
+.fa-bimobject {
+ --fa: "\f378"; }
+
+.fa-brave-reverse {
+ --fa: "\e63d"; }
+
+.fa-facebook-f {
+ --fa: "\f39e"; }
+
+.fa-square-google-plus {
+ --fa: "\f0d4"; }
+
+.fa-google-plus-square {
+ --fa: "\f0d4"; }
+
+.fa-web-awesome {
+ --fa: "\e682"; }
+
+.fa-mandalorian {
+ --fa: "\f50f"; }
+
+.fa-first-order-alt {
+ --fa: "\f50a"; }
+
+.fa-osi {
+ --fa: "\f41a"; }
+
+.fa-google-wallet {
+ --fa: "\f1ee"; }
+
+.fa-d-and-d-beyond {
+ --fa: "\f6ca"; }
+
+.fa-periscope {
+ --fa: "\f3da"; }
+
+.fa-fulcrum {
+ --fa: "\f50b"; }
+
+.fa-cloudscale {
+ --fa: "\f383"; }
+
+.fa-forumbee {
+ --fa: "\f211"; }
+
+.fa-mizuni {
+ --fa: "\f3cc"; }
+
+.fa-schlix {
+ --fa: "\f3ea"; }
+
+.fa-square-xing {
+ --fa: "\f169"; }
+
+.fa-xing-square {
+ --fa: "\f169"; }
+
+.fa-bandcamp {
+ --fa: "\f2d5"; }
+
+.fa-wpforms {
+ --fa: "\f298"; }
+
+.fa-cloudversify {
+ --fa: "\f385"; }
+
+.fa-usps {
+ --fa: "\f7e1"; }
+
+.fa-megaport {
+ --fa: "\f5a3"; }
+
+.fa-magento {
+ --fa: "\f3c4"; }
+
+.fa-spotify {
+ --fa: "\f1bc"; }
+
+.fa-optin-monster {
+ --fa: "\f23c"; }
+
+.fa-fly {
+ --fa: "\f417"; }
+
+.fa-square-bluesky {
+ --fa: "\e6a3"; }
+
+.fa-aviato {
+ --fa: "\f421"; }
+
+.fa-itunes {
+ --fa: "\f3b4"; }
+
+.fa-cuttlefish {
+ --fa: "\f38c"; }
+
+.fa-blogger {
+ --fa: "\f37c"; }
+
+.fa-flickr {
+ --fa: "\f16e"; }
+
+.fa-viber {
+ --fa: "\f409"; }
+
+.fa-soundcloud {
+ --fa: "\f1be"; }
+
+.fa-digg {
+ --fa: "\f1a6"; }
+
+.fa-tencent-weibo {
+ --fa: "\f1d5"; }
+
+.fa-letterboxd {
+ --fa: "\e62d"; }
+
+.fa-symfony {
+ --fa: "\f83d"; }
+
+.fa-maxcdn {
+ --fa: "\f136"; }
+
+.fa-etsy {
+ --fa: "\f2d7"; }
+
+.fa-facebook-messenger {
+ --fa: "\f39f"; }
+
+.fa-audible {
+ --fa: "\f373"; }
+
+.fa-think-peaks {
+ --fa: "\f731"; }
+
+.fa-bilibili {
+ --fa: "\e3d9"; }
+
+.fa-erlang {
+ --fa: "\f39d"; }
+
+.fa-x-twitter {
+ --fa: "\e61b"; }
+
+.fa-cotton-bureau {
+ --fa: "\f89e"; }
+
+.fa-dashcube {
+ --fa: "\f210"; }
+
+.fa-42-group {
+ --fa: "\e080"; }
+
+.fa-innosoft {
+ --fa: "\e080"; }
+
+.fa-stack-exchange {
+ --fa: "\f18d"; }
+
+.fa-elementor {
+ --fa: "\f430"; }
+
+.fa-square-pied-piper {
+ --fa: "\e01e"; }
+
+.fa-pied-piper-square {
+ --fa: "\e01e"; }
+
+.fa-creative-commons-nd {
+ --fa: "\f4eb"; }
+
+.fa-palfed {
+ --fa: "\f3d8"; }
+
+.fa-superpowers {
+ --fa: "\f2dd"; }
+
+.fa-resolving {
+ --fa: "\f3e7"; }
+
+.fa-xbox {
+ --fa: "\f412"; }
+
+.fa-square-web-awesome-stroke {
+ --fa: "\e684"; }
+
+.fa-searchengin {
+ --fa: "\f3eb"; }
+
+.fa-tiktok {
+ --fa: "\e07b"; }
+
+.fa-square-facebook {
+ --fa: "\f082"; }
+
+.fa-facebook-square {
+ --fa: "\f082"; }
+
+.fa-renren {
+ --fa: "\f18b"; }
+
+.fa-linux {
+ --fa: "\f17c"; }
+
+.fa-glide {
+ --fa: "\f2a5"; }
+
+.fa-linkedin {
+ --fa: "\f08c"; }
+
+.fa-hubspot {
+ --fa: "\f3b2"; }
+
+.fa-deploydog {
+ --fa: "\f38e"; }
+
+.fa-twitch {
+ --fa: "\f1e8"; }
+
+.fa-flutter {
+ --fa: "\e694"; }
+
+.fa-ravelry {
+ --fa: "\f2d9"; }
+
+.fa-mixer {
+ --fa: "\e056"; }
+
+.fa-square-lastfm {
+ --fa: "\f203"; }
+
+.fa-lastfm-square {
+ --fa: "\f203"; }
+
+.fa-vimeo {
+ --fa: "\f40a"; }
+
+.fa-mendeley {
+ --fa: "\f7b3"; }
+
+.fa-uniregistry {
+ --fa: "\f404"; }
+
+.fa-figma {
+ --fa: "\f799"; }
+
+.fa-creative-commons-remix {
+ --fa: "\f4ee"; }
+
+.fa-cc-amazon-pay {
+ --fa: "\f42d"; }
+
+.fa-dropbox {
+ --fa: "\f16b"; }
+
+.fa-instagram {
+ --fa: "\f16d"; }
+
+.fa-cmplid {
+ --fa: "\e360"; }
+
+.fa-upwork {
+ --fa: "\e641"; }
+
+.fa-facebook {
+ --fa: "\f09a"; }
+
+.fa-gripfire {
+ --fa: "\f3ac"; }
+
+.fa-jedi-order {
+ --fa: "\f50e"; }
+
+.fa-uikit {
+ --fa: "\f403"; }
+
+.fa-fort-awesome-alt {
+ --fa: "\f3a3"; }
+
+.fa-phabricator {
+ --fa: "\f3db"; }
+
+.fa-ussunnah {
+ --fa: "\f407"; }
+
+.fa-earlybirds {
+ --fa: "\f39a"; }
+
+.fa-trade-federation {
+ --fa: "\f513"; }
+
+.fa-autoprefixer {
+ --fa: "\f41c"; }
+
+.fa-whatsapp {
+ --fa: "\f232"; }
+
+.fa-square-upwork {
+ --fa: "\e67c"; }
+
+.fa-slideshare {
+ --fa: "\f1e7"; }
+
+.fa-google-play {
+ --fa: "\f3ab"; }
+
+.fa-viadeo {
+ --fa: "\f2a9"; }
+
+.fa-line {
+ --fa: "\f3c0"; }
+
+.fa-google-drive {
+ --fa: "\f3aa"; }
+
+.fa-servicestack {
+ --fa: "\f3ec"; }
+
+.fa-simplybuilt {
+ --fa: "\f215"; }
+
+.fa-bitbucket {
+ --fa: "\f171"; }
+
+.fa-imdb {
+ --fa: "\f2d8"; }
+
+.fa-deezer {
+ --fa: "\e077"; }
+
+.fa-raspberry-pi {
+ --fa: "\f7bb"; }
+
+.fa-jira {
+ --fa: "\f7b1"; }
+
+.fa-docker {
+ --fa: "\f395"; }
+
+.fa-screenpal {
+ --fa: "\e570"; }
+
+.fa-bluetooth {
+ --fa: "\f293"; }
+
+.fa-gitter {
+ --fa: "\f426"; }
+
+.fa-d-and-d {
+ --fa: "\f38d"; }
+
+.fa-microblog {
+ --fa: "\e01a"; }
+
+.fa-cc-diners-club {
+ --fa: "\f24c"; }
+
+.fa-gg-circle {
+ --fa: "\f261"; }
+
+.fa-pied-piper-hat {
+ --fa: "\f4e5"; }
+
+.fa-kickstarter-k {
+ --fa: "\f3bc"; }
+
+.fa-yandex {
+ --fa: "\f413"; }
+
+.fa-readme {
+ --fa: "\f4d5"; }
+
+.fa-html5 {
+ --fa: "\f13b"; }
+
+.fa-sellsy {
+ --fa: "\f213"; }
+
+.fa-square-web-awesome {
+ --fa: "\e683"; }
+
+.fa-sass {
+ --fa: "\f41e"; }
+
+.fa-wirsindhandwerk {
+ --fa: "\e2d0"; }
+
+.fa-wsh {
+ --fa: "\e2d0"; }
+
+.fa-buromobelexperte {
+ --fa: "\f37f"; }
+
+.fa-salesforce {
+ --fa: "\f83b"; }
+
+.fa-octopus-deploy {
+ --fa: "\e082"; }
+
+.fa-medapps {
+ --fa: "\f3c6"; }
+
+.fa-ns8 {
+ --fa: "\f3d5"; }
+
+.fa-pinterest-p {
+ --fa: "\f231"; }
+
+.fa-apper {
+ --fa: "\f371"; }
+
+.fa-fort-awesome {
+ --fa: "\f286"; }
+
+.fa-waze {
+ --fa: "\f83f"; }
+
+.fa-bluesky {
+ --fa: "\e671"; }
+
+.fa-cc-jcb {
+ --fa: "\f24b"; }
+
+.fa-snapchat {
+ --fa: "\f2ab"; }
+
+.fa-snapchat-ghost {
+ --fa: "\f2ab"; }
+
+.fa-fantasy-flight-games {
+ --fa: "\f6dc"; }
+
+.fa-rust {
+ --fa: "\e07a"; }
+
+.fa-wix {
+ --fa: "\f5cf"; }
+
+.fa-square-behance {
+ --fa: "\f1b5"; }
+
+.fa-behance-square {
+ --fa: "\f1b5"; }
+
+.fa-supple {
+ --fa: "\f3f9"; }
+
+.fa-webflow {
+ --fa: "\e65c"; }
+
+.fa-rebel {
+ --fa: "\f1d0"; }
+
+.fa-css3 {
+ --fa: "\f13c"; }
+
+.fa-staylinked {
+ --fa: "\f3f5"; }
+
+.fa-kaggle {
+ --fa: "\f5fa"; }
+
+.fa-space-awesome {
+ --fa: "\e5ac"; }
+
+.fa-deviantart {
+ --fa: "\f1bd"; }
+
+.fa-cpanel {
+ --fa: "\f388"; }
+
+.fa-goodreads-g {
+ --fa: "\f3a9"; }
+
+.fa-square-git {
+ --fa: "\f1d2"; }
+
+.fa-git-square {
+ --fa: "\f1d2"; }
+
+.fa-square-tumblr {
+ --fa: "\f174"; }
+
+.fa-tumblr-square {
+ --fa: "\f174"; }
+
+.fa-trello {
+ --fa: "\f181"; }
+
+.fa-creative-commons-nc-jp {
+ --fa: "\f4ea"; }
+
+.fa-get-pocket {
+ --fa: "\f265"; }
+
+.fa-perbyte {
+ --fa: "\e083"; }
+
+.fa-grunt {
+ --fa: "\f3ad"; }
+
+.fa-weebly {
+ --fa: "\f5cc"; }
+
+.fa-connectdevelop {
+ --fa: "\f20e"; }
+
+.fa-leanpub {
+ --fa: "\f212"; }
+
+.fa-black-tie {
+ --fa: "\f27e"; }
+
+.fa-themeco {
+ --fa: "\f5c6"; }
+
+.fa-python {
+ --fa: "\f3e2"; }
+
+.fa-android {
+ --fa: "\f17b"; }
+
+.fa-bots {
+ --fa: "\e340"; }
+
+.fa-free-code-camp {
+ --fa: "\f2c5"; }
+
+.fa-hornbill {
+ --fa: "\f592"; }
+
+.fa-js {
+ --fa: "\f3b8"; }
+
+.fa-ideal {
+ --fa: "\e013"; }
+
+.fa-git {
+ --fa: "\f1d3"; }
+
+.fa-dev {
+ --fa: "\f6cc"; }
+
+.fa-sketch {
+ --fa: "\f7c6"; }
+
+.fa-yandex-international {
+ --fa: "\f414"; }
+
+.fa-cc-amex {
+ --fa: "\f1f3"; }
+
+.fa-uber {
+ --fa: "\f402"; }
+
+.fa-github {
+ --fa: "\f09b"; }
+
+.fa-php {
+ --fa: "\f457"; }
+
+.fa-alipay {
+ --fa: "\f642"; }
+
+.fa-youtube {
+ --fa: "\f167"; }
+
+.fa-skyatlas {
+ --fa: "\f216"; }
+
+.fa-firefox-browser {
+ --fa: "\e007"; }
+
+.fa-replyd {
+ --fa: "\f3e6"; }
+
+.fa-suse {
+ --fa: "\f7d6"; }
+
+.fa-jenkins {
+ --fa: "\f3b6"; }
+
+.fa-twitter {
+ --fa: "\f099"; }
+
+.fa-rockrms {
+ --fa: "\f3e9"; }
+
+.fa-pinterest {
+ --fa: "\f0d2"; }
+
+.fa-buffer {
+ --fa: "\f837"; }
+
+.fa-npm {
+ --fa: "\f3d4"; }
+
+.fa-yammer {
+ --fa: "\f840"; }
+
+.fa-btc {
+ --fa: "\f15a"; }
+
+.fa-dribbble {
+ --fa: "\f17d"; }
+
+.fa-stumbleupon-circle {
+ --fa: "\f1a3"; }
+
+.fa-internet-explorer {
+ --fa: "\f26b"; }
+
+.fa-stubber {
+ --fa: "\e5c7"; }
+
+.fa-telegram {
+ --fa: "\f2c6"; }
+
+.fa-telegram-plane {
+ --fa: "\f2c6"; }
+
+.fa-old-republic {
+ --fa: "\f510"; }
+
+.fa-odysee {
+ --fa: "\e5c6"; }
+
+.fa-square-whatsapp {
+ --fa: "\f40c"; }
+
+.fa-whatsapp-square {
+ --fa: "\f40c"; }
+
+.fa-node-js {
+ --fa: "\f3d3"; }
+
+.fa-edge-legacy {
+ --fa: "\e078"; }
+
+.fa-slack {
+ --fa: "\f198"; }
+
+.fa-slack-hash {
+ --fa: "\f198"; }
+
+.fa-medrt {
+ --fa: "\f3c8"; }
+
+.fa-usb {
+ --fa: "\f287"; }
+
+.fa-tumblr {
+ --fa: "\f173"; }
+
+.fa-vaadin {
+ --fa: "\f408"; }
+
+.fa-quora {
+ --fa: "\f2c4"; }
+
+.fa-square-x-twitter {
+ --fa: "\e61a"; }
+
+.fa-reacteurope {
+ --fa: "\f75d"; }
+
+.fa-medium {
+ --fa: "\f23a"; }
+
+.fa-medium-m {
+ --fa: "\f23a"; }
+
+.fa-amilia {
+ --fa: "\f36d"; }
+
+.fa-mixcloud {
+ --fa: "\f289"; }
+
+.fa-flipboard {
+ --fa: "\f44d"; }
+
+.fa-viacoin {
+ --fa: "\f237"; }
+
+.fa-critical-role {
+ --fa: "\f6c9"; }
+
+.fa-sitrox {
+ --fa: "\e44a"; }
+
+.fa-discourse {
+ --fa: "\f393"; }
+
+.fa-joomla {
+ --fa: "\f1aa"; }
+
+.fa-mastodon {
+ --fa: "\f4f6"; }
+
+.fa-airbnb {
+ --fa: "\f834"; }
+
+.fa-wolf-pack-battalion {
+ --fa: "\f514"; }
+
+.fa-buy-n-large {
+ --fa: "\f8a6"; }
+
+.fa-gulp {
+ --fa: "\f3ae"; }
+
+.fa-creative-commons-sampling-plus {
+ --fa: "\f4f1"; }
+
+.fa-strava {
+ --fa: "\f428"; }
+
+.fa-ember {
+ --fa: "\f423"; }
+
+.fa-canadian-maple-leaf {
+ --fa: "\f785"; }
+
+.fa-teamspeak {
+ --fa: "\f4f9"; }
+
+.fa-pushed {
+ --fa: "\f3e1"; }
+
+.fa-wordpress-simple {
+ --fa: "\f411"; }
+
+.fa-nutritionix {
+ --fa: "\f3d6"; }
+
+.fa-wodu {
+ --fa: "\e088"; }
+
+.fa-google-pay {
+ --fa: "\e079"; }
+
+.fa-intercom {
+ --fa: "\f7af"; }
+
+.fa-zhihu {
+ --fa: "\f63f"; }
+
+.fa-korvue {
+ --fa: "\f42f"; }
+
+.fa-pix {
+ --fa: "\e43a"; }
+
+.fa-steam-symbol {
+ --fa: "\f3f6"; }
diff --git a/themes/fonts/iconFonts/fontawesome-free.less b/themes/fonts/iconFonts/fontawesome-free.less
new file mode 100644
index 000000000..a9b2ec89b
--- /dev/null
+++ b/themes/fonts/iconFonts/fontawesome-free.less
@@ -0,0 +1,6243 @@
+/*!
+ * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2024 Fonticons, Inc.
+ */
+.fa {
+ font-family: var(--fa-style-family, "Font Awesome 6 Free");
+ font-weight: var(--fa-style, 900); }
+
+.fas,
+.far,
+.fab,
+.fa-solid,
+.fa-regular,
+.fa-brands,
+.fa {
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ display: var(--fa-display, inline-block);
+ font-style: normal;
+ font-variant: normal;
+ line-height: 1;
+ text-rendering: auto; }
+
+.fas::before,
+.far::before,
+.fab::before,
+.fa-solid::before,
+.fa-regular::before,
+.fa-brands::before,
+.fa::before {
+ content: var(--fa); }
+
+.fa-classic,
+.fas,
+.fa-solid,
+.far,
+.fa-regular {
+ font-family: 'Font Awesome 6 Free'; }
+
+.fa-brands,
+.fab {
+ font-family: 'Font Awesome 6 Brands'; }
+
+.fa-1x {
+ font-size: 1em; }
+
+.fa-2x {
+ font-size: 2em; }
+
+.fa-3x {
+ font-size: 3em; }
+
+.fa-4x {
+ font-size: 4em; }
+
+.fa-5x {
+ font-size: 5em; }
+
+.fa-6x {
+ font-size: 6em; }
+
+.fa-7x {
+ font-size: 7em; }
+
+.fa-8x {
+ font-size: 8em; }
+
+.fa-9x {
+ font-size: 9em; }
+
+.fa-10x {
+ font-size: 10em; }
+
+.fa-2xs {
+ font-size: 0.625em;
+ line-height: 0.1em;
+ vertical-align: 0.225em; }
+
+.fa-xs {
+ font-size: 0.75em;
+ line-height: 0.08333em;
+ vertical-align: 0.125em; }
+
+.fa-sm {
+ font-size: 0.875em;
+ line-height: 0.07143em;
+ vertical-align: 0.05357em; }
+
+.fa-lg {
+ font-size: 1.25em;
+ line-height: 0.05em;
+ vertical-align: -0.075em; }
+
+.fa-xl {
+ font-size: 1.5em;
+ line-height: 0.04167em;
+ vertical-align: -0.125em; }
+
+.fa-2xl {
+ font-size: 2em;
+ line-height: 0.03125em;
+ vertical-align: -0.1875em; }
+
+.fa-fw {
+ text-align: center;
+ width: 1.25em; }
+
+.fa-ul {
+ list-style-type: none;
+ margin-left: var(--fa-li-margin, 2.5em);
+ padding-left: 0; }
+ .fa-ul > li {
+ position: relative; }
+
+.fa-li {
+ left: calc(-1 * var(--fa-li-width, 2em));
+ position: absolute;
+ text-align: center;
+ width: var(--fa-li-width, 2em);
+ line-height: inherit; }
+
+.fa-border {
+ border-color: var(--fa-border-color, #eee);
+ border-radius: var(--fa-border-radius, 0.1em);
+ border-style: var(--fa-border-style, solid);
+ border-width: var(--fa-border-width, 0.08em);
+ padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
+
+.fa-pull-left {
+ float: left;
+ margin-right: var(--fa-pull-margin, 0.3em); }
+
+.fa-pull-right {
+ float: right;
+ margin-left: var(--fa-pull-margin, 0.3em); }
+
+.fa-beat {
+ animation-name: fa-beat;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-bounce {
+ animation-name: fa-bounce;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
+
+.fa-fade {
+ animation-name: fa-fade;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-beat-fade {
+ animation-name: fa-beat-fade;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-flip {
+ animation-name: fa-flip;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-shake {
+ animation-name: fa-shake;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin {
+ animation-name: fa-spin;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 2s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin-reverse {
+ --fa-animation-direction: reverse; }
+
+.fa-pulse,
+.fa-spin-pulse {
+ animation-name: fa-spin;
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, steps(8)); }
+
+@media (prefers-reduced-motion: reduce) {
+ .fa-beat,
+ .fa-bounce,
+ .fa-fade,
+ .fa-beat-fade,
+ .fa-flip,
+ .fa-pulse,
+ .fa-shake,
+ .fa-spin,
+ .fa-spin-pulse {
+ animation-delay: -1ms;
+ animation-duration: 1ms;
+ animation-iteration-count: 1;
+ transition-delay: 0s;
+ transition-duration: 0s; } }
+
+@keyframes fa-beat {
+ 0%, 90% {
+ transform: scale(1); }
+ 45% {
+ transform: scale(var(--fa-beat-scale, 1.25)); } }
+
+@keyframes fa-bounce {
+ 0% {
+ transform: scale(1, 1) translateY(0); }
+ 10% {
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
+ 30% {
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
+ 50% {
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
+ 57% {
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
+ 64% {
+ transform: scale(1, 1) translateY(0); }
+ 100% {
+ transform: scale(1, 1) translateY(0); } }
+
+@keyframes fa-fade {
+ 50% {
+ opacity: var(--fa-fade-opacity, 0.4); } }
+
+@keyframes fa-beat-fade {
+ 0%, 100% {
+ opacity: var(--fa-beat-fade-opacity, 0.4);
+ transform: scale(1); }
+ 50% {
+ opacity: 1;
+ transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
+
+@keyframes fa-flip {
+ 50% {
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
+
+@keyframes fa-shake {
+ 0% {
+ transform: rotate(-15deg); }
+ 4% {
+ transform: rotate(15deg); }
+ 8%, 24% {
+ transform: rotate(-18deg); }
+ 12%, 28% {
+ transform: rotate(18deg); }
+ 16% {
+ transform: rotate(-22deg); }
+ 20% {
+ transform: rotate(22deg); }
+ 32% {
+ transform: rotate(-12deg); }
+ 36% {
+ transform: rotate(12deg); }
+ 40%, 100% {
+ transform: rotate(0deg); } }
+
+@keyframes fa-spin {
+ 0% {
+ transform: rotate(0deg); }
+ 100% {
+ transform: rotate(360deg); } }
+
+.fa-rotate-90 {
+ transform: rotate(90deg); }
+
+.fa-rotate-180 {
+ transform: rotate(180deg); }
+
+.fa-rotate-270 {
+ transform: rotate(270deg); }
+
+.fa-flip-horizontal {
+ transform: scale(-1, 1); }
+
+.fa-flip-vertical {
+ transform: scale(1, -1); }
+
+.fa-flip-both,
+.fa-flip-horizontal.fa-flip-vertical {
+ transform: scale(-1, -1); }
+
+.fa-rotate-by {
+ transform: rotate(var(--fa-rotate-angle, 0)); }
+
+.fa-stack {
+ display: inline-block;
+ height: 2em;
+ line-height: 2em;
+ position: relative;
+ vertical-align: middle;
+ width: 2.5em; }
+
+.fa-stack-1x,
+.fa-stack-2x {
+ left: 0;
+ position: absolute;
+ text-align: center;
+ width: 100%;
+ z-index: var(--fa-stack-z-index, auto); }
+
+.fa-stack-1x {
+ line-height: inherit; }
+
+.fa-stack-2x {
+ font-size: 2em; }
+
+.fa-inverse {
+ color: var(--fa-inverse, #fff); }
+
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+readers do not read off random characters that represent icons */
+
+.fa-0 {
+ --fa: "\30"; }
+
+.fa-1 {
+ --fa: "\31"; }
+
+.fa-2 {
+ --fa: "\32"; }
+
+.fa-3 {
+ --fa: "\33"; }
+
+.fa-4 {
+ --fa: "\34"; }
+
+.fa-5 {
+ --fa: "\35"; }
+
+.fa-6 {
+ --fa: "\36"; }
+
+.fa-7 {
+ --fa: "\37"; }
+
+.fa-8 {
+ --fa: "\38"; }
+
+.fa-9 {
+ --fa: "\39"; }
+
+.fa-fill-drip {
+ --fa: "\f576"; }
+
+.fa-arrows-to-circle {
+ --fa: "\e4bd"; }
+
+.fa-circle-chevron-right {
+ --fa: "\f138"; }
+
+.fa-chevron-circle-right {
+ --fa: "\f138"; }
+
+.fa-at {
+ --fa: "\40"; }
+
+.fa-trash-can {
+ --fa: "\f2ed"; }
+
+.fa-trash-alt {
+ --fa: "\f2ed"; }
+
+.fa-text-height {
+ --fa: "\f034"; }
+
+.fa-user-xmark {
+ --fa: "\f235"; }
+
+.fa-user-times {
+ --fa: "\f235"; }
+
+.fa-stethoscope {
+ --fa: "\f0f1"; }
+
+.fa-message {
+ --fa: "\f27a"; }
+
+.fa-comment-alt {
+ --fa: "\f27a"; }
+
+.fa-info {
+ --fa: "\f129"; }
+
+.fa-down-left-and-up-right-to-center {
+ --fa: "\f422"; }
+
+.fa-compress-alt {
+ --fa: "\f422"; }
+
+.fa-explosion {
+ --fa: "\e4e9"; }
+
+.fa-file-lines {
+ --fa: "\f15c"; }
+
+.fa-file-alt {
+ --fa: "\f15c"; }
+
+.fa-file-text {
+ --fa: "\f15c"; }
+
+.fa-wave-square {
+ --fa: "\f83e"; }
+
+.fa-ring {
+ --fa: "\f70b"; }
+
+.fa-building-un {
+ --fa: "\e4d9"; }
+
+.fa-dice-three {
+ --fa: "\f527"; }
+
+.fa-calendar-days {
+ --fa: "\f073"; }
+
+.fa-calendar-alt {
+ --fa: "\f073"; }
+
+.fa-anchor-circle-check {
+ --fa: "\e4aa"; }
+
+.fa-building-circle-arrow-right {
+ --fa: "\e4d1"; }
+
+.fa-volleyball {
+ --fa: "\f45f"; }
+
+.fa-volleyball-ball {
+ --fa: "\f45f"; }
+
+.fa-arrows-up-to-line {
+ --fa: "\e4c2"; }
+
+.fa-sort-down {
+ --fa: "\f0dd"; }
+
+.fa-sort-desc {
+ --fa: "\f0dd"; }
+
+.fa-circle-minus {
+ --fa: "\f056"; }
+
+.fa-minus-circle {
+ --fa: "\f056"; }
+
+.fa-door-open {
+ --fa: "\f52b"; }
+
+.fa-right-from-bracket {
+ --fa: "\f2f5"; }
+
+.fa-sign-out-alt {
+ --fa: "\f2f5"; }
+
+.fa-atom {
+ --fa: "\f5d2"; }
+
+.fa-soap {
+ --fa: "\e06e"; }
+
+.fa-icons {
+ --fa: "\f86d"; }
+
+.fa-heart-music-camera-bolt {
+ --fa: "\f86d"; }
+
+.fa-microphone-lines-slash {
+ --fa: "\f539"; }
+
+.fa-microphone-alt-slash {
+ --fa: "\f539"; }
+
+.fa-bridge-circle-check {
+ --fa: "\e4c9"; }
+
+.fa-pump-medical {
+ --fa: "\e06a"; }
+
+.fa-fingerprint {
+ --fa: "\f577"; }
+
+.fa-hand-point-right {
+ --fa: "\f0a4"; }
+
+.fa-magnifying-glass-location {
+ --fa: "\f689"; }
+
+.fa-search-location {
+ --fa: "\f689"; }
+
+.fa-forward-step {
+ --fa: "\f051"; }
+
+.fa-step-forward {
+ --fa: "\f051"; }
+
+.fa-face-smile-beam {
+ --fa: "\f5b8"; }
+
+.fa-smile-beam {
+ --fa: "\f5b8"; }
+
+.fa-flag-checkered {
+ --fa: "\f11e"; }
+
+.fa-football {
+ --fa: "\f44e"; }
+
+.fa-football-ball {
+ --fa: "\f44e"; }
+
+.fa-school-circle-exclamation {
+ --fa: "\e56c"; }
+
+.fa-crop {
+ --fa: "\f125"; }
+
+.fa-angles-down {
+ --fa: "\f103"; }
+
+.fa-angle-double-down {
+ --fa: "\f103"; }
+
+.fa-users-rectangle {
+ --fa: "\e594"; }
+
+.fa-people-roof {
+ --fa: "\e537"; }
+
+.fa-people-line {
+ --fa: "\e534"; }
+
+.fa-beer-mug-empty {
+ --fa: "\f0fc"; }
+
+.fa-beer {
+ --fa: "\f0fc"; }
+
+.fa-diagram-predecessor {
+ --fa: "\e477"; }
+
+.fa-arrow-up-long {
+ --fa: "\f176"; }
+
+.fa-long-arrow-up {
+ --fa: "\f176"; }
+
+.fa-fire-flame-simple {
+ --fa: "\f46a"; }
+
+.fa-burn {
+ --fa: "\f46a"; }
+
+.fa-person {
+ --fa: "\f183"; }
+
+.fa-male {
+ --fa: "\f183"; }
+
+.fa-laptop {
+ --fa: "\f109"; }
+
+.fa-file-csv {
+ --fa: "\f6dd"; }
+
+.fa-menorah {
+ --fa: "\f676"; }
+
+.fa-truck-plane {
+ --fa: "\e58f"; }
+
+.fa-record-vinyl {
+ --fa: "\f8d9"; }
+
+.fa-face-grin-stars {
+ --fa: "\f587"; }
+
+.fa-grin-stars {
+ --fa: "\f587"; }
+
+.fa-bong {
+ --fa: "\f55c"; }
+
+.fa-spaghetti-monster-flying {
+ --fa: "\f67b"; }
+
+.fa-pastafarianism {
+ --fa: "\f67b"; }
+
+.fa-arrow-down-up-across-line {
+ --fa: "\e4af"; }
+
+.fa-spoon {
+ --fa: "\f2e5"; }
+
+.fa-utensil-spoon {
+ --fa: "\f2e5"; }
+
+.fa-jar-wheat {
+ --fa: "\e517"; }
+
+.fa-envelopes-bulk {
+ --fa: "\f674"; }
+
+.fa-mail-bulk {
+ --fa: "\f674"; }
+
+.fa-file-circle-exclamation {
+ --fa: "\e4eb"; }
+
+.fa-circle-h {
+ --fa: "\f47e"; }
+
+.fa-hospital-symbol {
+ --fa: "\f47e"; }
+
+.fa-pager {
+ --fa: "\f815"; }
+
+.fa-address-book {
+ --fa: "\f2b9"; }
+
+.fa-contact-book {
+ --fa: "\f2b9"; }
+
+.fa-strikethrough {
+ --fa: "\f0cc"; }
+
+.fa-k {
+ --fa: "\4b"; }
+
+.fa-landmark-flag {
+ --fa: "\e51c"; }
+
+.fa-pencil {
+ --fa: "\f303"; }
+
+.fa-pencil-alt {
+ --fa: "\f303"; }
+
+.fa-backward {
+ --fa: "\f04a"; }
+
+.fa-caret-right {
+ --fa: "\f0da"; }
+
+.fa-comments {
+ --fa: "\f086"; }
+
+.fa-paste {
+ --fa: "\f0ea"; }
+
+.fa-file-clipboard {
+ --fa: "\f0ea"; }
+
+.fa-code-pull-request {
+ --fa: "\e13c"; }
+
+.fa-clipboard-list {
+ --fa: "\f46d"; }
+
+.fa-truck-ramp-box {
+ --fa: "\f4de"; }
+
+.fa-truck-loading {
+ --fa: "\f4de"; }
+
+.fa-user-check {
+ --fa: "\f4fc"; }
+
+.fa-vial-virus {
+ --fa: "\e597"; }
+
+.fa-sheet-plastic {
+ --fa: "\e571"; }
+
+.fa-blog {
+ --fa: "\f781"; }
+
+.fa-user-ninja {
+ --fa: "\f504"; }
+
+.fa-person-arrow-up-from-line {
+ --fa: "\e539"; }
+
+.fa-scroll-torah {
+ --fa: "\f6a0"; }
+
+.fa-torah {
+ --fa: "\f6a0"; }
+
+.fa-broom-ball {
+ --fa: "\f458"; }
+
+.fa-quidditch {
+ --fa: "\f458"; }
+
+.fa-quidditch-broom-ball {
+ --fa: "\f458"; }
+
+.fa-toggle-off {
+ --fa: "\f204"; }
+
+.fa-box-archive {
+ --fa: "\f187"; }
+
+.fa-archive {
+ --fa: "\f187"; }
+
+.fa-person-drowning {
+ --fa: "\e545"; }
+
+.fa-arrow-down-9-1 {
+ --fa: "\f886"; }
+
+.fa-sort-numeric-desc {
+ --fa: "\f886"; }
+
+.fa-sort-numeric-down-alt {
+ --fa: "\f886"; }
+
+.fa-face-grin-tongue-squint {
+ --fa: "\f58a"; }
+
+.fa-grin-tongue-squint {
+ --fa: "\f58a"; }
+
+.fa-spray-can {
+ --fa: "\f5bd"; }
+
+.fa-truck-monster {
+ --fa: "\f63b"; }
+
+.fa-w {
+ --fa: "\57"; }
+
+.fa-earth-africa {
+ --fa: "\f57c"; }
+
+.fa-globe-africa {
+ --fa: "\f57c"; }
+
+.fa-rainbow {
+ --fa: "\f75b"; }
+
+.fa-circle-notch {
+ --fa: "\f1ce"; }
+
+.fa-tablet-screen-button {
+ --fa: "\f3fa"; }
+
+.fa-tablet-alt {
+ --fa: "\f3fa"; }
+
+.fa-paw {
+ --fa: "\f1b0"; }
+
+.fa-cloud {
+ --fa: "\f0c2"; }
+
+.fa-trowel-bricks {
+ --fa: "\e58a"; }
+
+.fa-face-flushed {
+ --fa: "\f579"; }
+
+.fa-flushed {
+ --fa: "\f579"; }
+
+.fa-hospital-user {
+ --fa: "\f80d"; }
+
+.fa-tent-arrow-left-right {
+ --fa: "\e57f"; }
+
+.fa-gavel {
+ --fa: "\f0e3"; }
+
+.fa-legal {
+ --fa: "\f0e3"; }
+
+.fa-binoculars {
+ --fa: "\f1e5"; }
+
+.fa-microphone-slash {
+ --fa: "\f131"; }
+
+.fa-box-tissue {
+ --fa: "\e05b"; }
+
+.fa-motorcycle {
+ --fa: "\f21c"; }
+
+.fa-bell-concierge {
+ --fa: "\f562"; }
+
+.fa-concierge-bell {
+ --fa: "\f562"; }
+
+.fa-pen-ruler {
+ --fa: "\f5ae"; }
+
+.fa-pencil-ruler {
+ --fa: "\f5ae"; }
+
+.fa-people-arrows {
+ --fa: "\e068"; }
+
+.fa-people-arrows-left-right {
+ --fa: "\e068"; }
+
+.fa-mars-and-venus-burst {
+ --fa: "\e523"; }
+
+.fa-square-caret-right {
+ --fa: "\f152"; }
+
+.fa-caret-square-right {
+ --fa: "\f152"; }
+
+.fa-scissors {
+ --fa: "\f0c4"; }
+
+.fa-cut {
+ --fa: "\f0c4"; }
+
+.fa-sun-plant-wilt {
+ --fa: "\e57a"; }
+
+.fa-toilets-portable {
+ --fa: "\e584"; }
+
+.fa-hockey-puck {
+ --fa: "\f453"; }
+
+.fa-table {
+ --fa: "\f0ce"; }
+
+.fa-magnifying-glass-arrow-right {
+ --fa: "\e521"; }
+
+.fa-tachograph-digital {
+ --fa: "\f566"; }
+
+.fa-digital-tachograph {
+ --fa: "\f566"; }
+
+.fa-users-slash {
+ --fa: "\e073"; }
+
+.fa-clover {
+ --fa: "\e139"; }
+
+.fa-reply {
+ --fa: "\f3e5"; }
+
+.fa-mail-reply {
+ --fa: "\f3e5"; }
+
+.fa-star-and-crescent {
+ --fa: "\f699"; }
+
+.fa-house-fire {
+ --fa: "\e50c"; }
+
+.fa-square-minus {
+ --fa: "\f146"; }
+
+.fa-minus-square {
+ --fa: "\f146"; }
+
+.fa-helicopter {
+ --fa: "\f533"; }
+
+.fa-compass {
+ --fa: "\f14e"; }
+
+.fa-square-caret-down {
+ --fa: "\f150"; }
+
+.fa-caret-square-down {
+ --fa: "\f150"; }
+
+.fa-file-circle-question {
+ --fa: "\e4ef"; }
+
+.fa-laptop-code {
+ --fa: "\f5fc"; }
+
+.fa-swatchbook {
+ --fa: "\f5c3"; }
+
+.fa-prescription-bottle {
+ --fa: "\f485"; }
+
+.fa-bars {
+ --fa: "\f0c9"; }
+
+.fa-navicon {
+ --fa: "\f0c9"; }
+
+.fa-people-group {
+ --fa: "\e533"; }
+
+.fa-hourglass-end {
+ --fa: "\f253"; }
+
+.fa-hourglass-3 {
+ --fa: "\f253"; }
+
+.fa-heart-crack {
+ --fa: "\f7a9"; }
+
+.fa-heart-broken {
+ --fa: "\f7a9"; }
+
+.fa-square-up-right {
+ --fa: "\f360"; }
+
+.fa-external-link-square-alt {
+ --fa: "\f360"; }
+
+.fa-face-kiss-beam {
+ --fa: "\f597"; }
+
+.fa-kiss-beam {
+ --fa: "\f597"; }
+
+.fa-film {
+ --fa: "\f008"; }
+
+.fa-ruler-horizontal {
+ --fa: "\f547"; }
+
+.fa-people-robbery {
+ --fa: "\e536"; }
+
+.fa-lightbulb {
+ --fa: "\f0eb"; }
+
+.fa-caret-left {
+ --fa: "\f0d9"; }
+
+.fa-circle-exclamation {
+ --fa: "\f06a"; }
+
+.fa-exclamation-circle {
+ --fa: "\f06a"; }
+
+.fa-school-circle-xmark {
+ --fa: "\e56d"; }
+
+.fa-arrow-right-from-bracket {
+ --fa: "\f08b"; }
+
+.fa-sign-out {
+ --fa: "\f08b"; }
+
+.fa-circle-chevron-down {
+ --fa: "\f13a"; }
+
+.fa-chevron-circle-down {
+ --fa: "\f13a"; }
+
+.fa-unlock-keyhole {
+ --fa: "\f13e"; }
+
+.fa-unlock-alt {
+ --fa: "\f13e"; }
+
+.fa-cloud-showers-heavy {
+ --fa: "\f740"; }
+
+.fa-headphones-simple {
+ --fa: "\f58f"; }
+
+.fa-headphones-alt {
+ --fa: "\f58f"; }
+
+.fa-sitemap {
+ --fa: "\f0e8"; }
+
+.fa-circle-dollar-to-slot {
+ --fa: "\f4b9"; }
+
+.fa-donate {
+ --fa: "\f4b9"; }
+
+.fa-memory {
+ --fa: "\f538"; }
+
+.fa-road-spikes {
+ --fa: "\e568"; }
+
+.fa-fire-burner {
+ --fa: "\e4f1"; }
+
+.fa-flag {
+ --fa: "\f024"; }
+
+.fa-hanukiah {
+ --fa: "\f6e6"; }
+
+.fa-feather {
+ --fa: "\f52d"; }
+
+.fa-volume-low {
+ --fa: "\f027"; }
+
+.fa-volume-down {
+ --fa: "\f027"; }
+
+.fa-comment-slash {
+ --fa: "\f4b3"; }
+
+.fa-cloud-sun-rain {
+ --fa: "\f743"; }
+
+.fa-compress {
+ --fa: "\f066"; }
+
+.fa-wheat-awn {
+ --fa: "\e2cd"; }
+
+.fa-wheat-alt {
+ --fa: "\e2cd"; }
+
+.fa-ankh {
+ --fa: "\f644"; }
+
+.fa-hands-holding-child {
+ --fa: "\e4fa"; }
+
+.fa-asterisk {
+ --fa: "\2a"; }
+
+.fa-square-check {
+ --fa: "\f14a"; }
+
+.fa-check-square {
+ --fa: "\f14a"; }
+
+.fa-peseta-sign {
+ --fa: "\e221"; }
+
+.fa-heading {
+ --fa: "\f1dc"; }
+
+.fa-header {
+ --fa: "\f1dc"; }
+
+.fa-ghost {
+ --fa: "\f6e2"; }
+
+.fa-list {
+ --fa: "\f03a"; }
+
+.fa-list-squares {
+ --fa: "\f03a"; }
+
+.fa-square-phone-flip {
+ --fa: "\f87b"; }
+
+.fa-phone-square-alt {
+ --fa: "\f87b"; }
+
+.fa-cart-plus {
+ --fa: "\f217"; }
+
+.fa-gamepad {
+ --fa: "\f11b"; }
+
+.fa-circle-dot {
+ --fa: "\f192"; }
+
+.fa-dot-circle {
+ --fa: "\f192"; }
+
+.fa-face-dizzy {
+ --fa: "\f567"; }
+
+.fa-dizzy {
+ --fa: "\f567"; }
+
+.fa-egg {
+ --fa: "\f7fb"; }
+
+.fa-house-medical-circle-xmark {
+ --fa: "\e513"; }
+
+.fa-campground {
+ --fa: "\f6bb"; }
+
+.fa-folder-plus {
+ --fa: "\f65e"; }
+
+.fa-futbol {
+ --fa: "\f1e3"; }
+
+.fa-futbol-ball {
+ --fa: "\f1e3"; }
+
+.fa-soccer-ball {
+ --fa: "\f1e3"; }
+
+.fa-paintbrush {
+ --fa: "\f1fc"; }
+
+.fa-paint-brush {
+ --fa: "\f1fc"; }
+
+.fa-lock {
+ --fa: "\f023"; }
+
+.fa-gas-pump {
+ --fa: "\f52f"; }
+
+.fa-hot-tub-person {
+ --fa: "\f593"; }
+
+.fa-hot-tub {
+ --fa: "\f593"; }
+
+.fa-map-location {
+ --fa: "\f59f"; }
+
+.fa-map-marked {
+ --fa: "\f59f"; }
+
+.fa-house-flood-water {
+ --fa: "\e50e"; }
+
+.fa-tree {
+ --fa: "\f1bb"; }
+
+.fa-bridge-lock {
+ --fa: "\e4cc"; }
+
+.fa-sack-dollar {
+ --fa: "\f81d"; }
+
+.fa-pen-to-square {
+ --fa: "\f044"; }
+
+.fa-edit {
+ --fa: "\f044"; }
+
+.fa-car-side {
+ --fa: "\f5e4"; }
+
+.fa-share-nodes {
+ --fa: "\f1e0"; }
+
+.fa-share-alt {
+ --fa: "\f1e0"; }
+
+.fa-heart-circle-minus {
+ --fa: "\e4ff"; }
+
+.fa-hourglass-half {
+ --fa: "\f252"; }
+
+.fa-hourglass-2 {
+ --fa: "\f252"; }
+
+.fa-microscope {
+ --fa: "\f610"; }
+
+.fa-sink {
+ --fa: "\e06d"; }
+
+.fa-bag-shopping {
+ --fa: "\f290"; }
+
+.fa-shopping-bag {
+ --fa: "\f290"; }
+
+.fa-arrow-down-z-a {
+ --fa: "\f881"; }
+
+.fa-sort-alpha-desc {
+ --fa: "\f881"; }
+
+.fa-sort-alpha-down-alt {
+ --fa: "\f881"; }
+
+.fa-mitten {
+ --fa: "\f7b5"; }
+
+.fa-person-rays {
+ --fa: "\e54d"; }
+
+.fa-users {
+ --fa: "\f0c0"; }
+
+.fa-eye-slash {
+ --fa: "\f070"; }
+
+.fa-flask-vial {
+ --fa: "\e4f3"; }
+
+.fa-hand {
+ --fa: "\f256"; }
+
+.fa-hand-paper {
+ --fa: "\f256"; }
+
+.fa-om {
+ --fa: "\f679"; }
+
+.fa-worm {
+ --fa: "\e599"; }
+
+.fa-house-circle-xmark {
+ --fa: "\e50b"; }
+
+.fa-plug {
+ --fa: "\f1e6"; }
+
+.fa-chevron-up {
+ --fa: "\f077"; }
+
+.fa-hand-spock {
+ --fa: "\f259"; }
+
+.fa-stopwatch {
+ --fa: "\f2f2"; }
+
+.fa-face-kiss {
+ --fa: "\f596"; }
+
+.fa-kiss {
+ --fa: "\f596"; }
+
+.fa-bridge-circle-xmark {
+ --fa: "\e4cb"; }
+
+.fa-face-grin-tongue {
+ --fa: "\f589"; }
+
+.fa-grin-tongue {
+ --fa: "\f589"; }
+
+.fa-chess-bishop {
+ --fa: "\f43a"; }
+
+.fa-face-grin-wink {
+ --fa: "\f58c"; }
+
+.fa-grin-wink {
+ --fa: "\f58c"; }
+
+.fa-ear-deaf {
+ --fa: "\f2a4"; }
+
+.fa-deaf {
+ --fa: "\f2a4"; }
+
+.fa-deafness {
+ --fa: "\f2a4"; }
+
+.fa-hard-of-hearing {
+ --fa: "\f2a4"; }
+
+.fa-road-circle-check {
+ --fa: "\e564"; }
+
+.fa-dice-five {
+ --fa: "\f523"; }
+
+.fa-square-rss {
+ --fa: "\f143"; }
+
+.fa-rss-square {
+ --fa: "\f143"; }
+
+.fa-land-mine-on {
+ --fa: "\e51b"; }
+
+.fa-i-cursor {
+ --fa: "\f246"; }
+
+.fa-stamp {
+ --fa: "\f5bf"; }
+
+.fa-stairs {
+ --fa: "\e289"; }
+
+.fa-i {
+ --fa: "\49"; }
+
+.fa-hryvnia-sign {
+ --fa: "\f6f2"; }
+
+.fa-hryvnia {
+ --fa: "\f6f2"; }
+
+.fa-pills {
+ --fa: "\f484"; }
+
+.fa-face-grin-wide {
+ --fa: "\f581"; }
+
+.fa-grin-alt {
+ --fa: "\f581"; }
+
+.fa-tooth {
+ --fa: "\f5c9"; }
+
+.fa-v {
+ --fa: "\56"; }
+
+.fa-bangladeshi-taka-sign {
+ --fa: "\e2e6"; }
+
+.fa-bicycle {
+ --fa: "\f206"; }
+
+.fa-staff-snake {
+ --fa: "\e579"; }
+
+.fa-rod-asclepius {
+ --fa: "\e579"; }
+
+.fa-rod-snake {
+ --fa: "\e579"; }
+
+.fa-staff-aesculapius {
+ --fa: "\e579"; }
+
+.fa-head-side-cough-slash {
+ --fa: "\e062"; }
+
+.fa-truck-medical {
+ --fa: "\f0f9"; }
+
+.fa-ambulance {
+ --fa: "\f0f9"; }
+
+.fa-wheat-awn-circle-exclamation {
+ --fa: "\e598"; }
+
+.fa-snowman {
+ --fa: "\f7d0"; }
+
+.fa-mortar-pestle {
+ --fa: "\f5a7"; }
+
+.fa-road-barrier {
+ --fa: "\e562"; }
+
+.fa-school {
+ --fa: "\f549"; }
+
+.fa-igloo {
+ --fa: "\f7ae"; }
+
+.fa-joint {
+ --fa: "\f595"; }
+
+.fa-angle-right {
+ --fa: "\f105"; }
+
+.fa-horse {
+ --fa: "\f6f0"; }
+
+.fa-q {
+ --fa: "\51"; }
+
+.fa-g {
+ --fa: "\47"; }
+
+.fa-notes-medical {
+ --fa: "\f481"; }
+
+.fa-temperature-half {
+ --fa: "\f2c9"; }
+
+.fa-temperature-2 {
+ --fa: "\f2c9"; }
+
+.fa-thermometer-2 {
+ --fa: "\f2c9"; }
+
+.fa-thermometer-half {
+ --fa: "\f2c9"; }
+
+.fa-dong-sign {
+ --fa: "\e169"; }
+
+.fa-capsules {
+ --fa: "\f46b"; }
+
+.fa-poo-storm {
+ --fa: "\f75a"; }
+
+.fa-poo-bolt {
+ --fa: "\f75a"; }
+
+.fa-face-frown-open {
+ --fa: "\f57a"; }
+
+.fa-frown-open {
+ --fa: "\f57a"; }
+
+.fa-hand-point-up {
+ --fa: "\f0a6"; }
+
+.fa-money-bill {
+ --fa: "\f0d6"; }
+
+.fa-bookmark {
+ --fa: "\f02e"; }
+
+.fa-align-justify {
+ --fa: "\f039"; }
+
+.fa-umbrella-beach {
+ --fa: "\f5ca"; }
+
+.fa-helmet-un {
+ --fa: "\e503"; }
+
+.fa-bullseye {
+ --fa: "\f140"; }
+
+.fa-bacon {
+ --fa: "\f7e5"; }
+
+.fa-hand-point-down {
+ --fa: "\f0a7"; }
+
+.fa-arrow-up-from-bracket {
+ --fa: "\e09a"; }
+
+.fa-folder {
+ --fa: "\f07b"; }
+
+.fa-folder-blank {
+ --fa: "\f07b"; }
+
+.fa-file-waveform {
+ --fa: "\f478"; }
+
+.fa-file-medical-alt {
+ --fa: "\f478"; }
+
+.fa-radiation {
+ --fa: "\f7b9"; }
+
+.fa-chart-simple {
+ --fa: "\e473"; }
+
+.fa-mars-stroke {
+ --fa: "\f229"; }
+
+.fa-vial {
+ --fa: "\f492"; }
+
+.fa-gauge {
+ --fa: "\f624"; }
+
+.fa-dashboard {
+ --fa: "\f624"; }
+
+.fa-gauge-med {
+ --fa: "\f624"; }
+
+.fa-tachometer-alt-average {
+ --fa: "\f624"; }
+
+.fa-wand-magic-sparkles {
+ --fa: "\e2ca"; }
+
+.fa-magic-wand-sparkles {
+ --fa: "\e2ca"; }
+
+.fa-e {
+ --fa: "\45"; }
+
+.fa-pen-clip {
+ --fa: "\f305"; }
+
+.fa-pen-alt {
+ --fa: "\f305"; }
+
+.fa-bridge-circle-exclamation {
+ --fa: "\e4ca"; }
+
+.fa-user {
+ --fa: "\f007"; }
+
+.fa-school-circle-check {
+ --fa: "\e56b"; }
+
+.fa-dumpster {
+ --fa: "\f793"; }
+
+.fa-van-shuttle {
+ --fa: "\f5b6"; }
+
+.fa-shuttle-van {
+ --fa: "\f5b6"; }
+
+.fa-building-user {
+ --fa: "\e4da"; }
+
+.fa-square-caret-left {
+ --fa: "\f191"; }
+
+.fa-caret-square-left {
+ --fa: "\f191"; }
+
+.fa-highlighter {
+ --fa: "\f591"; }
+
+.fa-key {
+ --fa: "\f084"; }
+
+.fa-bullhorn {
+ --fa: "\f0a1"; }
+
+.fa-globe {
+ --fa: "\f0ac"; }
+
+.fa-synagogue {
+ --fa: "\f69b"; }
+
+.fa-person-half-dress {
+ --fa: "\e548"; }
+
+.fa-road-bridge {
+ --fa: "\e563"; }
+
+.fa-location-arrow {
+ --fa: "\f124"; }
+
+.fa-c {
+ --fa: "\43"; }
+
+.fa-tablet-button {
+ --fa: "\f10a"; }
+
+.fa-building-lock {
+ --fa: "\e4d6"; }
+
+.fa-pizza-slice {
+ --fa: "\f818"; }
+
+.fa-money-bill-wave {
+ --fa: "\f53a"; }
+
+.fa-chart-area {
+ --fa: "\f1fe"; }
+
+.fa-area-chart {
+ --fa: "\f1fe"; }
+
+.fa-house-flag {
+ --fa: "\e50d"; }
+
+.fa-person-circle-minus {
+ --fa: "\e540"; }
+
+.fa-ban {
+ --fa: "\f05e"; }
+
+.fa-cancel {
+ --fa: "\f05e"; }
+
+.fa-camera-rotate {
+ --fa: "\e0d8"; }
+
+.fa-spray-can-sparkles {
+ --fa: "\f5d0"; }
+
+.fa-air-freshener {
+ --fa: "\f5d0"; }
+
+.fa-star {
+ --fa: "\f005"; }
+
+.fa-repeat {
+ --fa: "\f363"; }
+
+.fa-cross {
+ --fa: "\f654"; }
+
+.fa-box {
+ --fa: "\f466"; }
+
+.fa-venus-mars {
+ --fa: "\f228"; }
+
+.fa-arrow-pointer {
+ --fa: "\f245"; }
+
+.fa-mouse-pointer {
+ --fa: "\f245"; }
+
+.fa-maximize {
+ --fa: "\f31e"; }
+
+.fa-expand-arrows-alt {
+ --fa: "\f31e"; }
+
+.fa-charging-station {
+ --fa: "\f5e7"; }
+
+.fa-shapes {
+ --fa: "\f61f"; }
+
+.fa-triangle-circle-square {
+ --fa: "\f61f"; }
+
+.fa-shuffle {
+ --fa: "\f074"; }
+
+.fa-random {
+ --fa: "\f074"; }
+
+.fa-person-running {
+ --fa: "\f70c"; }
+
+.fa-running {
+ --fa: "\f70c"; }
+
+.fa-mobile-retro {
+ --fa: "\e527"; }
+
+.fa-grip-lines-vertical {
+ --fa: "\f7a5"; }
+
+.fa-spider {
+ --fa: "\f717"; }
+
+.fa-hands-bound {
+ --fa: "\e4f9"; }
+
+.fa-file-invoice-dollar {
+ --fa: "\f571"; }
+
+.fa-plane-circle-exclamation {
+ --fa: "\e556"; }
+
+.fa-x-ray {
+ --fa: "\f497"; }
+
+.fa-spell-check {
+ --fa: "\f891"; }
+
+.fa-slash {
+ --fa: "\f715"; }
+
+.fa-computer-mouse {
+ --fa: "\f8cc"; }
+
+.fa-mouse {
+ --fa: "\f8cc"; }
+
+.fa-arrow-right-to-bracket {
+ --fa: "\f090"; }
+
+.fa-sign-in {
+ --fa: "\f090"; }
+
+.fa-shop-slash {
+ --fa: "\e070"; }
+
+.fa-store-alt-slash {
+ --fa: "\e070"; }
+
+.fa-server {
+ --fa: "\f233"; }
+
+.fa-virus-covid-slash {
+ --fa: "\e4a9"; }
+
+.fa-shop-lock {
+ --fa: "\e4a5"; }
+
+.fa-hourglass-start {
+ --fa: "\f251"; }
+
+.fa-hourglass-1 {
+ --fa: "\f251"; }
+
+.fa-blender-phone {
+ --fa: "\f6b6"; }
+
+.fa-building-wheat {
+ --fa: "\e4db"; }
+
+.fa-person-breastfeeding {
+ --fa: "\e53a"; }
+
+.fa-right-to-bracket {
+ --fa: "\f2f6"; }
+
+.fa-sign-in-alt {
+ --fa: "\f2f6"; }
+
+.fa-venus {
+ --fa: "\f221"; }
+
+.fa-passport {
+ --fa: "\f5ab"; }
+
+.fa-thumbtack-slash {
+ --fa: "\e68f"; }
+
+.fa-thumb-tack-slash {
+ --fa: "\e68f"; }
+
+.fa-heart-pulse {
+ --fa: "\f21e"; }
+
+.fa-heartbeat {
+ --fa: "\f21e"; }
+
+.fa-people-carry-box {
+ --fa: "\f4ce"; }
+
+.fa-people-carry {
+ --fa: "\f4ce"; }
+
+.fa-temperature-high {
+ --fa: "\f769"; }
+
+.fa-microchip {
+ --fa: "\f2db"; }
+
+.fa-crown {
+ --fa: "\f521"; }
+
+.fa-weight-hanging {
+ --fa: "\f5cd"; }
+
+.fa-xmarks-lines {
+ --fa: "\e59a"; }
+
+.fa-file-prescription {
+ --fa: "\f572"; }
+
+.fa-weight-scale {
+ --fa: "\f496"; }
+
+.fa-weight {
+ --fa: "\f496"; }
+
+.fa-user-group {
+ --fa: "\f500"; }
+
+.fa-user-friends {
+ --fa: "\f500"; }
+
+.fa-arrow-up-a-z {
+ --fa: "\f15e"; }
+
+.fa-sort-alpha-up {
+ --fa: "\f15e"; }
+
+.fa-chess-knight {
+ --fa: "\f441"; }
+
+.fa-face-laugh-squint {
+ --fa: "\f59b"; }
+
+.fa-laugh-squint {
+ --fa: "\f59b"; }
+
+.fa-wheelchair {
+ --fa: "\f193"; }
+
+.fa-circle-arrow-up {
+ --fa: "\f0aa"; }
+
+.fa-arrow-circle-up {
+ --fa: "\f0aa"; }
+
+.fa-toggle-on {
+ --fa: "\f205"; }
+
+.fa-person-walking {
+ --fa: "\f554"; }
+
+.fa-walking {
+ --fa: "\f554"; }
+
+.fa-l {
+ --fa: "\4c"; }
+
+.fa-fire {
+ --fa: "\f06d"; }
+
+.fa-bed-pulse {
+ --fa: "\f487"; }
+
+.fa-procedures {
+ --fa: "\f487"; }
+
+.fa-shuttle-space {
+ --fa: "\f197"; }
+
+.fa-space-shuttle {
+ --fa: "\f197"; }
+
+.fa-face-laugh {
+ --fa: "\f599"; }
+
+.fa-laugh {
+ --fa: "\f599"; }
+
+.fa-folder-open {
+ --fa: "\f07c"; }
+
+.fa-heart-circle-plus {
+ --fa: "\e500"; }
+
+.fa-code-fork {
+ --fa: "\e13b"; }
+
+.fa-city {
+ --fa: "\f64f"; }
+
+.fa-microphone-lines {
+ --fa: "\f3c9"; }
+
+.fa-microphone-alt {
+ --fa: "\f3c9"; }
+
+.fa-pepper-hot {
+ --fa: "\f816"; }
+
+.fa-unlock {
+ --fa: "\f09c"; }
+
+.fa-colon-sign {
+ --fa: "\e140"; }
+
+.fa-headset {
+ --fa: "\f590"; }
+
+.fa-store-slash {
+ --fa: "\e071"; }
+
+.fa-road-circle-xmark {
+ --fa: "\e566"; }
+
+.fa-user-minus {
+ --fa: "\f503"; }
+
+.fa-mars-stroke-up {
+ --fa: "\f22a"; }
+
+.fa-mars-stroke-v {
+ --fa: "\f22a"; }
+
+.fa-champagne-glasses {
+ --fa: "\f79f"; }
+
+.fa-glass-cheers {
+ --fa: "\f79f"; }
+
+.fa-clipboard {
+ --fa: "\f328"; }
+
+.fa-house-circle-exclamation {
+ --fa: "\e50a"; }
+
+.fa-file-arrow-up {
+ --fa: "\f574"; }
+
+.fa-file-upload {
+ --fa: "\f574"; }
+
+.fa-wifi {
+ --fa: "\f1eb"; }
+
+.fa-wifi-3 {
+ --fa: "\f1eb"; }
+
+.fa-wifi-strong {
+ --fa: "\f1eb"; }
+
+.fa-bath {
+ --fa: "\f2cd"; }
+
+.fa-bathtub {
+ --fa: "\f2cd"; }
+
+.fa-underline {
+ --fa: "\f0cd"; }
+
+.fa-user-pen {
+ --fa: "\f4ff"; }
+
+.fa-user-edit {
+ --fa: "\f4ff"; }
+
+.fa-signature {
+ --fa: "\f5b7"; }
+
+.fa-stroopwafel {
+ --fa: "\f551"; }
+
+.fa-bold {
+ --fa: "\f032"; }
+
+.fa-anchor-lock {
+ --fa: "\e4ad"; }
+
+.fa-building-ngo {
+ --fa: "\e4d7"; }
+
+.fa-manat-sign {
+ --fa: "\e1d5"; }
+
+.fa-not-equal {
+ --fa: "\f53e"; }
+
+.fa-border-top-left {
+ --fa: "\f853"; }
+
+.fa-border-style {
+ --fa: "\f853"; }
+
+.fa-map-location-dot {
+ --fa: "\f5a0"; }
+
+.fa-map-marked-alt {
+ --fa: "\f5a0"; }
+
+.fa-jedi {
+ --fa: "\f669"; }
+
+.fa-square-poll-vertical {
+ --fa: "\f681"; }
+
+.fa-poll {
+ --fa: "\f681"; }
+
+.fa-mug-hot {
+ --fa: "\f7b6"; }
+
+.fa-car-battery {
+ --fa: "\f5df"; }
+
+.fa-battery-car {
+ --fa: "\f5df"; }
+
+.fa-gift {
+ --fa: "\f06b"; }
+
+.fa-dice-two {
+ --fa: "\f528"; }
+
+.fa-chess-queen {
+ --fa: "\f445"; }
+
+.fa-glasses {
+ --fa: "\f530"; }
+
+.fa-chess-board {
+ --fa: "\f43c"; }
+
+.fa-building-circle-check {
+ --fa: "\e4d2"; }
+
+.fa-person-chalkboard {
+ --fa: "\e53d"; }
+
+.fa-mars-stroke-right {
+ --fa: "\f22b"; }
+
+.fa-mars-stroke-h {
+ --fa: "\f22b"; }
+
+.fa-hand-back-fist {
+ --fa: "\f255"; }
+
+.fa-hand-rock {
+ --fa: "\f255"; }
+
+.fa-square-caret-up {
+ --fa: "\f151"; }
+
+.fa-caret-square-up {
+ --fa: "\f151"; }
+
+.fa-cloud-showers-water {
+ --fa: "\e4e4"; }
+
+.fa-chart-bar {
+ --fa: "\f080"; }
+
+.fa-bar-chart {
+ --fa: "\f080"; }
+
+.fa-hands-bubbles {
+ --fa: "\e05e"; }
+
+.fa-hands-wash {
+ --fa: "\e05e"; }
+
+.fa-less-than-equal {
+ --fa: "\f537"; }
+
+.fa-train {
+ --fa: "\f238"; }
+
+.fa-eye-low-vision {
+ --fa: "\f2a8"; }
+
+.fa-low-vision {
+ --fa: "\f2a8"; }
+
+.fa-crow {
+ --fa: "\f520"; }
+
+.fa-sailboat {
+ --fa: "\e445"; }
+
+.fa-window-restore {
+ --fa: "\f2d2"; }
+
+.fa-square-plus {
+ --fa: "\f0fe"; }
+
+.fa-plus-square {
+ --fa: "\f0fe"; }
+
+.fa-torii-gate {
+ --fa: "\f6a1"; }
+
+.fa-frog {
+ --fa: "\f52e"; }
+
+.fa-bucket {
+ --fa: "\e4cf"; }
+
+.fa-image {
+ --fa: "\f03e"; }
+
+.fa-microphone {
+ --fa: "\f130"; }
+
+.fa-cow {
+ --fa: "\f6c8"; }
+
+.fa-caret-up {
+ --fa: "\f0d8"; }
+
+.fa-screwdriver {
+ --fa: "\f54a"; }
+
+.fa-folder-closed {
+ --fa: "\e185"; }
+
+.fa-house-tsunami {
+ --fa: "\e515"; }
+
+.fa-square-nfi {
+ --fa: "\e576"; }
+
+.fa-arrow-up-from-ground-water {
+ --fa: "\e4b5"; }
+
+.fa-martini-glass {
+ --fa: "\f57b"; }
+
+.fa-glass-martini-alt {
+ --fa: "\f57b"; }
+
+.fa-square-binary {
+ --fa: "\e69b"; }
+
+.fa-rotate-left {
+ --fa: "\f2ea"; }
+
+.fa-rotate-back {
+ --fa: "\f2ea"; }
+
+.fa-rotate-backward {
+ --fa: "\f2ea"; }
+
+.fa-undo-alt {
+ --fa: "\f2ea"; }
+
+.fa-table-columns {
+ --fa: "\f0db"; }
+
+.fa-columns {
+ --fa: "\f0db"; }
+
+.fa-lemon {
+ --fa: "\f094"; }
+
+.fa-head-side-mask {
+ --fa: "\e063"; }
+
+.fa-handshake {
+ --fa: "\f2b5"; }
+
+.fa-gem {
+ --fa: "\f3a5"; }
+
+.fa-dolly {
+ --fa: "\f472"; }
+
+.fa-dolly-box {
+ --fa: "\f472"; }
+
+.fa-smoking {
+ --fa: "\f48d"; }
+
+.fa-minimize {
+ --fa: "\f78c"; }
+
+.fa-compress-arrows-alt {
+ --fa: "\f78c"; }
+
+.fa-monument {
+ --fa: "\f5a6"; }
+
+.fa-snowplow {
+ --fa: "\f7d2"; }
+
+.fa-angles-right {
+ --fa: "\f101"; }
+
+.fa-angle-double-right {
+ --fa: "\f101"; }
+
+.fa-cannabis {
+ --fa: "\f55f"; }
+
+.fa-circle-play {
+ --fa: "\f144"; }
+
+.fa-play-circle {
+ --fa: "\f144"; }
+
+.fa-tablets {
+ --fa: "\f490"; }
+
+.fa-ethernet {
+ --fa: "\f796"; }
+
+.fa-euro-sign {
+ --fa: "\f153"; }
+
+.fa-eur {
+ --fa: "\f153"; }
+
+.fa-euro {
+ --fa: "\f153"; }
+
+.fa-chair {
+ --fa: "\f6c0"; }
+
+.fa-circle-check {
+ --fa: "\f058"; }
+
+.fa-check-circle {
+ --fa: "\f058"; }
+
+.fa-circle-stop {
+ --fa: "\f28d"; }
+
+.fa-stop-circle {
+ --fa: "\f28d"; }
+
+.fa-compass-drafting {
+ --fa: "\f568"; }
+
+.fa-drafting-compass {
+ --fa: "\f568"; }
+
+.fa-plate-wheat {
+ --fa: "\e55a"; }
+
+.fa-icicles {
+ --fa: "\f7ad"; }
+
+.fa-person-shelter {
+ --fa: "\e54f"; }
+
+.fa-neuter {
+ --fa: "\f22c"; }
+
+.fa-id-badge {
+ --fa: "\f2c1"; }
+
+.fa-marker {
+ --fa: "\f5a1"; }
+
+.fa-face-laugh-beam {
+ --fa: "\f59a"; }
+
+.fa-laugh-beam {
+ --fa: "\f59a"; }
+
+.fa-helicopter-symbol {
+ --fa: "\e502"; }
+
+.fa-universal-access {
+ --fa: "\f29a"; }
+
+.fa-circle-chevron-up {
+ --fa: "\f139"; }
+
+.fa-chevron-circle-up {
+ --fa: "\f139"; }
+
+.fa-lari-sign {
+ --fa: "\e1c8"; }
+
+.fa-volcano {
+ --fa: "\f770"; }
+
+.fa-person-walking-dashed-line-arrow-right {
+ --fa: "\e553"; }
+
+.fa-sterling-sign {
+ --fa: "\f154"; }
+
+.fa-gbp {
+ --fa: "\f154"; }
+
+.fa-pound-sign {
+ --fa: "\f154"; }
+
+.fa-viruses {
+ --fa: "\e076"; }
+
+.fa-square-person-confined {
+ --fa: "\e577"; }
+
+.fa-user-tie {
+ --fa: "\f508"; }
+
+.fa-arrow-down-long {
+ --fa: "\f175"; }
+
+.fa-long-arrow-down {
+ --fa: "\f175"; }
+
+.fa-tent-arrow-down-to-line {
+ --fa: "\e57e"; }
+
+.fa-certificate {
+ --fa: "\f0a3"; }
+
+.fa-reply-all {
+ --fa: "\f122"; }
+
+.fa-mail-reply-all {
+ --fa: "\f122"; }
+
+.fa-suitcase {
+ --fa: "\f0f2"; }
+
+.fa-person-skating {
+ --fa: "\f7c5"; }
+
+.fa-skating {
+ --fa: "\f7c5"; }
+
+.fa-filter-circle-dollar {
+ --fa: "\f662"; }
+
+.fa-funnel-dollar {
+ --fa: "\f662"; }
+
+.fa-camera-retro {
+ --fa: "\f083"; }
+
+.fa-circle-arrow-down {
+ --fa: "\f0ab"; }
+
+.fa-arrow-circle-down {
+ --fa: "\f0ab"; }
+
+.fa-file-import {
+ --fa: "\f56f"; }
+
+.fa-arrow-right-to-file {
+ --fa: "\f56f"; }
+
+.fa-square-arrow-up-right {
+ --fa: "\f14c"; }
+
+.fa-external-link-square {
+ --fa: "\f14c"; }
+
+.fa-box-open {
+ --fa: "\f49e"; }
+
+.fa-scroll {
+ --fa: "\f70e"; }
+
+.fa-spa {
+ --fa: "\f5bb"; }
+
+.fa-location-pin-lock {
+ --fa: "\e51f"; }
+
+.fa-pause {
+ --fa: "\f04c"; }
+
+.fa-hill-avalanche {
+ --fa: "\e507"; }
+
+.fa-temperature-empty {
+ --fa: "\f2cb"; }
+
+.fa-temperature-0 {
+ --fa: "\f2cb"; }
+
+.fa-thermometer-0 {
+ --fa: "\f2cb"; }
+
+.fa-thermometer-empty {
+ --fa: "\f2cb"; }
+
+.fa-bomb {
+ --fa: "\f1e2"; }
+
+.fa-registered {
+ --fa: "\f25d"; }
+
+.fa-address-card {
+ --fa: "\f2bb"; }
+
+.fa-contact-card {
+ --fa: "\f2bb"; }
+
+.fa-vcard {
+ --fa: "\f2bb"; }
+
+.fa-scale-unbalanced-flip {
+ --fa: "\f516"; }
+
+.fa-balance-scale-right {
+ --fa: "\f516"; }
+
+.fa-subscript {
+ --fa: "\f12c"; }
+
+.fa-diamond-turn-right {
+ --fa: "\f5eb"; }
+
+.fa-directions {
+ --fa: "\f5eb"; }
+
+.fa-burst {
+ --fa: "\e4dc"; }
+
+.fa-house-laptop {
+ --fa: "\e066"; }
+
+.fa-laptop-house {
+ --fa: "\e066"; }
+
+.fa-face-tired {
+ --fa: "\f5c8"; }
+
+.fa-tired {
+ --fa: "\f5c8"; }
+
+.fa-money-bills {
+ --fa: "\e1f3"; }
+
+.fa-smog {
+ --fa: "\f75f"; }
+
+.fa-crutch {
+ --fa: "\f7f7"; }
+
+.fa-cloud-arrow-up {
+ --fa: "\f0ee"; }
+
+.fa-cloud-upload {
+ --fa: "\f0ee"; }
+
+.fa-cloud-upload-alt {
+ --fa: "\f0ee"; }
+
+.fa-palette {
+ --fa: "\f53f"; }
+
+.fa-arrows-turn-right {
+ --fa: "\e4c0"; }
+
+.fa-vest {
+ --fa: "\e085"; }
+
+.fa-ferry {
+ --fa: "\e4ea"; }
+
+.fa-arrows-down-to-people {
+ --fa: "\e4b9"; }
+
+.fa-seedling {
+ --fa: "\f4d8"; }
+
+.fa-sprout {
+ --fa: "\f4d8"; }
+
+.fa-left-right {
+ --fa: "\f337"; }
+
+.fa-arrows-alt-h {
+ --fa: "\f337"; }
+
+.fa-boxes-packing {
+ --fa: "\e4c7"; }
+
+.fa-circle-arrow-left {
+ --fa: "\f0a8"; }
+
+.fa-arrow-circle-left {
+ --fa: "\f0a8"; }
+
+.fa-group-arrows-rotate {
+ --fa: "\e4f6"; }
+
+.fa-bowl-food {
+ --fa: "\e4c6"; }
+
+.fa-candy-cane {
+ --fa: "\f786"; }
+
+.fa-arrow-down-wide-short {
+ --fa: "\f160"; }
+
+.fa-sort-amount-asc {
+ --fa: "\f160"; }
+
+.fa-sort-amount-down {
+ --fa: "\f160"; }
+
+.fa-cloud-bolt {
+ --fa: "\f76c"; }
+
+.fa-thunderstorm {
+ --fa: "\f76c"; }
+
+.fa-text-slash {
+ --fa: "\f87d"; }
+
+.fa-remove-format {
+ --fa: "\f87d"; }
+
+.fa-face-smile-wink {
+ --fa: "\f4da"; }
+
+.fa-smile-wink {
+ --fa: "\f4da"; }
+
+.fa-file-word {
+ --fa: "\f1c2"; }
+
+.fa-file-powerpoint {
+ --fa: "\f1c4"; }
+
+.fa-arrows-left-right {
+ --fa: "\f07e"; }
+
+.fa-arrows-h {
+ --fa: "\f07e"; }
+
+.fa-house-lock {
+ --fa: "\e510"; }
+
+.fa-cloud-arrow-down {
+ --fa: "\f0ed"; }
+
+.fa-cloud-download {
+ --fa: "\f0ed"; }
+
+.fa-cloud-download-alt {
+ --fa: "\f0ed"; }
+
+.fa-children {
+ --fa: "\e4e1"; }
+
+.fa-chalkboard {
+ --fa: "\f51b"; }
+
+.fa-blackboard {
+ --fa: "\f51b"; }
+
+.fa-user-large-slash {
+ --fa: "\f4fa"; }
+
+.fa-user-alt-slash {
+ --fa: "\f4fa"; }
+
+.fa-envelope-open {
+ --fa: "\f2b6"; }
+
+.fa-handshake-simple-slash {
+ --fa: "\e05f"; }
+
+.fa-handshake-alt-slash {
+ --fa: "\e05f"; }
+
+.fa-mattress-pillow {
+ --fa: "\e525"; }
+
+.fa-guarani-sign {
+ --fa: "\e19a"; }
+
+.fa-arrows-rotate {
+ --fa: "\f021"; }
+
+.fa-refresh {
+ --fa: "\f021"; }
+
+.fa-sync {
+ --fa: "\f021"; }
+
+.fa-fire-extinguisher {
+ --fa: "\f134"; }
+
+.fa-cruzeiro-sign {
+ --fa: "\e152"; }
+
+.fa-greater-than-equal {
+ --fa: "\f532"; }
+
+.fa-shield-halved {
+ --fa: "\f3ed"; }
+
+.fa-shield-alt {
+ --fa: "\f3ed"; }
+
+.fa-book-atlas {
+ --fa: "\f558"; }
+
+.fa-atlas {
+ --fa: "\f558"; }
+
+.fa-virus {
+ --fa: "\e074"; }
+
+.fa-envelope-circle-check {
+ --fa: "\e4e8"; }
+
+.fa-layer-group {
+ --fa: "\f5fd"; }
+
+.fa-arrows-to-dot {
+ --fa: "\e4be"; }
+
+.fa-archway {
+ --fa: "\f557"; }
+
+.fa-heart-circle-check {
+ --fa: "\e4fd"; }
+
+.fa-house-chimney-crack {
+ --fa: "\f6f1"; }
+
+.fa-house-damage {
+ --fa: "\f6f1"; }
+
+.fa-file-zipper {
+ --fa: "\f1c6"; }
+
+.fa-file-archive {
+ --fa: "\f1c6"; }
+
+.fa-square {
+ --fa: "\f0c8"; }
+
+.fa-martini-glass-empty {
+ --fa: "\f000"; }
+
+.fa-glass-martini {
+ --fa: "\f000"; }
+
+.fa-couch {
+ --fa: "\f4b8"; }
+
+.fa-cedi-sign {
+ --fa: "\e0df"; }
+
+.fa-italic {
+ --fa: "\f033"; }
+
+.fa-table-cells-column-lock {
+ --fa: "\e678"; }
+
+.fa-church {
+ --fa: "\f51d"; }
+
+.fa-comments-dollar {
+ --fa: "\f653"; }
+
+.fa-democrat {
+ --fa: "\f747"; }
+
+.fa-z {
+ --fa: "\5a"; }
+
+.fa-person-skiing {
+ --fa: "\f7c9"; }
+
+.fa-skiing {
+ --fa: "\f7c9"; }
+
+.fa-road-lock {
+ --fa: "\e567"; }
+
+.fa-a {
+ --fa: "\41"; }
+
+.fa-temperature-arrow-down {
+ --fa: "\e03f"; }
+
+.fa-temperature-down {
+ --fa: "\e03f"; }
+
+.fa-feather-pointed {
+ --fa: "\f56b"; }
+
+.fa-feather-alt {
+ --fa: "\f56b"; }
+
+.fa-p {
+ --fa: "\50"; }
+
+.fa-snowflake {
+ --fa: "\f2dc"; }
+
+.fa-newspaper {
+ --fa: "\f1ea"; }
+
+.fa-rectangle-ad {
+ --fa: "\f641"; }
+
+.fa-ad {
+ --fa: "\f641"; }
+
+.fa-circle-arrow-right {
+ --fa: "\f0a9"; }
+
+.fa-arrow-circle-right {
+ --fa: "\f0a9"; }
+
+.fa-filter-circle-xmark {
+ --fa: "\e17b"; }
+
+.fa-locust {
+ --fa: "\e520"; }
+
+.fa-sort {
+ --fa: "\f0dc"; }
+
+.fa-unsorted {
+ --fa: "\f0dc"; }
+
+.fa-list-ol {
+ --fa: "\f0cb"; }
+
+.fa-list-1-2 {
+ --fa: "\f0cb"; }
+
+.fa-list-numeric {
+ --fa: "\f0cb"; }
+
+.fa-person-dress-burst {
+ --fa: "\e544"; }
+
+.fa-money-check-dollar {
+ --fa: "\f53d"; }
+
+.fa-money-check-alt {
+ --fa: "\f53d"; }
+
+.fa-vector-square {
+ --fa: "\f5cb"; }
+
+.fa-bread-slice {
+ --fa: "\f7ec"; }
+
+.fa-language {
+ --fa: "\f1ab"; }
+
+.fa-face-kiss-wink-heart {
+ --fa: "\f598"; }
+
+.fa-kiss-wink-heart {
+ --fa: "\f598"; }
+
+.fa-filter {
+ --fa: "\f0b0"; }
+
+.fa-question {
+ --fa: "\3f"; }
+
+.fa-file-signature {
+ --fa: "\f573"; }
+
+.fa-up-down-left-right {
+ --fa: "\f0b2"; }
+
+.fa-arrows-alt {
+ --fa: "\f0b2"; }
+
+.fa-house-chimney-user {
+ --fa: "\e065"; }
+
+.fa-hand-holding-heart {
+ --fa: "\f4be"; }
+
+.fa-puzzle-piece {
+ --fa: "\f12e"; }
+
+.fa-money-check {
+ --fa: "\f53c"; }
+
+.fa-star-half-stroke {
+ --fa: "\f5c0"; }
+
+.fa-star-half-alt {
+ --fa: "\f5c0"; }
+
+.fa-code {
+ --fa: "\f121"; }
+
+.fa-whiskey-glass {
+ --fa: "\f7a0"; }
+
+.fa-glass-whiskey {
+ --fa: "\f7a0"; }
+
+.fa-building-circle-exclamation {
+ --fa: "\e4d3"; }
+
+.fa-magnifying-glass-chart {
+ --fa: "\e522"; }
+
+.fa-arrow-up-right-from-square {
+ --fa: "\f08e"; }
+
+.fa-external-link {
+ --fa: "\f08e"; }
+
+.fa-cubes-stacked {
+ --fa: "\e4e6"; }
+
+.fa-won-sign {
+ --fa: "\f159"; }
+
+.fa-krw {
+ --fa: "\f159"; }
+
+.fa-won {
+ --fa: "\f159"; }
+
+.fa-virus-covid {
+ --fa: "\e4a8"; }
+
+.fa-austral-sign {
+ --fa: "\e0a9"; }
+
+.fa-f {
+ --fa: "\46"; }
+
+.fa-leaf {
+ --fa: "\f06c"; }
+
+.fa-road {
+ --fa: "\f018"; }
+
+.fa-taxi {
+ --fa: "\f1ba"; }
+
+.fa-cab {
+ --fa: "\f1ba"; }
+
+.fa-person-circle-plus {
+ --fa: "\e541"; }
+
+.fa-chart-pie {
+ --fa: "\f200"; }
+
+.fa-pie-chart {
+ --fa: "\f200"; }
+
+.fa-bolt-lightning {
+ --fa: "\e0b7"; }
+
+.fa-sack-xmark {
+ --fa: "\e56a"; }
+
+.fa-file-excel {
+ --fa: "\f1c3"; }
+
+.fa-file-contract {
+ --fa: "\f56c"; }
+
+.fa-fish-fins {
+ --fa: "\e4f2"; }
+
+.fa-building-flag {
+ --fa: "\e4d5"; }
+
+.fa-face-grin-beam {
+ --fa: "\f582"; }
+
+.fa-grin-beam {
+ --fa: "\f582"; }
+
+.fa-object-ungroup {
+ --fa: "\f248"; }
+
+.fa-poop {
+ --fa: "\f619"; }
+
+.fa-location-pin {
+ --fa: "\f041"; }
+
+.fa-map-marker {
+ --fa: "\f041"; }
+
+.fa-kaaba {
+ --fa: "\f66b"; }
+
+.fa-toilet-paper {
+ --fa: "\f71e"; }
+
+.fa-helmet-safety {
+ --fa: "\f807"; }
+
+.fa-hard-hat {
+ --fa: "\f807"; }
+
+.fa-hat-hard {
+ --fa: "\f807"; }
+
+.fa-eject {
+ --fa: "\f052"; }
+
+.fa-circle-right {
+ --fa: "\f35a"; }
+
+.fa-arrow-alt-circle-right {
+ --fa: "\f35a"; }
+
+.fa-plane-circle-check {
+ --fa: "\e555"; }
+
+.fa-face-rolling-eyes {
+ --fa: "\f5a5"; }
+
+.fa-meh-rolling-eyes {
+ --fa: "\f5a5"; }
+
+.fa-object-group {
+ --fa: "\f247"; }
+
+.fa-chart-line {
+ --fa: "\f201"; }
+
+.fa-line-chart {
+ --fa: "\f201"; }
+
+.fa-mask-ventilator {
+ --fa: "\e524"; }
+
+.fa-arrow-right {
+ --fa: "\f061"; }
+
+.fa-signs-post {
+ --fa: "\f277"; }
+
+.fa-map-signs {
+ --fa: "\f277"; }
+
+.fa-cash-register {
+ --fa: "\f788"; }
+
+.fa-person-circle-question {
+ --fa: "\e542"; }
+
+.fa-h {
+ --fa: "\48"; }
+
+.fa-tarp {
+ --fa: "\e57b"; }
+
+.fa-screwdriver-wrench {
+ --fa: "\f7d9"; }
+
+.fa-tools {
+ --fa: "\f7d9"; }
+
+.fa-arrows-to-eye {
+ --fa: "\e4bf"; }
+
+.fa-plug-circle-bolt {
+ --fa: "\e55b"; }
+
+.fa-heart {
+ --fa: "\f004"; }
+
+.fa-mars-and-venus {
+ --fa: "\f224"; }
+
+.fa-house-user {
+ --fa: "\e1b0"; }
+
+.fa-home-user {
+ --fa: "\e1b0"; }
+
+.fa-dumpster-fire {
+ --fa: "\f794"; }
+
+.fa-house-crack {
+ --fa: "\e3b1"; }
+
+.fa-martini-glass-citrus {
+ --fa: "\f561"; }
+
+.fa-cocktail {
+ --fa: "\f561"; }
+
+.fa-face-surprise {
+ --fa: "\f5c2"; }
+
+.fa-surprise {
+ --fa: "\f5c2"; }
+
+.fa-bottle-water {
+ --fa: "\e4c5"; }
+
+.fa-circle-pause {
+ --fa: "\f28b"; }
+
+.fa-pause-circle {
+ --fa: "\f28b"; }
+
+.fa-toilet-paper-slash {
+ --fa: "\e072"; }
+
+.fa-apple-whole {
+ --fa: "\f5d1"; }
+
+.fa-apple-alt {
+ --fa: "\f5d1"; }
+
+.fa-kitchen-set {
+ --fa: "\e51a"; }
+
+.fa-r {
+ --fa: "\52"; }
+
+.fa-temperature-quarter {
+ --fa: "\f2ca"; }
+
+.fa-temperature-1 {
+ --fa: "\f2ca"; }
+
+.fa-thermometer-1 {
+ --fa: "\f2ca"; }
+
+.fa-thermometer-quarter {
+ --fa: "\f2ca"; }
+
+.fa-cube {
+ --fa: "\f1b2"; }
+
+.fa-bitcoin-sign {
+ --fa: "\e0b4"; }
+
+.fa-shield-dog {
+ --fa: "\e573"; }
+
+.fa-solar-panel {
+ --fa: "\f5ba"; }
+
+.fa-lock-open {
+ --fa: "\f3c1"; }
+
+.fa-elevator {
+ --fa: "\e16d"; }
+
+.fa-money-bill-transfer {
+ --fa: "\e528"; }
+
+.fa-money-bill-trend-up {
+ --fa: "\e529"; }
+
+.fa-house-flood-water-circle-arrow-right {
+ --fa: "\e50f"; }
+
+.fa-square-poll-horizontal {
+ --fa: "\f682"; }
+
+.fa-poll-h {
+ --fa: "\f682"; }
+
+.fa-circle {
+ --fa: "\f111"; }
+
+.fa-backward-fast {
+ --fa: "\f049"; }
+
+.fa-fast-backward {
+ --fa: "\f049"; }
+
+.fa-recycle {
+ --fa: "\f1b8"; }
+
+.fa-user-astronaut {
+ --fa: "\f4fb"; }
+
+.fa-plane-slash {
+ --fa: "\e069"; }
+
+.fa-trademark {
+ --fa: "\f25c"; }
+
+.fa-basketball {
+ --fa: "\f434"; }
+
+.fa-basketball-ball {
+ --fa: "\f434"; }
+
+.fa-satellite-dish {
+ --fa: "\f7c0"; }
+
+.fa-circle-up {
+ --fa: "\f35b"; }
+
+.fa-arrow-alt-circle-up {
+ --fa: "\f35b"; }
+
+.fa-mobile-screen-button {
+ --fa: "\f3cd"; }
+
+.fa-mobile-alt {
+ --fa: "\f3cd"; }
+
+.fa-volume-high {
+ --fa: "\f028"; }
+
+.fa-volume-up {
+ --fa: "\f028"; }
+
+.fa-users-rays {
+ --fa: "\e593"; }
+
+.fa-wallet {
+ --fa: "\f555"; }
+
+.fa-clipboard-check {
+ --fa: "\f46c"; }
+
+.fa-file-audio {
+ --fa: "\f1c7"; }
+
+.fa-burger {
+ --fa: "\f805"; }
+
+.fa-hamburger {
+ --fa: "\f805"; }
+
+.fa-wrench {
+ --fa: "\f0ad"; }
+
+.fa-bugs {
+ --fa: "\e4d0"; }
+
+.fa-rupee-sign {
+ --fa: "\f156"; }
+
+.fa-rupee {
+ --fa: "\f156"; }
+
+.fa-file-image {
+ --fa: "\f1c5"; }
+
+.fa-circle-question {
+ --fa: "\f059"; }
+
+.fa-question-circle {
+ --fa: "\f059"; }
+
+.fa-plane-departure {
+ --fa: "\f5b0"; }
+
+.fa-handshake-slash {
+ --fa: "\e060"; }
+
+.fa-book-bookmark {
+ --fa: "\e0bb"; }
+
+.fa-code-branch {
+ --fa: "\f126"; }
+
+.fa-hat-cowboy {
+ --fa: "\f8c0"; }
+
+.fa-bridge {
+ --fa: "\e4c8"; }
+
+.fa-phone-flip {
+ --fa: "\f879"; }
+
+.fa-phone-alt {
+ --fa: "\f879"; }
+
+.fa-truck-front {
+ --fa: "\e2b7"; }
+
+.fa-cat {
+ --fa: "\f6be"; }
+
+.fa-anchor-circle-exclamation {
+ --fa: "\e4ab"; }
+
+.fa-truck-field {
+ --fa: "\e58d"; }
+
+.fa-route {
+ --fa: "\f4d7"; }
+
+.fa-clipboard-question {
+ --fa: "\e4e3"; }
+
+.fa-panorama {
+ --fa: "\e209"; }
+
+.fa-comment-medical {
+ --fa: "\f7f5"; }
+
+.fa-teeth-open {
+ --fa: "\f62f"; }
+
+.fa-file-circle-minus {
+ --fa: "\e4ed"; }
+
+.fa-tags {
+ --fa: "\f02c"; }
+
+.fa-wine-glass {
+ --fa: "\f4e3"; }
+
+.fa-forward-fast {
+ --fa: "\f050"; }
+
+.fa-fast-forward {
+ --fa: "\f050"; }
+
+.fa-face-meh-blank {
+ --fa: "\f5a4"; }
+
+.fa-meh-blank {
+ --fa: "\f5a4"; }
+
+.fa-square-parking {
+ --fa: "\f540"; }
+
+.fa-parking {
+ --fa: "\f540"; }
+
+.fa-house-signal {
+ --fa: "\e012"; }
+
+.fa-bars-progress {
+ --fa: "\f828"; }
+
+.fa-tasks-alt {
+ --fa: "\f828"; }
+
+.fa-faucet-drip {
+ --fa: "\e006"; }
+
+.fa-cart-flatbed {
+ --fa: "\f474"; }
+
+.fa-dolly-flatbed {
+ --fa: "\f474"; }
+
+.fa-ban-smoking {
+ --fa: "\f54d"; }
+
+.fa-smoking-ban {
+ --fa: "\f54d"; }
+
+.fa-terminal {
+ --fa: "\f120"; }
+
+.fa-mobile-button {
+ --fa: "\f10b"; }
+
+.fa-house-medical-flag {
+ --fa: "\e514"; }
+
+.fa-basket-shopping {
+ --fa: "\f291"; }
+
+.fa-shopping-basket {
+ --fa: "\f291"; }
+
+.fa-tape {
+ --fa: "\f4db"; }
+
+.fa-bus-simple {
+ --fa: "\f55e"; }
+
+.fa-bus-alt {
+ --fa: "\f55e"; }
+
+.fa-eye {
+ --fa: "\f06e"; }
+
+.fa-face-sad-cry {
+ --fa: "\f5b3"; }
+
+.fa-sad-cry {
+ --fa: "\f5b3"; }
+
+.fa-audio-description {
+ --fa: "\f29e"; }
+
+.fa-person-military-to-person {
+ --fa: "\e54c"; }
+
+.fa-file-shield {
+ --fa: "\e4f0"; }
+
+.fa-user-slash {
+ --fa: "\f506"; }
+
+.fa-pen {
+ --fa: "\f304"; }
+
+.fa-tower-observation {
+ --fa: "\e586"; }
+
+.fa-file-code {
+ --fa: "\f1c9"; }
+
+.fa-signal {
+ --fa: "\f012"; }
+
+.fa-signal-5 {
+ --fa: "\f012"; }
+
+.fa-signal-perfect {
+ --fa: "\f012"; }
+
+.fa-bus {
+ --fa: "\f207"; }
+
+.fa-heart-circle-xmark {
+ --fa: "\e501"; }
+
+.fa-house-chimney {
+ --fa: "\e3af"; }
+
+.fa-home-lg {
+ --fa: "\e3af"; }
+
+.fa-window-maximize {
+ --fa: "\f2d0"; }
+
+.fa-face-frown {
+ --fa: "\f119"; }
+
+.fa-frown {
+ --fa: "\f119"; }
+
+.fa-prescription {
+ --fa: "\f5b1"; }
+
+.fa-shop {
+ --fa: "\f54f"; }
+
+.fa-store-alt {
+ --fa: "\f54f"; }
+
+.fa-floppy-disk {
+ --fa: "\f0c7"; }
+
+.fa-save {
+ --fa: "\f0c7"; }
+
+.fa-vihara {
+ --fa: "\f6a7"; }
+
+.fa-scale-unbalanced {
+ --fa: "\f515"; }
+
+.fa-balance-scale-left {
+ --fa: "\f515"; }
+
+.fa-sort-up {
+ --fa: "\f0de"; }
+
+.fa-sort-asc {
+ --fa: "\f0de"; }
+
+.fa-comment-dots {
+ --fa: "\f4ad"; }
+
+.fa-commenting {
+ --fa: "\f4ad"; }
+
+.fa-plant-wilt {
+ --fa: "\e5aa"; }
+
+.fa-diamond {
+ --fa: "\f219"; }
+
+.fa-face-grin-squint {
+ --fa: "\f585"; }
+
+.fa-grin-squint {
+ --fa: "\f585"; }
+
+.fa-hand-holding-dollar {
+ --fa: "\f4c0"; }
+
+.fa-hand-holding-usd {
+ --fa: "\f4c0"; }
+
+.fa-chart-diagram {
+ --fa: "\e695"; }
+
+.fa-bacterium {
+ --fa: "\e05a"; }
+
+.fa-hand-pointer {
+ --fa: "\f25a"; }
+
+.fa-drum-steelpan {
+ --fa: "\f56a"; }
+
+.fa-hand-scissors {
+ --fa: "\f257"; }
+
+.fa-hands-praying {
+ --fa: "\f684"; }
+
+.fa-praying-hands {
+ --fa: "\f684"; }
+
+.fa-arrow-rotate-right {
+ --fa: "\f01e"; }
+
+.fa-arrow-right-rotate {
+ --fa: "\f01e"; }
+
+.fa-arrow-rotate-forward {
+ --fa: "\f01e"; }
+
+.fa-redo {
+ --fa: "\f01e"; }
+
+.fa-biohazard {
+ --fa: "\f780"; }
+
+.fa-location-crosshairs {
+ --fa: "\f601"; }
+
+.fa-location {
+ --fa: "\f601"; }
+
+.fa-mars-double {
+ --fa: "\f227"; }
+
+.fa-child-dress {
+ --fa: "\e59c"; }
+
+.fa-users-between-lines {
+ --fa: "\e591"; }
+
+.fa-lungs-virus {
+ --fa: "\e067"; }
+
+.fa-face-grin-tears {
+ --fa: "\f588"; }
+
+.fa-grin-tears {
+ --fa: "\f588"; }
+
+.fa-phone {
+ --fa: "\f095"; }
+
+.fa-calendar-xmark {
+ --fa: "\f273"; }
+
+.fa-calendar-times {
+ --fa: "\f273"; }
+
+.fa-child-reaching {
+ --fa: "\e59d"; }
+
+.fa-head-side-virus {
+ --fa: "\e064"; }
+
+.fa-user-gear {
+ --fa: "\f4fe"; }
+
+.fa-user-cog {
+ --fa: "\f4fe"; }
+
+.fa-arrow-up-1-9 {
+ --fa: "\f163"; }
+
+.fa-sort-numeric-up {
+ --fa: "\f163"; }
+
+.fa-door-closed {
+ --fa: "\f52a"; }
+
+.fa-shield-virus {
+ --fa: "\e06c"; }
+
+.fa-dice-six {
+ --fa: "\f526"; }
+
+.fa-mosquito-net {
+ --fa: "\e52c"; }
+
+.fa-file-fragment {
+ --fa: "\e697"; }
+
+.fa-bridge-water {
+ --fa: "\e4ce"; }
+
+.fa-person-booth {
+ --fa: "\f756"; }
+
+.fa-text-width {
+ --fa: "\f035"; }
+
+.fa-hat-wizard {
+ --fa: "\f6e8"; }
+
+.fa-pen-fancy {
+ --fa: "\f5ac"; }
+
+.fa-person-digging {
+ --fa: "\f85e"; }
+
+.fa-digging {
+ --fa: "\f85e"; }
+
+.fa-trash {
+ --fa: "\f1f8"; }
+
+.fa-gauge-simple {
+ --fa: "\f629"; }
+
+.fa-gauge-simple-med {
+ --fa: "\f629"; }
+
+.fa-tachometer-average {
+ --fa: "\f629"; }
+
+.fa-book-medical {
+ --fa: "\f7e6"; }
+
+.fa-poo {
+ --fa: "\f2fe"; }
+
+.fa-quote-right {
+ --fa: "\f10e"; }
+
+.fa-quote-right-alt {
+ --fa: "\f10e"; }
+
+.fa-shirt {
+ --fa: "\f553"; }
+
+.fa-t-shirt {
+ --fa: "\f553"; }
+
+.fa-tshirt {
+ --fa: "\f553"; }
+
+.fa-cubes {
+ --fa: "\f1b3"; }
+
+.fa-divide {
+ --fa: "\f529"; }
+
+.fa-tenge-sign {
+ --fa: "\f7d7"; }
+
+.fa-tenge {
+ --fa: "\f7d7"; }
+
+.fa-headphones {
+ --fa: "\f025"; }
+
+.fa-hands-holding {
+ --fa: "\f4c2"; }
+
+.fa-hands-clapping {
+ --fa: "\e1a8"; }
+
+.fa-republican {
+ --fa: "\f75e"; }
+
+.fa-arrow-left {
+ --fa: "\f060"; }
+
+.fa-person-circle-xmark {
+ --fa: "\e543"; }
+
+.fa-ruler {
+ --fa: "\f545"; }
+
+.fa-align-left {
+ --fa: "\f036"; }
+
+.fa-dice-d6 {
+ --fa: "\f6d1"; }
+
+.fa-restroom {
+ --fa: "\f7bd"; }
+
+.fa-j {
+ --fa: "\4a"; }
+
+.fa-users-viewfinder {
+ --fa: "\e595"; }
+
+.fa-file-video {
+ --fa: "\f1c8"; }
+
+.fa-up-right-from-square {
+ --fa: "\f35d"; }
+
+.fa-external-link-alt {
+ --fa: "\f35d"; }
+
+.fa-table-cells {
+ --fa: "\f00a"; }
+
+.fa-th {
+ --fa: "\f00a"; }
+
+.fa-file-pdf {
+ --fa: "\f1c1"; }
+
+.fa-book-bible {
+ --fa: "\f647"; }
+
+.fa-bible {
+ --fa: "\f647"; }
+
+.fa-o {
+ --fa: "\4f"; }
+
+.fa-suitcase-medical {
+ --fa: "\f0fa"; }
+
+.fa-medkit {
+ --fa: "\f0fa"; }
+
+.fa-user-secret {
+ --fa: "\f21b"; }
+
+.fa-otter {
+ --fa: "\f700"; }
+
+.fa-person-dress {
+ --fa: "\f182"; }
+
+.fa-female {
+ --fa: "\f182"; }
+
+.fa-comment-dollar {
+ --fa: "\f651"; }
+
+.fa-business-time {
+ --fa: "\f64a"; }
+
+.fa-briefcase-clock {
+ --fa: "\f64a"; }
+
+.fa-table-cells-large {
+ --fa: "\f009"; }
+
+.fa-th-large {
+ --fa: "\f009"; }
+
+.fa-book-tanakh {
+ --fa: "\f827"; }
+
+.fa-tanakh {
+ --fa: "\f827"; }
+
+.fa-phone-volume {
+ --fa: "\f2a0"; }
+
+.fa-volume-control-phone {
+ --fa: "\f2a0"; }
+
+.fa-hat-cowboy-side {
+ --fa: "\f8c1"; }
+
+.fa-clipboard-user {
+ --fa: "\f7f3"; }
+
+.fa-child {
+ --fa: "\f1ae"; }
+
+.fa-lira-sign {
+ --fa: "\f195"; }
+
+.fa-satellite {
+ --fa: "\f7bf"; }
+
+.fa-plane-lock {
+ --fa: "\e558"; }
+
+.fa-tag {
+ --fa: "\f02b"; }
+
+.fa-comment {
+ --fa: "\f075"; }
+
+.fa-cake-candles {
+ --fa: "\f1fd"; }
+
+.fa-birthday-cake {
+ --fa: "\f1fd"; }
+
+.fa-cake {
+ --fa: "\f1fd"; }
+
+.fa-envelope {
+ --fa: "\f0e0"; }
+
+.fa-angles-up {
+ --fa: "\f102"; }
+
+.fa-angle-double-up {
+ --fa: "\f102"; }
+
+.fa-paperclip {
+ --fa: "\f0c6"; }
+
+.fa-arrow-right-to-city {
+ --fa: "\e4b3"; }
+
+.fa-ribbon {
+ --fa: "\f4d6"; }
+
+.fa-lungs {
+ --fa: "\f604"; }
+
+.fa-arrow-up-9-1 {
+ --fa: "\f887"; }
+
+.fa-sort-numeric-up-alt {
+ --fa: "\f887"; }
+
+.fa-litecoin-sign {
+ --fa: "\e1d3"; }
+
+.fa-border-none {
+ --fa: "\f850"; }
+
+.fa-circle-nodes {
+ --fa: "\e4e2"; }
+
+.fa-parachute-box {
+ --fa: "\f4cd"; }
+
+.fa-indent {
+ --fa: "\f03c"; }
+
+.fa-truck-field-un {
+ --fa: "\e58e"; }
+
+.fa-hourglass {
+ --fa: "\f254"; }
+
+.fa-hourglass-empty {
+ --fa: "\f254"; }
+
+.fa-mountain {
+ --fa: "\f6fc"; }
+
+.fa-user-doctor {
+ --fa: "\f0f0"; }
+
+.fa-user-md {
+ --fa: "\f0f0"; }
+
+.fa-circle-info {
+ --fa: "\f05a"; }
+
+.fa-info-circle {
+ --fa: "\f05a"; }
+
+.fa-cloud-meatball {
+ --fa: "\f73b"; }
+
+.fa-camera {
+ --fa: "\f030"; }
+
+.fa-camera-alt {
+ --fa: "\f030"; }
+
+.fa-square-virus {
+ --fa: "\e578"; }
+
+.fa-meteor {
+ --fa: "\f753"; }
+
+.fa-car-on {
+ --fa: "\e4dd"; }
+
+.fa-sleigh {
+ --fa: "\f7cc"; }
+
+.fa-arrow-down-1-9 {
+ --fa: "\f162"; }
+
+.fa-sort-numeric-asc {
+ --fa: "\f162"; }
+
+.fa-sort-numeric-down {
+ --fa: "\f162"; }
+
+.fa-hand-holding-droplet {
+ --fa: "\f4c1"; }
+
+.fa-hand-holding-water {
+ --fa: "\f4c1"; }
+
+.fa-water {
+ --fa: "\f773"; }
+
+.fa-calendar-check {
+ --fa: "\f274"; }
+
+.fa-braille {
+ --fa: "\f2a1"; }
+
+.fa-prescription-bottle-medical {
+ --fa: "\f486"; }
+
+.fa-prescription-bottle-alt {
+ --fa: "\f486"; }
+
+.fa-landmark {
+ --fa: "\f66f"; }
+
+.fa-truck {
+ --fa: "\f0d1"; }
+
+.fa-crosshairs {
+ --fa: "\f05b"; }
+
+.fa-person-cane {
+ --fa: "\e53c"; }
+
+.fa-tent {
+ --fa: "\e57d"; }
+
+.fa-vest-patches {
+ --fa: "\e086"; }
+
+.fa-check-double {
+ --fa: "\f560"; }
+
+.fa-arrow-down-a-z {
+ --fa: "\f15d"; }
+
+.fa-sort-alpha-asc {
+ --fa: "\f15d"; }
+
+.fa-sort-alpha-down {
+ --fa: "\f15d"; }
+
+.fa-money-bill-wheat {
+ --fa: "\e52a"; }
+
+.fa-cookie {
+ --fa: "\f563"; }
+
+.fa-arrow-rotate-left {
+ --fa: "\f0e2"; }
+
+.fa-arrow-left-rotate {
+ --fa: "\f0e2"; }
+
+.fa-arrow-rotate-back {
+ --fa: "\f0e2"; }
+
+.fa-arrow-rotate-backward {
+ --fa: "\f0e2"; }
+
+.fa-undo {
+ --fa: "\f0e2"; }
+
+.fa-hard-drive {
+ --fa: "\f0a0"; }
+
+.fa-hdd {
+ --fa: "\f0a0"; }
+
+.fa-face-grin-squint-tears {
+ --fa: "\f586"; }
+
+.fa-grin-squint-tears {
+ --fa: "\f586"; }
+
+.fa-dumbbell {
+ --fa: "\f44b"; }
+
+.fa-rectangle-list {
+ --fa: "\f022"; }
+
+.fa-list-alt {
+ --fa: "\f022"; }
+
+.fa-tarp-droplet {
+ --fa: "\e57c"; }
+
+.fa-house-medical-circle-check {
+ --fa: "\e511"; }
+
+.fa-person-skiing-nordic {
+ --fa: "\f7ca"; }
+
+.fa-skiing-nordic {
+ --fa: "\f7ca"; }
+
+.fa-calendar-plus {
+ --fa: "\f271"; }
+
+.fa-plane-arrival {
+ --fa: "\f5af"; }
+
+.fa-circle-left {
+ --fa: "\f359"; }
+
+.fa-arrow-alt-circle-left {
+ --fa: "\f359"; }
+
+.fa-train-subway {
+ --fa: "\f239"; }
+
+.fa-subway {
+ --fa: "\f239"; }
+
+.fa-chart-gantt {
+ --fa: "\e0e4"; }
+
+.fa-indian-rupee-sign {
+ --fa: "\e1bc"; }
+
+.fa-indian-rupee {
+ --fa: "\e1bc"; }
+
+.fa-inr {
+ --fa: "\e1bc"; }
+
+.fa-crop-simple {
+ --fa: "\f565"; }
+
+.fa-crop-alt {
+ --fa: "\f565"; }
+
+.fa-money-bill-1 {
+ --fa: "\f3d1"; }
+
+.fa-money-bill-alt {
+ --fa: "\f3d1"; }
+
+.fa-left-long {
+ --fa: "\f30a"; }
+
+.fa-long-arrow-alt-left {
+ --fa: "\f30a"; }
+
+.fa-dna {
+ --fa: "\f471"; }
+
+.fa-virus-slash {
+ --fa: "\e075"; }
+
+.fa-minus {
+ --fa: "\f068"; }
+
+.fa-subtract {
+ --fa: "\f068"; }
+
+.fa-chess {
+ --fa: "\f439"; }
+
+.fa-arrow-left-long {
+ --fa: "\f177"; }
+
+.fa-long-arrow-left {
+ --fa: "\f177"; }
+
+.fa-plug-circle-check {
+ --fa: "\e55c"; }
+
+.fa-street-view {
+ --fa: "\f21d"; }
+
+.fa-franc-sign {
+ --fa: "\e18f"; }
+
+.fa-volume-off {
+ --fa: "\f026"; }
+
+.fa-hands-asl-interpreting {
+ --fa: "\f2a3"; }
+
+.fa-american-sign-language-interpreting {
+ --fa: "\f2a3"; }
+
+.fa-asl-interpreting {
+ --fa: "\f2a3"; }
+
+.fa-hands-american-sign-language-interpreting {
+ --fa: "\f2a3"; }
+
+.fa-gear {
+ --fa: "\f013"; }
+
+.fa-cog {
+ --fa: "\f013"; }
+
+.fa-droplet-slash {
+ --fa: "\f5c7"; }
+
+.fa-tint-slash {
+ --fa: "\f5c7"; }
+
+.fa-mosque {
+ --fa: "\f678"; }
+
+.fa-mosquito {
+ --fa: "\e52b"; }
+
+.fa-star-of-david {
+ --fa: "\f69a"; }
+
+.fa-person-military-rifle {
+ --fa: "\e54b"; }
+
+.fa-cart-shopping {
+ --fa: "\f07a"; }
+
+.fa-shopping-cart {
+ --fa: "\f07a"; }
+
+.fa-vials {
+ --fa: "\f493"; }
+
+.fa-plug-circle-plus {
+ --fa: "\e55f"; }
+
+.fa-place-of-worship {
+ --fa: "\f67f"; }
+
+.fa-grip-vertical {
+ --fa: "\f58e"; }
+
+.fa-hexagon-nodes {
+ --fa: "\e699"; }
+
+.fa-arrow-turn-up {
+ --fa: "\f148"; }
+
+.fa-level-up {
+ --fa: "\f148"; }
+
+.fa-u {
+ --fa: "\55"; }
+
+.fa-square-root-variable {
+ --fa: "\f698"; }
+
+.fa-square-root-alt {
+ --fa: "\f698"; }
+
+.fa-clock {
+ --fa: "\f017"; }
+
+.fa-clock-four {
+ --fa: "\f017"; }
+
+.fa-backward-step {
+ --fa: "\f048"; }
+
+.fa-step-backward {
+ --fa: "\f048"; }
+
+.fa-pallet {
+ --fa: "\f482"; }
+
+.fa-faucet {
+ --fa: "\e005"; }
+
+.fa-baseball-bat-ball {
+ --fa: "\f432"; }
+
+.fa-s {
+ --fa: "\53"; }
+
+.fa-timeline {
+ --fa: "\e29c"; }
+
+.fa-keyboard {
+ --fa: "\f11c"; }
+
+.fa-caret-down {
+ --fa: "\f0d7"; }
+
+.fa-house-chimney-medical {
+ --fa: "\f7f2"; }
+
+.fa-clinic-medical {
+ --fa: "\f7f2"; }
+
+.fa-temperature-three-quarters {
+ --fa: "\f2c8"; }
+
+.fa-temperature-3 {
+ --fa: "\f2c8"; }
+
+.fa-thermometer-3 {
+ --fa: "\f2c8"; }
+
+.fa-thermometer-three-quarters {
+ --fa: "\f2c8"; }
+
+.fa-mobile-screen {
+ --fa: "\f3cf"; }
+
+.fa-mobile-android-alt {
+ --fa: "\f3cf"; }
+
+.fa-plane-up {
+ --fa: "\e22d"; }
+
+.fa-piggy-bank {
+ --fa: "\f4d3"; }
+
+.fa-battery-half {
+ --fa: "\f242"; }
+
+.fa-battery-3 {
+ --fa: "\f242"; }
+
+.fa-mountain-city {
+ --fa: "\e52e"; }
+
+.fa-coins {
+ --fa: "\f51e"; }
+
+.fa-khanda {
+ --fa: "\f66d"; }
+
+.fa-sliders {
+ --fa: "\f1de"; }
+
+.fa-sliders-h {
+ --fa: "\f1de"; }
+
+.fa-folder-tree {
+ --fa: "\f802"; }
+
+.fa-network-wired {
+ --fa: "\f6ff"; }
+
+.fa-map-pin {
+ --fa: "\f276"; }
+
+.fa-hamsa {
+ --fa: "\f665"; }
+
+.fa-cent-sign {
+ --fa: "\e3f5"; }
+
+.fa-flask {
+ --fa: "\f0c3"; }
+
+.fa-person-pregnant {
+ --fa: "\e31e"; }
+
+.fa-wand-sparkles {
+ --fa: "\f72b"; }
+
+.fa-ellipsis-vertical {
+ --fa: "\f142"; }
+
+.fa-ellipsis-v {
+ --fa: "\f142"; }
+
+.fa-ticket {
+ --fa: "\f145"; }
+
+.fa-power-off {
+ --fa: "\f011"; }
+
+.fa-right-long {
+ --fa: "\f30b"; }
+
+.fa-long-arrow-alt-right {
+ --fa: "\f30b"; }
+
+.fa-flag-usa {
+ --fa: "\f74d"; }
+
+.fa-laptop-file {
+ --fa: "\e51d"; }
+
+.fa-tty {
+ --fa: "\f1e4"; }
+
+.fa-teletype {
+ --fa: "\f1e4"; }
+
+.fa-diagram-next {
+ --fa: "\e476"; }
+
+.fa-person-rifle {
+ --fa: "\e54e"; }
+
+.fa-house-medical-circle-exclamation {
+ --fa: "\e512"; }
+
+.fa-closed-captioning {
+ --fa: "\f20a"; }
+
+.fa-person-hiking {
+ --fa: "\f6ec"; }
+
+.fa-hiking {
+ --fa: "\f6ec"; }
+
+.fa-venus-double {
+ --fa: "\f226"; }
+
+.fa-images {
+ --fa: "\f302"; }
+
+.fa-calculator {
+ --fa: "\f1ec"; }
+
+.fa-people-pulling {
+ --fa: "\e535"; }
+
+.fa-n {
+ --fa: "\4e"; }
+
+.fa-cable-car {
+ --fa: "\f7da"; }
+
+.fa-tram {
+ --fa: "\f7da"; }
+
+.fa-cloud-rain {
+ --fa: "\f73d"; }
+
+.fa-building-circle-xmark {
+ --fa: "\e4d4"; }
+
+.fa-ship {
+ --fa: "\f21a"; }
+
+.fa-arrows-down-to-line {
+ --fa: "\e4b8"; }
+
+.fa-download {
+ --fa: "\f019"; }
+
+.fa-face-grin {
+ --fa: "\f580"; }
+
+.fa-grin {
+ --fa: "\f580"; }
+
+.fa-delete-left {
+ --fa: "\f55a"; }
+
+.fa-backspace {
+ --fa: "\f55a"; }
+
+.fa-eye-dropper {
+ --fa: "\f1fb"; }
+
+.fa-eye-dropper-empty {
+ --fa: "\f1fb"; }
+
+.fa-eyedropper {
+ --fa: "\f1fb"; }
+
+.fa-file-circle-check {
+ --fa: "\e5a0"; }
+
+.fa-forward {
+ --fa: "\f04e"; }
+
+.fa-mobile {
+ --fa: "\f3ce"; }
+
+.fa-mobile-android {
+ --fa: "\f3ce"; }
+
+.fa-mobile-phone {
+ --fa: "\f3ce"; }
+
+.fa-face-meh {
+ --fa: "\f11a"; }
+
+.fa-meh {
+ --fa: "\f11a"; }
+
+.fa-align-center {
+ --fa: "\f037"; }
+
+.fa-book-skull {
+ --fa: "\f6b7"; }
+
+.fa-book-dead {
+ --fa: "\f6b7"; }
+
+.fa-id-card {
+ --fa: "\f2c2"; }
+
+.fa-drivers-license {
+ --fa: "\f2c2"; }
+
+.fa-outdent {
+ --fa: "\f03b"; }
+
+.fa-dedent {
+ --fa: "\f03b"; }
+
+.fa-heart-circle-exclamation {
+ --fa: "\e4fe"; }
+
+.fa-house {
+ --fa: "\f015"; }
+
+.fa-home {
+ --fa: "\f015"; }
+
+.fa-home-alt {
+ --fa: "\f015"; }
+
+.fa-home-lg-alt {
+ --fa: "\f015"; }
+
+.fa-calendar-week {
+ --fa: "\f784"; }
+
+.fa-laptop-medical {
+ --fa: "\f812"; }
+
+.fa-b {
+ --fa: "\42"; }
+
+.fa-file-medical {
+ --fa: "\f477"; }
+
+.fa-dice-one {
+ --fa: "\f525"; }
+
+.fa-kiwi-bird {
+ --fa: "\f535"; }
+
+.fa-arrow-right-arrow-left {
+ --fa: "\f0ec"; }
+
+.fa-exchange {
+ --fa: "\f0ec"; }
+
+.fa-rotate-right {
+ --fa: "\f2f9"; }
+
+.fa-redo-alt {
+ --fa: "\f2f9"; }
+
+.fa-rotate-forward {
+ --fa: "\f2f9"; }
+
+.fa-utensils {
+ --fa: "\f2e7"; }
+
+.fa-cutlery {
+ --fa: "\f2e7"; }
+
+.fa-arrow-up-wide-short {
+ --fa: "\f161"; }
+
+.fa-sort-amount-up {
+ --fa: "\f161"; }
+
+.fa-mill-sign {
+ --fa: "\e1ed"; }
+
+.fa-bowl-rice {
+ --fa: "\e2eb"; }
+
+.fa-skull {
+ --fa: "\f54c"; }
+
+.fa-tower-broadcast {
+ --fa: "\f519"; }
+
+.fa-broadcast-tower {
+ --fa: "\f519"; }
+
+.fa-truck-pickup {
+ --fa: "\f63c"; }
+
+.fa-up-long {
+ --fa: "\f30c"; }
+
+.fa-long-arrow-alt-up {
+ --fa: "\f30c"; }
+
+.fa-stop {
+ --fa: "\f04d"; }
+
+.fa-code-merge {
+ --fa: "\f387"; }
+
+.fa-upload {
+ --fa: "\f093"; }
+
+.fa-hurricane {
+ --fa: "\f751"; }
+
+.fa-mound {
+ --fa: "\e52d"; }
+
+.fa-toilet-portable {
+ --fa: "\e583"; }
+
+.fa-compact-disc {
+ --fa: "\f51f"; }
+
+.fa-file-arrow-down {
+ --fa: "\f56d"; }
+
+.fa-file-download {
+ --fa: "\f56d"; }
+
+.fa-caravan {
+ --fa: "\f8ff"; }
+
+.fa-shield-cat {
+ --fa: "\e572"; }
+
+.fa-bolt {
+ --fa: "\f0e7"; }
+
+.fa-zap {
+ --fa: "\f0e7"; }
+
+.fa-glass-water {
+ --fa: "\e4f4"; }
+
+.fa-oil-well {
+ --fa: "\e532"; }
+
+.fa-vault {
+ --fa: "\e2c5"; }
+
+.fa-mars {
+ --fa: "\f222"; }
+
+.fa-toilet {
+ --fa: "\f7d8"; }
+
+.fa-plane-circle-xmark {
+ --fa: "\e557"; }
+
+.fa-yen-sign {
+ --fa: "\f157"; }
+
+.fa-cny {
+ --fa: "\f157"; }
+
+.fa-jpy {
+ --fa: "\f157"; }
+
+.fa-rmb {
+ --fa: "\f157"; }
+
+.fa-yen {
+ --fa: "\f157"; }
+
+.fa-ruble-sign {
+ --fa: "\f158"; }
+
+.fa-rouble {
+ --fa: "\f158"; }
+
+.fa-rub {
+ --fa: "\f158"; }
+
+.fa-ruble {
+ --fa: "\f158"; }
+
+.fa-sun {
+ --fa: "\f185"; }
+
+.fa-guitar {
+ --fa: "\f7a6"; }
+
+.fa-face-laugh-wink {
+ --fa: "\f59c"; }
+
+.fa-laugh-wink {
+ --fa: "\f59c"; }
+
+.fa-horse-head {
+ --fa: "\f7ab"; }
+
+.fa-bore-hole {
+ --fa: "\e4c3"; }
+
+.fa-industry {
+ --fa: "\f275"; }
+
+.fa-circle-down {
+ --fa: "\f358"; }
+
+.fa-arrow-alt-circle-down {
+ --fa: "\f358"; }
+
+.fa-arrows-turn-to-dots {
+ --fa: "\e4c1"; }
+
+.fa-florin-sign {
+ --fa: "\e184"; }
+
+.fa-arrow-down-short-wide {
+ --fa: "\f884"; }
+
+.fa-sort-amount-desc {
+ --fa: "\f884"; }
+
+.fa-sort-amount-down-alt {
+ --fa: "\f884"; }
+
+.fa-less-than {
+ --fa: "\3c"; }
+
+.fa-angle-down {
+ --fa: "\f107"; }
+
+.fa-car-tunnel {
+ --fa: "\e4de"; }
+
+.fa-head-side-cough {
+ --fa: "\e061"; }
+
+.fa-grip-lines {
+ --fa: "\f7a4"; }
+
+.fa-thumbs-down {
+ --fa: "\f165"; }
+
+.fa-user-lock {
+ --fa: "\f502"; }
+
+.fa-arrow-right-long {
+ --fa: "\f178"; }
+
+.fa-long-arrow-right {
+ --fa: "\f178"; }
+
+.fa-anchor-circle-xmark {
+ --fa: "\e4ac"; }
+
+.fa-ellipsis {
+ --fa: "\f141"; }
+
+.fa-ellipsis-h {
+ --fa: "\f141"; }
+
+.fa-chess-pawn {
+ --fa: "\f443"; }
+
+.fa-kit-medical {
+ --fa: "\f479"; }
+
+.fa-first-aid {
+ --fa: "\f479"; }
+
+.fa-person-through-window {
+ --fa: "\e5a9"; }
+
+.fa-toolbox {
+ --fa: "\f552"; }
+
+.fa-hands-holding-circle {
+ --fa: "\e4fb"; }
+
+.fa-bug {
+ --fa: "\f188"; }
+
+.fa-credit-card {
+ --fa: "\f09d"; }
+
+.fa-credit-card-alt {
+ --fa: "\f09d"; }
+
+.fa-car {
+ --fa: "\f1b9"; }
+
+.fa-automobile {
+ --fa: "\f1b9"; }
+
+.fa-hand-holding-hand {
+ --fa: "\e4f7"; }
+
+.fa-book-open-reader {
+ --fa: "\f5da"; }
+
+.fa-book-reader {
+ --fa: "\f5da"; }
+
+.fa-mountain-sun {
+ --fa: "\e52f"; }
+
+.fa-arrows-left-right-to-line {
+ --fa: "\e4ba"; }
+
+.fa-dice-d20 {
+ --fa: "\f6cf"; }
+
+.fa-truck-droplet {
+ --fa: "\e58c"; }
+
+.fa-file-circle-xmark {
+ --fa: "\e5a1"; }
+
+.fa-temperature-arrow-up {
+ --fa: "\e040"; }
+
+.fa-temperature-up {
+ --fa: "\e040"; }
+
+.fa-medal {
+ --fa: "\f5a2"; }
+
+.fa-bed {
+ --fa: "\f236"; }
+
+.fa-square-h {
+ --fa: "\f0fd"; }
+
+.fa-h-square {
+ --fa: "\f0fd"; }
+
+.fa-podcast {
+ --fa: "\f2ce"; }
+
+.fa-temperature-full {
+ --fa: "\f2c7"; }
+
+.fa-temperature-4 {
+ --fa: "\f2c7"; }
+
+.fa-thermometer-4 {
+ --fa: "\f2c7"; }
+
+.fa-thermometer-full {
+ --fa: "\f2c7"; }
+
+.fa-bell {
+ --fa: "\f0f3"; }
+
+.fa-superscript {
+ --fa: "\f12b"; }
+
+.fa-plug-circle-xmark {
+ --fa: "\e560"; }
+
+.fa-star-of-life {
+ --fa: "\f621"; }
+
+.fa-phone-slash {
+ --fa: "\f3dd"; }
+
+.fa-paint-roller {
+ --fa: "\f5aa"; }
+
+.fa-handshake-angle {
+ --fa: "\f4c4"; }
+
+.fa-hands-helping {
+ --fa: "\f4c4"; }
+
+.fa-location-dot {
+ --fa: "\f3c5"; }
+
+.fa-map-marker-alt {
+ --fa: "\f3c5"; }
+
+.fa-file {
+ --fa: "\f15b"; }
+
+.fa-greater-than {
+ --fa: "\3e"; }
+
+.fa-person-swimming {
+ --fa: "\f5c4"; }
+
+.fa-swimmer {
+ --fa: "\f5c4"; }
+
+.fa-arrow-down {
+ --fa: "\f063"; }
+
+.fa-droplet {
+ --fa: "\f043"; }
+
+.fa-tint {
+ --fa: "\f043"; }
+
+.fa-eraser {
+ --fa: "\f12d"; }
+
+.fa-earth-americas {
+ --fa: "\f57d"; }
+
+.fa-earth {
+ --fa: "\f57d"; }
+
+.fa-earth-america {
+ --fa: "\f57d"; }
+
+.fa-globe-americas {
+ --fa: "\f57d"; }
+
+.fa-person-burst {
+ --fa: "\e53b"; }
+
+.fa-dove {
+ --fa: "\f4ba"; }
+
+.fa-battery-empty {
+ --fa: "\f244"; }
+
+.fa-battery-0 {
+ --fa: "\f244"; }
+
+.fa-socks {
+ --fa: "\f696"; }
+
+.fa-inbox {
+ --fa: "\f01c"; }
+
+.fa-section {
+ --fa: "\e447"; }
+
+.fa-gauge-high {
+ --fa: "\f625"; }
+
+.fa-tachometer-alt {
+ --fa: "\f625"; }
+
+.fa-tachometer-alt-fast {
+ --fa: "\f625"; }
+
+.fa-envelope-open-text {
+ --fa: "\f658"; }
+
+.fa-hospital {
+ --fa: "\f0f8"; }
+
+.fa-hospital-alt {
+ --fa: "\f0f8"; }
+
+.fa-hospital-wide {
+ --fa: "\f0f8"; }
+
+.fa-wine-bottle {
+ --fa: "\f72f"; }
+
+.fa-chess-rook {
+ --fa: "\f447"; }
+
+.fa-bars-staggered {
+ --fa: "\f550"; }
+
+.fa-reorder {
+ --fa: "\f550"; }
+
+.fa-stream {
+ --fa: "\f550"; }
+
+.fa-dharmachakra {
+ --fa: "\f655"; }
+
+.fa-hotdog {
+ --fa: "\f80f"; }
+
+.fa-person-walking-with-cane {
+ --fa: "\f29d"; }
+
+.fa-blind {
+ --fa: "\f29d"; }
+
+.fa-drum {
+ --fa: "\f569"; }
+
+.fa-ice-cream {
+ --fa: "\f810"; }
+
+.fa-heart-circle-bolt {
+ --fa: "\e4fc"; }
+
+.fa-fax {
+ --fa: "\f1ac"; }
+
+.fa-paragraph {
+ --fa: "\f1dd"; }
+
+.fa-check-to-slot {
+ --fa: "\f772"; }
+
+.fa-vote-yea {
+ --fa: "\f772"; }
+
+.fa-star-half {
+ --fa: "\f089"; }
+
+.fa-boxes-stacked {
+ --fa: "\f468"; }
+
+.fa-boxes {
+ --fa: "\f468"; }
+
+.fa-boxes-alt {
+ --fa: "\f468"; }
+
+.fa-link {
+ --fa: "\f0c1"; }
+
+.fa-chain {
+ --fa: "\f0c1"; }
+
+.fa-ear-listen {
+ --fa: "\f2a2"; }
+
+.fa-assistive-listening-systems {
+ --fa: "\f2a2"; }
+
+.fa-tree-city {
+ --fa: "\e587"; }
+
+.fa-play {
+ --fa: "\f04b"; }
+
+.fa-font {
+ --fa: "\f031"; }
+
+.fa-table-cells-row-lock {
+ --fa: "\e67a"; }
+
+.fa-rupiah-sign {
+ --fa: "\e23d"; }
+
+.fa-magnifying-glass {
+ --fa: "\f002"; }
+
+.fa-search {
+ --fa: "\f002"; }
+
+.fa-table-tennis-paddle-ball {
+ --fa: "\f45d"; }
+
+.fa-ping-pong-paddle-ball {
+ --fa: "\f45d"; }
+
+.fa-table-tennis {
+ --fa: "\f45d"; }
+
+.fa-person-dots-from-line {
+ --fa: "\f470"; }
+
+.fa-diagnoses {
+ --fa: "\f470"; }
+
+.fa-trash-can-arrow-up {
+ --fa: "\f82a"; }
+
+.fa-trash-restore-alt {
+ --fa: "\f82a"; }
+
+.fa-naira-sign {
+ --fa: "\e1f6"; }
+
+.fa-cart-arrow-down {
+ --fa: "\f218"; }
+
+.fa-walkie-talkie {
+ --fa: "\f8ef"; }
+
+.fa-file-pen {
+ --fa: "\f31c"; }
+
+.fa-file-edit {
+ --fa: "\f31c"; }
+
+.fa-receipt {
+ --fa: "\f543"; }
+
+.fa-square-pen {
+ --fa: "\f14b"; }
+
+.fa-pen-square {
+ --fa: "\f14b"; }
+
+.fa-pencil-square {
+ --fa: "\f14b"; }
+
+.fa-suitcase-rolling {
+ --fa: "\f5c1"; }
+
+.fa-person-circle-exclamation {
+ --fa: "\e53f"; }
+
+.fa-chevron-down {
+ --fa: "\f078"; }
+
+.fa-battery-full {
+ --fa: "\f240"; }
+
+.fa-battery {
+ --fa: "\f240"; }
+
+.fa-battery-5 {
+ --fa: "\f240"; }
+
+.fa-skull-crossbones {
+ --fa: "\f714"; }
+
+.fa-code-compare {
+ --fa: "\e13a"; }
+
+.fa-list-ul {
+ --fa: "\f0ca"; }
+
+.fa-list-dots {
+ --fa: "\f0ca"; }
+
+.fa-school-lock {
+ --fa: "\e56f"; }
+
+.fa-tower-cell {
+ --fa: "\e585"; }
+
+.fa-down-long {
+ --fa: "\f309"; }
+
+.fa-long-arrow-alt-down {
+ --fa: "\f309"; }
+
+.fa-ranking-star {
+ --fa: "\e561"; }
+
+.fa-chess-king {
+ --fa: "\f43f"; }
+
+.fa-person-harassing {
+ --fa: "\e549"; }
+
+.fa-brazilian-real-sign {
+ --fa: "\e46c"; }
+
+.fa-landmark-dome {
+ --fa: "\f752"; }
+
+.fa-landmark-alt {
+ --fa: "\f752"; }
+
+.fa-arrow-up {
+ --fa: "\f062"; }
+
+.fa-tv {
+ --fa: "\f26c"; }
+
+.fa-television {
+ --fa: "\f26c"; }
+
+.fa-tv-alt {
+ --fa: "\f26c"; }
+
+.fa-shrimp {
+ --fa: "\e448"; }
+
+.fa-list-check {
+ --fa: "\f0ae"; }
+
+.fa-tasks {
+ --fa: "\f0ae"; }
+
+.fa-jug-detergent {
+ --fa: "\e519"; }
+
+.fa-circle-user {
+ --fa: "\f2bd"; }
+
+.fa-user-circle {
+ --fa: "\f2bd"; }
+
+.fa-user-shield {
+ --fa: "\f505"; }
+
+.fa-wind {
+ --fa: "\f72e"; }
+
+.fa-car-burst {
+ --fa: "\f5e1"; }
+
+.fa-car-crash {
+ --fa: "\f5e1"; }
+
+.fa-y {
+ --fa: "\59"; }
+
+.fa-person-snowboarding {
+ --fa: "\f7ce"; }
+
+.fa-snowboarding {
+ --fa: "\f7ce"; }
+
+.fa-truck-fast {
+ --fa: "\f48b"; }
+
+.fa-shipping-fast {
+ --fa: "\f48b"; }
+
+.fa-fish {
+ --fa: "\f578"; }
+
+.fa-user-graduate {
+ --fa: "\f501"; }
+
+.fa-circle-half-stroke {
+ --fa: "\f042"; }
+
+.fa-adjust {
+ --fa: "\f042"; }
+
+.fa-clapperboard {
+ --fa: "\e131"; }
+
+.fa-circle-radiation {
+ --fa: "\f7ba"; }
+
+.fa-radiation-alt {
+ --fa: "\f7ba"; }
+
+.fa-baseball {
+ --fa: "\f433"; }
+
+.fa-baseball-ball {
+ --fa: "\f433"; }
+
+.fa-jet-fighter-up {
+ --fa: "\e518"; }
+
+.fa-diagram-project {
+ --fa: "\f542"; }
+
+.fa-project-diagram {
+ --fa: "\f542"; }
+
+.fa-copy {
+ --fa: "\f0c5"; }
+
+.fa-volume-xmark {
+ --fa: "\f6a9"; }
+
+.fa-volume-mute {
+ --fa: "\f6a9"; }
+
+.fa-volume-times {
+ --fa: "\f6a9"; }
+
+.fa-hand-sparkles {
+ --fa: "\e05d"; }
+
+.fa-grip {
+ --fa: "\f58d"; }
+
+.fa-grip-horizontal {
+ --fa: "\f58d"; }
+
+.fa-share-from-square {
+ --fa: "\f14d"; }
+
+.fa-share-square {
+ --fa: "\f14d"; }
+
+.fa-child-combatant {
+ --fa: "\e4e0"; }
+
+.fa-child-rifle {
+ --fa: "\e4e0"; }
+
+.fa-gun {
+ --fa: "\e19b"; }
+
+.fa-square-phone {
+ --fa: "\f098"; }
+
+.fa-phone-square {
+ --fa: "\f098"; }
+
+.fa-plus {
+ --fa: "\2b"; }
+
+.fa-add {
+ --fa: "\2b"; }
+
+.fa-expand {
+ --fa: "\f065"; }
+
+.fa-computer {
+ --fa: "\e4e5"; }
+
+.fa-xmark {
+ --fa: "\f00d"; }
+
+.fa-close {
+ --fa: "\f00d"; }
+
+.fa-multiply {
+ --fa: "\f00d"; }
+
+.fa-remove {
+ --fa: "\f00d"; }
+
+.fa-times {
+ --fa: "\f00d"; }
+
+.fa-arrows-up-down-left-right {
+ --fa: "\f047"; }
+
+.fa-arrows {
+ --fa: "\f047"; }
+
+.fa-chalkboard-user {
+ --fa: "\f51c"; }
+
+.fa-chalkboard-teacher {
+ --fa: "\f51c"; }
+
+.fa-peso-sign {
+ --fa: "\e222"; }
+
+.fa-building-shield {
+ --fa: "\e4d8"; }
+
+.fa-baby {
+ --fa: "\f77c"; }
+
+.fa-users-line {
+ --fa: "\e592"; }
+
+.fa-quote-left {
+ --fa: "\f10d"; }
+
+.fa-quote-left-alt {
+ --fa: "\f10d"; }
+
+.fa-tractor {
+ --fa: "\f722"; }
+
+.fa-trash-arrow-up {
+ --fa: "\f829"; }
+
+.fa-trash-restore {
+ --fa: "\f829"; }
+
+.fa-arrow-down-up-lock {
+ --fa: "\e4b0"; }
+
+.fa-lines-leaning {
+ --fa: "\e51e"; }
+
+.fa-ruler-combined {
+ --fa: "\f546"; }
+
+.fa-copyright {
+ --fa: "\f1f9"; }
+
+.fa-equals {
+ --fa: "\3d"; }
+
+.fa-blender {
+ --fa: "\f517"; }
+
+.fa-teeth {
+ --fa: "\f62e"; }
+
+.fa-shekel-sign {
+ --fa: "\f20b"; }
+
+.fa-ils {
+ --fa: "\f20b"; }
+
+.fa-shekel {
+ --fa: "\f20b"; }
+
+.fa-sheqel {
+ --fa: "\f20b"; }
+
+.fa-sheqel-sign {
+ --fa: "\f20b"; }
+
+.fa-map {
+ --fa: "\f279"; }
+
+.fa-rocket {
+ --fa: "\f135"; }
+
+.fa-photo-film {
+ --fa: "\f87c"; }
+
+.fa-photo-video {
+ --fa: "\f87c"; }
+
+.fa-folder-minus {
+ --fa: "\f65d"; }
+
+.fa-hexagon-nodes-bolt {
+ --fa: "\e69a"; }
+
+.fa-store {
+ --fa: "\f54e"; }
+
+.fa-arrow-trend-up {
+ --fa: "\e098"; }
+
+.fa-plug-circle-minus {
+ --fa: "\e55e"; }
+
+.fa-sign-hanging {
+ --fa: "\f4d9"; }
+
+.fa-sign {
+ --fa: "\f4d9"; }
+
+.fa-bezier-curve {
+ --fa: "\f55b"; }
+
+.fa-bell-slash {
+ --fa: "\f1f6"; }
+
+.fa-tablet {
+ --fa: "\f3fb"; }
+
+.fa-tablet-android {
+ --fa: "\f3fb"; }
+
+.fa-school-flag {
+ --fa: "\e56e"; }
+
+.fa-fill {
+ --fa: "\f575"; }
+
+.fa-angle-up {
+ --fa: "\f106"; }
+
+.fa-drumstick-bite {
+ --fa: "\f6d7"; }
+
+.fa-holly-berry {
+ --fa: "\f7aa"; }
+
+.fa-chevron-left {
+ --fa: "\f053"; }
+
+.fa-bacteria {
+ --fa: "\e059"; }
+
+.fa-hand-lizard {
+ --fa: "\f258"; }
+
+.fa-notdef {
+ --fa: "\e1fe"; }
+
+.fa-disease {
+ --fa: "\f7fa"; }
+
+.fa-briefcase-medical {
+ --fa: "\f469"; }
+
+.fa-genderless {
+ --fa: "\f22d"; }
+
+.fa-chevron-right {
+ --fa: "\f054"; }
+
+.fa-retweet {
+ --fa: "\f079"; }
+
+.fa-car-rear {
+ --fa: "\f5de"; }
+
+.fa-car-alt {
+ --fa: "\f5de"; }
+
+.fa-pump-soap {
+ --fa: "\e06b"; }
+
+.fa-video-slash {
+ --fa: "\f4e2"; }
+
+.fa-battery-quarter {
+ --fa: "\f243"; }
+
+.fa-battery-2 {
+ --fa: "\f243"; }
+
+.fa-radio {
+ --fa: "\f8d7"; }
+
+.fa-baby-carriage {
+ --fa: "\f77d"; }
+
+.fa-carriage-baby {
+ --fa: "\f77d"; }
+
+.fa-traffic-light {
+ --fa: "\f637"; }
+
+.fa-thermometer {
+ --fa: "\f491"; }
+
+.fa-vr-cardboard {
+ --fa: "\f729"; }
+
+.fa-hand-middle-finger {
+ --fa: "\f806"; }
+
+.fa-percent {
+ --fa: "\25"; }
+
+.fa-percentage {
+ --fa: "\25"; }
+
+.fa-truck-moving {
+ --fa: "\f4df"; }
+
+.fa-glass-water-droplet {
+ --fa: "\e4f5"; }
+
+.fa-display {
+ --fa: "\e163"; }
+
+.fa-face-smile {
+ --fa: "\f118"; }
+
+.fa-smile {
+ --fa: "\f118"; }
+
+.fa-thumbtack {
+ --fa: "\f08d"; }
+
+.fa-thumb-tack {
+ --fa: "\f08d"; }
+
+.fa-trophy {
+ --fa: "\f091"; }
+
+.fa-person-praying {
+ --fa: "\f683"; }
+
+.fa-pray {
+ --fa: "\f683"; }
+
+.fa-hammer {
+ --fa: "\f6e3"; }
+
+.fa-hand-peace {
+ --fa: "\f25b"; }
+
+.fa-rotate {
+ --fa: "\f2f1"; }
+
+.fa-sync-alt {
+ --fa: "\f2f1"; }
+
+.fa-spinner {
+ --fa: "\f110"; }
+
+.fa-robot {
+ --fa: "\f544"; }
+
+.fa-peace {
+ --fa: "\f67c"; }
+
+.fa-gears {
+ --fa: "\f085"; }
+
+.fa-cogs {
+ --fa: "\f085"; }
+
+.fa-warehouse {
+ --fa: "\f494"; }
+
+.fa-arrow-up-right-dots {
+ --fa: "\e4b7"; }
+
+.fa-splotch {
+ --fa: "\f5bc"; }
+
+.fa-face-grin-hearts {
+ --fa: "\f584"; }
+
+.fa-grin-hearts {
+ --fa: "\f584"; }
+
+.fa-dice-four {
+ --fa: "\f524"; }
+
+.fa-sim-card {
+ --fa: "\f7c4"; }
+
+.fa-transgender {
+ --fa: "\f225"; }
+
+.fa-transgender-alt {
+ --fa: "\f225"; }
+
+.fa-mercury {
+ --fa: "\f223"; }
+
+.fa-arrow-turn-down {
+ --fa: "\f149"; }
+
+.fa-level-down {
+ --fa: "\f149"; }
+
+.fa-person-falling-burst {
+ --fa: "\e547"; }
+
+.fa-award {
+ --fa: "\f559"; }
+
+.fa-ticket-simple {
+ --fa: "\f3ff"; }
+
+.fa-ticket-alt {
+ --fa: "\f3ff"; }
+
+.fa-building {
+ --fa: "\f1ad"; }
+
+.fa-angles-left {
+ --fa: "\f100"; }
+
+.fa-angle-double-left {
+ --fa: "\f100"; }
+
+.fa-qrcode {
+ --fa: "\f029"; }
+
+.fa-clock-rotate-left {
+ --fa: "\f1da"; }
+
+.fa-history {
+ --fa: "\f1da"; }
+
+.fa-face-grin-beam-sweat {
+ --fa: "\f583"; }
+
+.fa-grin-beam-sweat {
+ --fa: "\f583"; }
+
+.fa-file-export {
+ --fa: "\f56e"; }
+
+.fa-arrow-right-from-file {
+ --fa: "\f56e"; }
+
+.fa-shield {
+ --fa: "\f132"; }
+
+.fa-shield-blank {
+ --fa: "\f132"; }
+
+.fa-arrow-up-short-wide {
+ --fa: "\f885"; }
+
+.fa-sort-amount-up-alt {
+ --fa: "\f885"; }
+
+.fa-comment-nodes {
+ --fa: "\e696"; }
+
+.fa-house-medical {
+ --fa: "\e3b2"; }
+
+.fa-golf-ball-tee {
+ --fa: "\f450"; }
+
+.fa-golf-ball {
+ --fa: "\f450"; }
+
+.fa-circle-chevron-left {
+ --fa: "\f137"; }
+
+.fa-chevron-circle-left {
+ --fa: "\f137"; }
+
+.fa-house-chimney-window {
+ --fa: "\e00d"; }
+
+.fa-pen-nib {
+ --fa: "\f5ad"; }
+
+.fa-tent-arrow-turn-left {
+ --fa: "\e580"; }
+
+.fa-tents {
+ --fa: "\e582"; }
+
+.fa-wand-magic {
+ --fa: "\f0d0"; }
+
+.fa-magic {
+ --fa: "\f0d0"; }
+
+.fa-dog {
+ --fa: "\f6d3"; }
+
+.fa-carrot {
+ --fa: "\f787"; }
+
+.fa-moon {
+ --fa: "\f186"; }
+
+.fa-wine-glass-empty {
+ --fa: "\f5ce"; }
+
+.fa-wine-glass-alt {
+ --fa: "\f5ce"; }
+
+.fa-cheese {
+ --fa: "\f7ef"; }
+
+.fa-yin-yang {
+ --fa: "\f6ad"; }
+
+.fa-music {
+ --fa: "\f001"; }
+
+.fa-code-commit {
+ --fa: "\f386"; }
+
+.fa-temperature-low {
+ --fa: "\f76b"; }
+
+.fa-person-biking {
+ --fa: "\f84a"; }
+
+.fa-biking {
+ --fa: "\f84a"; }
+
+.fa-broom {
+ --fa: "\f51a"; }
+
+.fa-shield-heart {
+ --fa: "\e574"; }
+
+.fa-gopuram {
+ --fa: "\f664"; }
+
+.fa-earth-oceania {
+ --fa: "\e47b"; }
+
+.fa-globe-oceania {
+ --fa: "\e47b"; }
+
+.fa-square-xmark {
+ --fa: "\f2d3"; }
+
+.fa-times-square {
+ --fa: "\f2d3"; }
+
+.fa-xmark-square {
+ --fa: "\f2d3"; }
+
+.fa-hashtag {
+ --fa: "\23"; }
+
+.fa-up-right-and-down-left-from-center {
+ --fa: "\f424"; }
+
+.fa-expand-alt {
+ --fa: "\f424"; }
+
+.fa-oil-can {
+ --fa: "\f613"; }
+
+.fa-t {
+ --fa: "\54"; }
+
+.fa-hippo {
+ --fa: "\f6ed"; }
+
+.fa-chart-column {
+ --fa: "\e0e3"; }
+
+.fa-infinity {
+ --fa: "\f534"; }
+
+.fa-vial-circle-check {
+ --fa: "\e596"; }
+
+.fa-person-arrow-down-to-line {
+ --fa: "\e538"; }
+
+.fa-voicemail {
+ --fa: "\f897"; }
+
+.fa-fan {
+ --fa: "\f863"; }
+
+.fa-person-walking-luggage {
+ --fa: "\e554"; }
+
+.fa-up-down {
+ --fa: "\f338"; }
+
+.fa-arrows-alt-v {
+ --fa: "\f338"; }
+
+.fa-cloud-moon-rain {
+ --fa: "\f73c"; }
+
+.fa-calendar {
+ --fa: "\f133"; }
+
+.fa-trailer {
+ --fa: "\e041"; }
+
+.fa-bahai {
+ --fa: "\f666"; }
+
+.fa-haykal {
+ --fa: "\f666"; }
+
+.fa-sd-card {
+ --fa: "\f7c2"; }
+
+.fa-dragon {
+ --fa: "\f6d5"; }
+
+.fa-shoe-prints {
+ --fa: "\f54b"; }
+
+.fa-circle-plus {
+ --fa: "\f055"; }
+
+.fa-plus-circle {
+ --fa: "\f055"; }
+
+.fa-face-grin-tongue-wink {
+ --fa: "\f58b"; }
+
+.fa-grin-tongue-wink {
+ --fa: "\f58b"; }
+
+.fa-hand-holding {
+ --fa: "\f4bd"; }
+
+.fa-plug-circle-exclamation {
+ --fa: "\e55d"; }
+
+.fa-link-slash {
+ --fa: "\f127"; }
+
+.fa-chain-broken {
+ --fa: "\f127"; }
+
+.fa-chain-slash {
+ --fa: "\f127"; }
+
+.fa-unlink {
+ --fa: "\f127"; }
+
+.fa-clone {
+ --fa: "\f24d"; }
+
+.fa-person-walking-arrow-loop-left {
+ --fa: "\e551"; }
+
+.fa-arrow-up-z-a {
+ --fa: "\f882"; }
+
+.fa-sort-alpha-up-alt {
+ --fa: "\f882"; }
+
+.fa-fire-flame-curved {
+ --fa: "\f7e4"; }
+
+.fa-fire-alt {
+ --fa: "\f7e4"; }
+
+.fa-tornado {
+ --fa: "\f76f"; }
+
+.fa-file-circle-plus {
+ --fa: "\e494"; }
+
+.fa-book-quran {
+ --fa: "\f687"; }
+
+.fa-quran {
+ --fa: "\f687"; }
+
+.fa-anchor {
+ --fa: "\f13d"; }
+
+.fa-border-all {
+ --fa: "\f84c"; }
+
+.fa-face-angry {
+ --fa: "\f556"; }
+
+.fa-angry {
+ --fa: "\f556"; }
+
+.fa-cookie-bite {
+ --fa: "\f564"; }
+
+.fa-arrow-trend-down {
+ --fa: "\e097"; }
+
+.fa-rss {
+ --fa: "\f09e"; }
+
+.fa-feed {
+ --fa: "\f09e"; }
+
+.fa-draw-polygon {
+ --fa: "\f5ee"; }
+
+.fa-scale-balanced {
+ --fa: "\f24e"; }
+
+.fa-balance-scale {
+ --fa: "\f24e"; }
+
+.fa-gauge-simple-high {
+ --fa: "\f62a"; }
+
+.fa-tachometer {
+ --fa: "\f62a"; }
+
+.fa-tachometer-fast {
+ --fa: "\f62a"; }
+
+.fa-shower {
+ --fa: "\f2cc"; }
+
+.fa-desktop {
+ --fa: "\f390"; }
+
+.fa-desktop-alt {
+ --fa: "\f390"; }
+
+.fa-m {
+ --fa: "\4d"; }
+
+.fa-table-list {
+ --fa: "\f00b"; }
+
+.fa-th-list {
+ --fa: "\f00b"; }
+
+.fa-comment-sms {
+ --fa: "\f7cd"; }
+
+.fa-sms {
+ --fa: "\f7cd"; }
+
+.fa-book {
+ --fa: "\f02d"; }
+
+.fa-user-plus {
+ --fa: "\f234"; }
+
+.fa-check {
+ --fa: "\f00c"; }
+
+.fa-battery-three-quarters {
+ --fa: "\f241"; }
+
+.fa-battery-4 {
+ --fa: "\f241"; }
+
+.fa-house-circle-check {
+ --fa: "\e509"; }
+
+.fa-angle-left {
+ --fa: "\f104"; }
+
+.fa-diagram-successor {
+ --fa: "\e47a"; }
+
+.fa-truck-arrow-right {
+ --fa: "\e58b"; }
+
+.fa-arrows-split-up-and-left {
+ --fa: "\e4bc"; }
+
+.fa-hand-fist {
+ --fa: "\f6de"; }
+
+.fa-fist-raised {
+ --fa: "\f6de"; }
+
+.fa-cloud-moon {
+ --fa: "\f6c3"; }
+
+.fa-briefcase {
+ --fa: "\f0b1"; }
+
+.fa-person-falling {
+ --fa: "\e546"; }
+
+.fa-image-portrait {
+ --fa: "\f3e0"; }
+
+.fa-portrait {
+ --fa: "\f3e0"; }
+
+.fa-user-tag {
+ --fa: "\f507"; }
+
+.fa-rug {
+ --fa: "\e569"; }
+
+.fa-earth-europe {
+ --fa: "\f7a2"; }
+
+.fa-globe-europe {
+ --fa: "\f7a2"; }
+
+.fa-cart-flatbed-suitcase {
+ --fa: "\f59d"; }
+
+.fa-luggage-cart {
+ --fa: "\f59d"; }
+
+.fa-rectangle-xmark {
+ --fa: "\f410"; }
+
+.fa-rectangle-times {
+ --fa: "\f410"; }
+
+.fa-times-rectangle {
+ --fa: "\f410"; }
+
+.fa-window-close {
+ --fa: "\f410"; }
+
+.fa-baht-sign {
+ --fa: "\e0ac"; }
+
+.fa-book-open {
+ --fa: "\f518"; }
+
+.fa-book-journal-whills {
+ --fa: "\f66a"; }
+
+.fa-journal-whills {
+ --fa: "\f66a"; }
+
+.fa-handcuffs {
+ --fa: "\e4f8"; }
+
+.fa-triangle-exclamation {
+ --fa: "\f071"; }
+
+.fa-exclamation-triangle {
+ --fa: "\f071"; }
+
+.fa-warning {
+ --fa: "\f071"; }
+
+.fa-database {
+ --fa: "\f1c0"; }
+
+.fa-share {
+ --fa: "\f064"; }
+
+.fa-mail-forward {
+ --fa: "\f064"; }
+
+.fa-bottle-droplet {
+ --fa: "\e4c4"; }
+
+.fa-mask-face {
+ --fa: "\e1d7"; }
+
+.fa-hill-rockslide {
+ --fa: "\e508"; }
+
+.fa-right-left {
+ --fa: "\f362"; }
+
+.fa-exchange-alt {
+ --fa: "\f362"; }
+
+.fa-paper-plane {
+ --fa: "\f1d8"; }
+
+.fa-road-circle-exclamation {
+ --fa: "\e565"; }
+
+.fa-dungeon {
+ --fa: "\f6d9"; }
+
+.fa-align-right {
+ --fa: "\f038"; }
+
+.fa-money-bill-1-wave {
+ --fa: "\f53b"; }
+
+.fa-money-bill-wave-alt {
+ --fa: "\f53b"; }
+
+.fa-life-ring {
+ --fa: "\f1cd"; }
+
+.fa-hands {
+ --fa: "\f2a7"; }
+
+.fa-sign-language {
+ --fa: "\f2a7"; }
+
+.fa-signing {
+ --fa: "\f2a7"; }
+
+.fa-calendar-day {
+ --fa: "\f783"; }
+
+.fa-water-ladder {
+ --fa: "\f5c5"; }
+
+.fa-ladder-water {
+ --fa: "\f5c5"; }
+
+.fa-swimming-pool {
+ --fa: "\f5c5"; }
+
+.fa-arrows-up-down {
+ --fa: "\f07d"; }
+
+.fa-arrows-v {
+ --fa: "\f07d"; }
+
+.fa-face-grimace {
+ --fa: "\f57f"; }
+
+.fa-grimace {
+ --fa: "\f57f"; }
+
+.fa-wheelchair-move {
+ --fa: "\e2ce"; }
+
+.fa-wheelchair-alt {
+ --fa: "\e2ce"; }
+
+.fa-turn-down {
+ --fa: "\f3be"; }
+
+.fa-level-down-alt {
+ --fa: "\f3be"; }
+
+.fa-person-walking-arrow-right {
+ --fa: "\e552"; }
+
+.fa-square-envelope {
+ --fa: "\f199"; }
+
+.fa-envelope-square {
+ --fa: "\f199"; }
+
+.fa-dice {
+ --fa: "\f522"; }
+
+.fa-bowling-ball {
+ --fa: "\f436"; }
+
+.fa-brain {
+ --fa: "\f5dc"; }
+
+.fa-bandage {
+ --fa: "\f462"; }
+
+.fa-band-aid {
+ --fa: "\f462"; }
+
+.fa-calendar-minus {
+ --fa: "\f272"; }
+
+.fa-circle-xmark {
+ --fa: "\f057"; }
+
+.fa-times-circle {
+ --fa: "\f057"; }
+
+.fa-xmark-circle {
+ --fa: "\f057"; }
+
+.fa-gifts {
+ --fa: "\f79c"; }
+
+.fa-hotel {
+ --fa: "\f594"; }
+
+.fa-earth-asia {
+ --fa: "\f57e"; }
+
+.fa-globe-asia {
+ --fa: "\f57e"; }
+
+.fa-id-card-clip {
+ --fa: "\f47f"; }
+
+.fa-id-card-alt {
+ --fa: "\f47f"; }
+
+.fa-magnifying-glass-plus {
+ --fa: "\f00e"; }
+
+.fa-search-plus {
+ --fa: "\f00e"; }
+
+.fa-thumbs-up {
+ --fa: "\f164"; }
+
+.fa-user-clock {
+ --fa: "\f4fd"; }
+
+.fa-hand-dots {
+ --fa: "\f461"; }
+
+.fa-allergies {
+ --fa: "\f461"; }
+
+.fa-file-invoice {
+ --fa: "\f570"; }
+
+.fa-window-minimize {
+ --fa: "\f2d1"; }
+
+.fa-mug-saucer {
+ --fa: "\f0f4"; }
+
+.fa-coffee {
+ --fa: "\f0f4"; }
+
+.fa-brush {
+ --fa: "\f55d"; }
+
+.fa-file-half-dashed {
+ --fa: "\e698"; }
+
+.fa-mask {
+ --fa: "\f6fa"; }
+
+.fa-magnifying-glass-minus {
+ --fa: "\f010"; }
+
+.fa-search-minus {
+ --fa: "\f010"; }
+
+.fa-ruler-vertical {
+ --fa: "\f548"; }
+
+.fa-user-large {
+ --fa: "\f406"; }
+
+.fa-user-alt {
+ --fa: "\f406"; }
+
+.fa-train-tram {
+ --fa: "\e5b4"; }
+
+.fa-user-nurse {
+ --fa: "\f82f"; }
+
+.fa-syringe {
+ --fa: "\f48e"; }
+
+.fa-cloud-sun {
+ --fa: "\f6c4"; }
+
+.fa-stopwatch-20 {
+ --fa: "\e06f"; }
+
+.fa-square-full {
+ --fa: "\f45c"; }
+
+.fa-magnet {
+ --fa: "\f076"; }
+
+.fa-jar {
+ --fa: "\e516"; }
+
+.fa-note-sticky {
+ --fa: "\f249"; }
+
+.fa-sticky-note {
+ --fa: "\f249"; }
+
+.fa-bug-slash {
+ --fa: "\e490"; }
+
+.fa-arrow-up-from-water-pump {
+ --fa: "\e4b6"; }
+
+.fa-bone {
+ --fa: "\f5d7"; }
+
+.fa-table-cells-row-unlock {
+ --fa: "\e691"; }
+
+.fa-user-injured {
+ --fa: "\f728"; }
+
+.fa-face-sad-tear {
+ --fa: "\f5b4"; }
+
+.fa-sad-tear {
+ --fa: "\f5b4"; }
+
+.fa-plane {
+ --fa: "\f072"; }
+
+.fa-tent-arrows-down {
+ --fa: "\e581"; }
+
+.fa-exclamation {
+ --fa: "\21"; }
+
+.fa-arrows-spin {
+ --fa: "\e4bb"; }
+
+.fa-print {
+ --fa: "\f02f"; }
+
+.fa-turkish-lira-sign {
+ --fa: "\e2bb"; }
+
+.fa-try {
+ --fa: "\e2bb"; }
+
+.fa-turkish-lira {
+ --fa: "\e2bb"; }
+
+.fa-dollar-sign {
+ --fa: "\24"; }
+
+.fa-dollar {
+ --fa: "\24"; }
+
+.fa-usd {
+ --fa: "\24"; }
+
+.fa-x {
+ --fa: "\58"; }
+
+.fa-magnifying-glass-dollar {
+ --fa: "\f688"; }
+
+.fa-search-dollar {
+ --fa: "\f688"; }
+
+.fa-users-gear {
+ --fa: "\f509"; }
+
+.fa-users-cog {
+ --fa: "\f509"; }
+
+.fa-person-military-pointing {
+ --fa: "\e54a"; }
+
+.fa-building-columns {
+ --fa: "\f19c"; }
+
+.fa-bank {
+ --fa: "\f19c"; }
+
+.fa-institution {
+ --fa: "\f19c"; }
+
+.fa-museum {
+ --fa: "\f19c"; }
+
+.fa-university {
+ --fa: "\f19c"; }
+
+.fa-umbrella {
+ --fa: "\f0e9"; }
+
+.fa-trowel {
+ --fa: "\e589"; }
+
+.fa-d {
+ --fa: "\44"; }
+
+.fa-stapler {
+ --fa: "\e5af"; }
+
+.fa-masks-theater {
+ --fa: "\f630"; }
+
+.fa-theater-masks {
+ --fa: "\f630"; }
+
+.fa-kip-sign {
+ --fa: "\e1c4"; }
+
+.fa-hand-point-left {
+ --fa: "\f0a5"; }
+
+.fa-handshake-simple {
+ --fa: "\f4c6"; }
+
+.fa-handshake-alt {
+ --fa: "\f4c6"; }
+
+.fa-jet-fighter {
+ --fa: "\f0fb"; }
+
+.fa-fighter-jet {
+ --fa: "\f0fb"; }
+
+.fa-square-share-nodes {
+ --fa: "\f1e1"; }
+
+.fa-share-alt-square {
+ --fa: "\f1e1"; }
+
+.fa-barcode {
+ --fa: "\f02a"; }
+
+.fa-plus-minus {
+ --fa: "\e43c"; }
+
+.fa-video {
+ --fa: "\f03d"; }
+
+.fa-video-camera {
+ --fa: "\f03d"; }
+
+.fa-graduation-cap {
+ --fa: "\f19d"; }
+
+.fa-mortar-board {
+ --fa: "\f19d"; }
+
+.fa-hand-holding-medical {
+ --fa: "\e05c"; }
+
+.fa-person-circle-check {
+ --fa: "\e53e"; }
+
+.fa-turn-up {
+ --fa: "\f3bf"; }
+
+.fa-level-up-alt {
+ --fa: "\f3bf"; }
+
+.sr-only,
+.fa-sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0; }
+
+.sr-only-focusable:not(:focus),
+.fa-sr-only-focusable:not(:focus) {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0; }
diff --git a/themes/fonts/iconFonts/fontawesome-regular.less b/themes/fonts/iconFonts/fontawesome-regular.less
new file mode 100644
index 000000000..941271e03
--- /dev/null
+++ b/themes/fonts/iconFonts/fontawesome-regular.less
@@ -0,0 +1,19 @@
+/*!
+ * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2024 Fonticons, Inc.
+ */
+:root, :host {
+ --fa-style-family-classic: 'Font Awesome 6 Free';
+ --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Free';
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("/fonts/iconFonts/fa-regular-400.woff2") format("woff2"), url("/fonts/iconFonts/fa-regular-400.ttf") format("truetype"); }
+
+.far,
+.fa-regular {
+ font-weight: 400; }
diff --git a/themes/fonts/iconFonts/fontawesome-solid.less b/themes/fonts/iconFonts/fontawesome-solid.less
new file mode 100644
index 000000000..21aeb7d4c
--- /dev/null
+++ b/themes/fonts/iconFonts/fontawesome-solid.less
@@ -0,0 +1,19 @@
+/*!
+ * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2024 Fonticons, Inc.
+ */
+:root, :host {
+ --fa-style-family-classic: 'Font Awesome 6 Free';
+ --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Free';
+ font-style: normal;
+ font-weight: 900;
+ font-display: block;
+ src: url("/fonts/iconFonts/fa-solid-900.woff2") format("woff2"), url("/fonts/iconFonts/fa-solid-900.ttf") format("truetype"); }
+
+.fas,
+.fa-solid {
+ font-weight: 900; }
diff --git a/themes/fonts/iconFonts/gameIcons.js b/themes/fonts/iconFonts/gameIcons.js
index d92591cef..346e83027 100644
--- a/themes/fonts/iconFonts/gameIcons.js
+++ b/themes/fonts/iconFonts/gameIcons.js
@@ -506,4 +506,4 @@ const gameIcons = {
'gi_acid' : 'gi acid'
};
-module.exports = gameIcons;
\ No newline at end of file
+export default gameIcons;
\ No newline at end of file
diff --git a/themes/phb.depricated.less b/themes/phb.depricated.less
index 992dab35b..7cc574183 100644
--- a/themes/phb.depricated.less
+++ b/themes/phb.depricated.less
@@ -1,31 +1,31 @@
-.phb{
+.phb {
//Double hr for full width elements
- hr+hr+blockquote{
- column-span : all;
+ hr + hr + blockquote {
-webkit-column-span : all;
-moz-column-span : all;
+ column-span : all;
}
//*****************************
// * CLASS TABLE
// *****************************/
- hr+table{
+ hr+table {
+ padding-top : 10px;
margin-top : -5px;
margin-bottom : 50px;
- padding-top : 10px;
border-collapse : separate;
background-color : white;
border : initial;
border-style : solid;
+ border-image-source : @frameBorderImage;
+ border-image-slice : 150 200 150 200;
+ border-image-width : 47px;
border-image-outset : 37px 17px;
border-image-repeat : round;
- border-image-slice : 150 200 150 200;
- border-image-source : @frameBorderImage;
- border-image-width : 47px;
}
- h5+hr+table{
- column-span : all;
+ h5 + hr + table {
-webkit-column-span : all;
-moz-column-span : all;
+ column-span : all;
}
}
\ No newline at end of file
diff --git a/themes/themes.json b/themes/themes.json
index c3a4a3b75..7e01b180c 100644
--- a/themes/themes.json
+++ b/themes/themes.json
@@ -18,7 +18,7 @@
"5ePHB": {
"name": "5e PHB",
"renderer": "V3",
- "baseTheme": false,
+ "baseTheme": "Blank",
"baseSnippets": false,
"path": "5ePHB"
},
@@ -32,7 +32,7 @@
"Journal": {
"name": "Journal",
"renderer": "V3",
- "baseTheme": false,
+ "baseTheme": "Blank",
"baseSnippets": "5ePHB",
"path": "Journal"
},